{
  "service": "kaggle",
  "displayName": "Kaggle",
  "categories": [
    "Data",
    "AI"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "KAGGLE_KEY",
      "description": "Kaggle API key used with your Kaggle username for legacy API key authentication. Generate a token from Kaggle API settings: https://www.kaggle.com/settings/api.",
      "extraFields": [
        {
          "key": "username",
          "label": "Username",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "KAGGLE_USERNAME",
          "description": "Kaggle username paired with the API key. It is included in the kaggle.json token downloaded from Kaggle API settings: https://www.kaggle.com/settings/api."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.kaggle.com",
  "actions": [
    {
      "id": "kaggle.list_competitions",
      "service": "kaggle",
      "name": "list_competitions",
      "description": "List Kaggle competitions with optional group, category, search, and pagination filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "group": {
            "type": "string",
            "enum": [
              "general",
              "entered",
              "inClass"
            ],
            "description": "Competition group filter."
          },
          "category": {
            "type": "string",
            "enum": [
              "all",
              "featured",
              "research",
              "recruitment",
              "gettingStarted",
              "masters",
              "playground"
            ],
            "description": "Competition category filter."
          },
          "sortBy": {
            "type": "string",
            "enum": [
              "grouped",
              "prize",
              "earliestDeadline",
              "latestDeadline",
              "numberOfTeams",
              "recentlyCreated"
            ],
            "description": "Competition sort order."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "One-based page number for Kaggle list endpoints."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of Kaggle records to request for a page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Kaggle page token from a previous response."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Search query used to filter Kaggle resources."
          }
        },
        "additionalProperties": false,
        "description": "Filters for listing Kaggle competitions."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "competitions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Kaggle resource object returned by the API."
            },
            "description": "Competition objects returned by Kaggle."
          },
          "nextPageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Token for retrieving the next Kaggle page when one is returned."
          }
        },
        "additionalProperties": false,
        "required": [
          "competitions"
        ],
        "description": "Kaggle competitions returned by the list endpoint."
      }
    },
    {
      "id": "kaggle.list_datasets",
      "service": "kaggle",
      "name": "list_datasets",
      "description": "List Kaggle datasets with optional search, ownership, type, license, tag, and size filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "sortBy": {
            "type": "string",
            "enum": [
              "hottest",
              "votes",
              "updated",
              "active",
              "published"
            ],
            "description": "Dataset sort order."
          },
          "fileType": {
            "type": "string",
            "enum": [
              "all",
              "csv",
              "sqlite",
              "json",
              "bigQuery",
              "parquet"
            ],
            "description": "Dataset file type filter."
          },
          "license": {
            "type": "string",
            "enum": [
              "all",
              "cc",
              "gpl",
              "odb",
              "other"
            ],
            "description": "Dataset license family filter."
          },
          "tagIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A Kaggle dataset tag identifier."
            },
            "description": "Tag identifiers to filter Kaggle datasets by.",
            "minItems": 1
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Search query used to filter Kaggle resources."
          },
          "mine": {
            "type": "boolean",
            "description": "Whether to return only datasets owned by the connected Kaggle account."
          },
          "user": {
            "type": "string",
            "minLength": 1,
            "description": "Kaggle username or organization slug to filter datasets by."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "One-based page number for Kaggle list endpoints."
          },
          "maxSize": {
            "type": "integer",
            "minimum": 0,
            "description": "Maximum dataset size in bytes."
          },
          "minSize": {
            "type": "integer",
            "minimum": 0,
            "description": "Minimum dataset size in bytes."
          }
        },
        "additionalProperties": false,
        "description": "Filters for listing Kaggle datasets."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "datasets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Kaggle resource object returned by the API."
            },
            "description": "Dataset objects returned by Kaggle."
          },
          "nextPageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Token for retrieving the next Kaggle page when one is returned."
          }
        },
        "additionalProperties": false,
        "required": [
          "datasets"
        ],
        "description": "Kaggle datasets returned by the list endpoint."
      }
    },
    {
      "id": "kaggle.list_kernels",
      "service": "kaggle",
      "name": "list_kernels",
      "description": "List Kaggle notebooks and scripts with optional search, source, language, type, and pagination filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "mine": {
            "type": "boolean",
            "description": "Whether to return only kernels owned by the connected Kaggle account."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "One-based page number for Kaggle list endpoints."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of Kaggle records to request for a page."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Search query used to filter Kaggle resources."
          },
          "parent": {
            "type": "string",
            "minLength": 1,
            "description": "Parent kernel ref in owner/kernel-slug format."
          },
          "competition": {
            "type": "string",
            "minLength": 1,
            "description": "Competition slug used to filter kernels."
          },
          "dataset": {
            "type": "string",
            "minLength": 1,
            "description": "Dataset ref in owner/dataset-slug format."
          },
          "user": {
            "type": "string",
            "minLength": 1,
            "description": "Kaggle username to filter kernels by."
          },
          "language": {
            "type": "string",
            "enum": [
              "all",
              "python",
              "r",
              "sqlite",
              "julia"
            ],
            "description": "Kernel language filter."
          },
          "kernelType": {
            "type": "string",
            "enum": [
              "all",
              "script",
              "notebook"
            ],
            "description": "Kernel type filter."
          },
          "outputType": {
            "type": "string",
            "enum": [
              "all",
              "visualizations",
              "data"
            ],
            "description": "Kernel output type filter."
          },
          "sortBy": {
            "type": "string",
            "enum": [
              "hotness",
              "commentCount",
              "dateCreated",
              "dateRun",
              "relevance",
              "scoreAscending",
              "scoreDescending",
              "viewCount",
              "voteCount"
            ],
            "description": "Kernel sort order."
          }
        },
        "additionalProperties": false,
        "description": "Filters for listing Kaggle notebooks and scripts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "kernels": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Kaggle resource object returned by the API."
            },
            "description": "Kernel objects returned by Kaggle."
          },
          "nextPageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Token for retrieving the next Kaggle page when one is returned."
          }
        },
        "additionalProperties": false,
        "required": [
          "kernels"
        ],
        "description": "Kaggle kernels returned by the list endpoint."
      }
    },
    {
      "id": "kaggle.list_models",
      "service": "kaggle",
      "name": "list_models",
      "description": "List Kaggle models with optional owner, search, sort, and pagination filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "owner": {
            "type": "string",
            "minLength": 1,
            "description": "Kaggle username or organization slug to filter models by."
          },
          "sortBy": {
            "type": "string",
            "enum": [
              "hotness",
              "downloadCount",
              "voteCount",
              "notebookCount",
              "createTime"
            ],
            "description": "Model sort order."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "description": "Search query used to filter Kaggle resources."
          },
          "pageSize": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of Kaggle records to request for a page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Kaggle page token from a previous response."
          }
        },
        "additionalProperties": false,
        "description": "Filters for listing Kaggle models."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Kaggle resource object returned by the API."
            },
            "description": "Model objects returned by Kaggle."
          },
          "nextPageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Token for retrieving the next Kaggle page when one is returned."
          }
        },
        "additionalProperties": false,
        "required": [
          "models"
        ],
        "description": "Kaggle models returned by the list endpoint."
      }
    }
  ]
}
