{"openapi":"3.1.0","info":{"title":"Kaggle (BYOK) API","version":"0.1.0","description":"Kaggle (BYOK) lets an AI assistant read your own Kaggle data through the Kaggle API with a key you supply (Kaggle username). Read-only: 11 tools (list_datasets, get_dataset_metadata, list_dataset_files, get_dataset_status, list_competitions, list_competition_files, get_competition_leaderboard, list_my_submissions, list_notebooks, list_models, get_model). The BYOK key travels with each request, is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-kaggle.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-kaggle/docs"},"termsOfService":"https://connectorbay.com/byok-kaggle/terms"},"servers":[{"url":"https://byok-kaggle.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-kaggle/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_datasets":{"post":{"operationId":"list_datasets","summary":"Search and list public Kaggle datasets with title, size, last update, download and vote counts and usability rating. Ret","description":"Search and list public Kaggle datasets with title, size, last update, download and vote counts and usability rating. Returns up to 20 per page. Use for \"What are the most voted Kaggle datasets about wine\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text for dataset titles and descriptions.","title":"Search"},"sort_by":{"anyOf":[{"enum":["hottest","votes","updated","active","published"],"type":"string"},{"type":"null"}],"default":"hottest","description":"Order: hottest, votes, updated, active or published.","title":"Sort By"},"filetype":{"anyOf":[{"enum":["all","csv","sqlite","json","bigQuery"],"type":"string"},{"type":"null"}],"default":"all","description":"Only datasets containing this file type.","title":"Filetype"},"license":{"anyOf":[{"enum":["all","cc","gpl","odb","other"],"type":"string"},{"type":"null"}],"default":"all","description":"Only datasets under this license family.","title":"License"},"user":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only datasets of this owner username.","title":"User"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_datasetsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_dataset_metadata":{"post":{"operationId":"get_dataset_metadata","summary":"Get the metadata of one dataset: title, subtitle, description, licenses, keywords and ids. Use for \"Show the metadata of","description":"Get the metadata of one dataset: title, subtitle, description, licenses, keywords and ids. Use for \"Show the metadata of the Kaggle dataset zynicide/wine-reviews\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"owner_slug":{"description":"Dataset owner's Kaggle username or organization slug, for example 'zynicide'.","maxLength":200,"title":"Owner Slug","type":"string"},"dataset_slug":{"description":"Dataset slug from its URL, for example 'wine-reviews'.","maxLength":200,"title":"Dataset Slug","type":"string"}},"required":["owner_slug","dataset_slug"],"title":"get_dataset_metadataArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_dataset_files":{"post":{"operationId":"list_dataset_files","summary":"List the files of a dataset with name, size in bytes, file type and creation date. Use for \"Which files are in the Kaggl","description":"List the files of a dataset with name, size in bytes, file type and creation date. Use for \"Which files are in the Kaggle dataset zynicide/wine-reviews\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"owner_slug":{"description":"Dataset owner's Kaggle username or organization slug, for example 'zynicide'.","maxLength":200,"title":"Owner Slug","type":"string"},"dataset_slug":{"description":"Dataset slug from its URL, for example 'wine-reviews'.","maxLength":200,"title":"Dataset Slug","type":"string"},"dataset_version_number":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Dataset version to list; the latest when omitted.","title":"Dataset Version Number"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Page token from nextPageToken of the previous answer.","title":"Page Token"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["owner_slug","dataset_slug"],"title":"list_dataset_filesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_dataset_status":{"post":{"operationId":"get_dataset_status","summary":"Check the processing status of a dataset (for example ready) that you can access. Use for \"Is the Kaggle dataset zynicid","description":"Check the processing status of a dataset (for example ready) that you can access. Use for \"Is the Kaggle dataset zynicide/wine-reviews ready\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"owner_slug":{"description":"Dataset owner's Kaggle username or organization slug, for example 'zynicide'.","maxLength":200,"title":"Owner Slug","type":"string"},"dataset_slug":{"description":"Dataset slug from its URL, for example 'wine-reviews'.","maxLength":200,"title":"Dataset Slug","type":"string"}},"required":["owner_slug","dataset_slug"],"title":"get_dataset_statusArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_competitions":{"post":{"operationId":"list_competitions","summary":"List Kaggle competitions with reference slug, category, reward, deadline and team count. Use for \"Which Kaggle competiti","description":"List Kaggle competitions with reference slug, category, reward, deadline and team count. Use for \"Which Kaggle competitions have the biggest prizes right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text for competition titles.","title":"Search"},"category":{"anyOf":[{"enum":["all","featured","research","recruitment","gettingStarted","masters","playground"],"type":"string"},{"type":"null"}],"default":"all","description":"Competition category.","title":"Category"},"sort_by":{"anyOf":[{"enum":["grouped","prize","earliestDeadline","latestDeadline","numberOfTeams","recentlyCreated"],"type":"string"},{"type":"null"}],"default":"latestDeadline","description":"Order of results.","title":"Sort By"},"group":{"anyOf":[{"enum":["general","entered","inClass"],"type":"string"},{"type":"null"}],"default":"general","description":"general for all, entered for competitions you joined.","title":"Group"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_competitionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_competition_files":{"post":{"operationId":"list_competition_files","summary":"List the data files of a competition with names (you must have accepted the competition rules). Use for \"Which data file","description":"List the data files of a competition with names (you must have accepted the competition rules). Use for \"Which data files does the Kaggle titanic competition provide\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"competition":{"description":"Competition slug from its URL, for example 'titanic'.","maxLength":200,"title":"Competition","type":"string"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Page token from nextPageToken of the previous answer.","title":"Page Token"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["competition"],"title":"list_competition_filesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_competition_leaderboard":{"post":{"operationId":"get_competition_leaderboard","summary":"Show the leaderboard of a competition with team names, submission dates and scores. Use for \"Who leads the Kaggle titani","description":"Show the leaderboard of a competition with team names, submission dates and scores. Use for \"Who leads the Kaggle titanic leaderboard\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"competition":{"description":"Competition slug from its URL, for example 'titanic'.","maxLength":200,"title":"Competition","type":"string"}},"required":["competition"],"title":"get_competition_leaderboardArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_my_submissions":{"post":{"operationId":"list_my_submissions","summary":"List your own submissions to a competition with file name, date, status and scores. Use for \"How did my Kaggle titanic s","description":"List your own submissions to a competition with file name, date, status and scores. Use for \"How did my Kaggle titanic submissions score\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"competition":{"description":"Competition slug from its URL, for example 'titanic'.","maxLength":200,"title":"Competition","type":"string"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["competition"],"title":"list_my_submissionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_notebooks":{"post":{"operationId":"list_notebooks","summary":"Search and list public Kaggle notebooks (kernels) with title, author, last run time and votes. Use for \"Find popular Kag","description":"Search and list public Kaggle notebooks (kernels) with title, author, last run time and votes. Use for \"Find popular Kaggle notebooks about the titanic competition\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text.","title":"Search"},"competition":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only notebooks using this competition.","title":"Competition"},"dataset":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only notebooks using this dataset (owner/slug).","title":"Dataset"},"user":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only notebooks by this username.","title":"User"},"language":{"anyOf":[{"enum":["all","python","r","sqlite","julia"],"type":"string"},{"type":"null"}],"default":"all","description":"Language filter.","title":"Language"},"sort_by":{"anyOf":[{"enum":["hotness","commentCount","dateCreated","dateRun","relevance","scoreAscending","scoreDescending","viewCount","voteCount"],"type":"string"},{"type":"null"}],"default":"hotness","description":"Order of results.","title":"Sort By"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_notebooksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_models":{"post":{"operationId":"list_models","summary":"Search and list Kaggle models with title, subtitle, author and vote counts, 1 to 100 per page. Use for \"Which Kaggle mod","description":"Search and list Kaggle models with title, subtitle, author and vote counts, 1 to 100 per page. Use for \"Which Kaggle models match gemma\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search text.","title":"Search"},"owner":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only models of this username or organization slug.","title":"Owner"},"sort_by":{"anyOf":[{"enum":["hotness","downloadCount","voteCount","notebookCount","createTime"],"type":"string"},{"type":"null"}],"default":"hotness","description":"Order of results.","title":"Sort By"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Items per page (1 to 100).","title":"Page Size"},"page_token":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Page token from nextPageToken of the previous answer.","title":"Page Token"}},"title":"list_modelsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_model":{"post":{"operationId":"get_model","summary":"Get one Kaggle model with description, tags, instances (frameworks and variants) and votes. Use for \"Show the Kaggle mod","description":"Get one Kaggle model with description, tags, instances (frameworks and variants) and votes. Use for \"Show the Kaggle model google/gemma\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"owner_slug":{"description":"Dataset owner's Kaggle username or organization slug, for example 'zynicide'.","maxLength":200,"title":"Owner Slug","type":"string"},"model_slug":{"description":"Model slug, for example 'gemma'.","maxLength":200,"title":"Model Slug","type":"string"}},"required":["owner_slug","model_slug"],"title":"get_modelArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}