Skip to main content
Glama

kctx

CI License: MIT

Give Claude the full context of any Kaggle competition in one command: the overview, evaluation metric, rules, data description, top discussions (winning solution write-ups first) and top public notebooks.

curl -fsSL https://raw.githubusercontent.com/vks-g/kctx/main/install.sh | sh

That command installs kctx and asks you a few questions right in your terminal. Move with the arrow keys; in multi-choice questions, enter (or space) ticks an option and you finish by picking Continue:

✓ Kaggle: signed in as you
? Competition URL: https://www.kaggle.com/competitions/titanic
  Titanic - Machine Learning from Disaster
  Metric: Categorization Accuracy  ·  Deadline: 2030-01-01 00:00 UTC  ·  Teams: 10,307
? How should Claude get the context? (↑/↓ move · enter or space to tick · then pick Continue)
   [x] Workspace folder  CLAUDE.md + overview, rules, data, discussions, code
   [x] Claude skill  loads automatically when you work on this competition
   [ ] MCP server  Claude calls tools for rules, discussions, notebooks, what's new
 ❯ Continue →
? Create the workspace folder in: /Users/you/kaggle
Fetching Titanic - Machine Learning from Disaster
  ✓ overview     5 pages
  ✓ rules        found
  ✓ data files   3 files
  ✓ discussions  16 topics (1 solution write-ups)
  ✓ notebooks    5 notebooks
  ✓ leaderboard  top 20
✓ Workspace folder: /Users/you/kaggle/titanic

If you have no Kaggle credentials yet, it first offers a browser login or lets you paste an API token.

Skip the URL question by passing it: curl … | sh -s -- https://www.kaggle.com/competitions/titanic. After the first run, just type kctx.

Which mode should I pick?

Workspace folder

Claude skill

MCP server

Best for

Actually competing: code lives next to the context

Asking Claude about the competition from any project

Live questions ("anything new in the forum?")

Works in

Claude Code, Codex, Cursor… (CLAUDE.md + AGENTS.md)

Claude Code, claude.ai / Desktop (zip upload)

Claude Code, Claude Desktop

Freshness

Snapshot, kctx refresh

Snapshot, re-run to update

Cached + live get_whats_new

Context cost

CLAUDE.md only (~1–2k tokens); files read on demand

~100 tokens until relevant

Tool results on demand

The modes combine well. A typical setup is the workspace folder (for your code) plus the MCP server (to keep up with the forum).

1 · Workspace folder

titanic/
├── CLAUDE.md / AGENTS.md   key facts + a map of everything below (auto-loaded by Claude Code)
├── CONTEXT.md              everything in one token-budgeted file (default 50k tokens)
├── overview/               description, evaluation, timeline, prizes, FAQ, leaderboard, metadata.json
├── rules/rules.md
├── data/
│   ├── README.md           data description + file list + how to get it
│   ├── download.sh         you run this after accepting the rules; data lands in data/raw/
│   └── raw/                (empty, git-ignored)
├── discussions/            INDEX.md, solutions/ (winning write-ups), topics/ (top comments by votes)
└── code/                   INDEX.md, one .md per notebook (outputs stripped, attributed), notebooks/*.ipynb

The data is never downloaded for you. Competition rules usually forbid redistributing it, and it can be many GB. data/download.sh fetches it with your own account once you've accepted the rules.

2 · Claude skill

kctx generates a per-competition skill, kaggle-<slug>, laid out for progressive disclosure:

kaggle-titanic/
├── SKILL.md       frontmatter (the ~100 tokens Claude always sees) + key facts + a file map
└── references/    overview/, rules/, data/, discussions/, code/ (read one file at a time)

Only the name and description sit in context until the skill is relevant, so dozens of discussions and notebooks cost nothing until Claude needs them. You choose where it goes:

  • ~/.claude/skills/: every project (default)

  • <project>/.claude/skills/: one project, can be committed and shared with teammates

  • zip: upload at claude.ai → Settings → Capabilities → Skills, to use it in the web app or Desktop

To use it in Claude Code, type /kaggle and pick /kaggle-<slug>, or just ask about the competition ("are external models allowed?") and Claude loads it on its own.

3 · MCP server: no infrastructure needed

kctx mcp is a local stdio server. Claude Code or Claude Desktop starts it on your machine when needed. It uses your own ~/.kaggle credentials and a disk cache (~/.cache/kctx). There is no hosted server, no database and no cost.

Tool

What it returns

get_brief

Key facts: metric, deadlines, limits, submission format, the external-data rule (quoted)

get_section

overview, evaluation, rules, data, leaderboard, timeline, prizes

list_discussions / search_discussions / get_discussion

Topics (solution write-ups first), keyword search, one topic with its top comments

list_top_notebooks / get_notebook

Top notebooks by votes; code + markdown, outputs stripped

get_whats_new

Live: topics created or commented on since the last fetch

fetch_competition / list_competitions

Add another competition; see what's cached

It also exposes a kaggle://{competition}/{section} resource and a start-competition prompt. kctx registers the server for you (Claude Code, Claude Desktop, or a project .mcp.json; check it with /mcp in Claude Code). To do it by hand:

claude mcp add --scope user kctx -- kctx mcp

For Claude Desktop, add this to claude_desktop_config.json, using the absolute path to kctx because Desktop doesn't see your shell PATH:

{ "mcpServers": { "kctx": { "command": "/Users/you/.local/bin/kctx", "args": ["mcp"] } } }

A hosted MCP (for claude.ai on the web or mobile) would need a server and safe handling of each user's Kaggle token. It's on the roadmap, but you don't need it for Claude Code or Desktop.

Claude Code plugin

To get the generic kctx skill and the MCP server in one step:

/plugin marketplace add vks-g/kctx
/plugin install kctx@kctx

Related MCP server: kaggle-mcp

Headless CLI

Everything the prompts do is also a command, for scripts, CI and agents:

kctx fetch <url|slug> --mode folder,skill,mcp [--out DIR] [--skill-scope user|project|zip]
                      [--mcp-target claude-code,claude-desktop,project,print]
                      [--discussions 15] [--comments 10] [--notebooks 5] [--budget 50000] [--refresh]
kctx refresh [workspace-folder|slug]   # re-fetch; writes WHATS_NEW.md
kctx search "llm"                      # find competitions
kctx login [--token …]                 # connect your Kaggle account
kctx mcp [--competition <slug>]        # run the MCP server (Claude does this for you)

What gets fetched, and how

Everything comes from the official Kaggle API (the same one the kaggle CLI uses), called with your own credentials. There is no HTML scraping.

  • Overview: metadata (metric, deadlines, team and submission limits, code-competition flag) plus every competition page.

  • Rules: the full rules page. The key-facts card quotes the external-data clause word for word, never paraphrased.

  • Data: the data-description page plus the file list with sizes.

  • Discussions: the top topics. "Nth place solution" write-ups come first, then pinned host posts. Each topic keeps its top comments by votes (low-signal "great work!" replies are dropped).

  • Code: the top public notebooks by votes, with Kaggle Learn exercises filtered out. Outputs are stripped and every notebook is attributed; public Kaggle notebooks are Apache 2.0 by default.

  • Leaderboard: the top 20 on the public leaderboard.

kctx is not affiliated with Kaggle. Follow each competition's rules, especially on sharing data and code.

Development

git clone https://github.com/vks-g/kctx && cd kctx
uv sync
uv run pytest            # offline: synthetic fixtures, no Kaggle calls
uv run ruff check src tests && uv run ruff format --check src tests
uv run kctx              # the step-by-step prompts, from your checkout

See CONTRIBUTING.md.

Roadmap

  • Engine + headless CLI

  • Step-by-step terminal prompts launched by curl … | sh

  • Workspace folder, Claude skill, local MCP server

  • Claude Code plugin

  • PyPI release (uvx kctx)

  • Website with docs and a short install URL

  • Windows installer (install.ps1), competition search inside the prompts, an optional hosted MCP

License

MIT

Available Tools

10 tools
fetch_competitionB

Fetch (or refresh) a competition from Kaggle by URL or slug, then return its brief.

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNo
competitionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does not meet it. It does not say what 'refresh' actually does (re-fetch, overwrite cached data, invalidate local state), whether network/Kaggle auth is required, or whether the operation has side effects. Only the return intent ('return its brief') is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the action, the input forms, and the result, with no filler. Every clause contributes information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape detail is not required. But for a tool with a cache-refresh behavior and zero annotation coverage, the description leaves the key behavioral question (what refresh does and any side effects) unanswered, and does not clarify its relationship to get_brief.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does add real meaning for 'competition' by specifying URL or slug acceptance, which the bare string-typed schema does not convey. The 'refresh' boolean is only obliquely explained by the parenthetical in the opening phrase, leaving its exact effect undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (fetch/refresh) and resource (a Kaggle competition), plus the accepted input format (URL or slug) and the outcome (returns its brief). It implicitly separates itself from list_competitions by operating on one competition, but it never explains how it differs from the sibling get_brief, which it appears to overlap with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical 'or refresh' hints that the tool is used both for first retrieval and for re-fetching, which is useful usage context. However, there is no explicit when-to-use/when-not guidance and no mention of the get_brief sibling, which reads as the obvious alternative for a tool that 'returns its brief.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_briefC

Key facts (metric, deadlines, limits, submission format, external-data rule) and what else is available.

ParametersJSON Schema
NameRequiredDescriptionDefault
competitionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the payload contents (metric, deadlines, limits, submission format, external-data rule), which implies a safe read, but it says nothing about auth needs, competition-argument resolution, or any side effects. Adequate but thin for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is one compact sentence with the payload listed up front, so it is not bloated. However it is a sentence fragment whose trailing clause 'and what else is available' is vague and does little work, capping the value of its brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described and the enumerated contents largely cover the response. Still, for a discovery tool in a crowded sibling set, the description leaves the core question — what this brief is for and how it differs from fetch_competition — unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'competition' parameter is unmentioned in the description. Its accepted form (slug, ID, numeric key) and the meaning of the nullable default — i.e., what happens when it is omitted — are not clarified anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the contents returned (metric, deadlines, limits, submission format, external-data rule) but gives no verb and never states the resource — that this is a brief/summary for a competition. Against siblings like fetch_competition and get_section, an agent cannot tell from the text why or when it would pick get_brief over them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is only the vague tail 'what else is available' to suggest this is a discovery/orientation entry point. No explicit when-to-use, when-not-to-use, or alternatives are named, so routing between get_brief, fetch_competition, and get_section is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_discussionC

One topic with its opening post and top comments. Fetches live if not saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
partNo
topic_idYes
competitionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure, and it does state that the tool 'fetches live if not saved,' which is useful caching context. However, it omits permissions, error handling, rate limits, and other operational traits expected for a fully unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no wasted words, and it front-loads the resource content before the fetching behavior. It is appropriately sized for the amount of information it chooses to convey.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, but the input schema has three parameters with zero description coverage and no annotations. The description does not clarify the optional 'part' or 'competition' parameters, leaving the definition incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, with three parameters (topic_id, part, competition) that are never mentioned or explained in the description. The description provides no meaning beyond the bare schema names, so it fails to compensate for the documentation gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific resource and its returned content: 'One topic with its opening post and top comments.' It implies retrieval through 'Fetches live if not saved,' but does not explicitly distinguish this from siblings like list_discussions or search_discussions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as list_discussions or search_discussions. It only implies a single-topic use case through its wording.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_notebookB

A notebook's code and markdown (outputs stripped), with attribution. ref = owner/notebook.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYes
partNo
competitionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It usefully discloses that outputs are stripped and attribution included, which is real behavioral context. However, it omits whether the operation is read-only, permission requirements, and how the required 'competition' scoping affects behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with zero waste; the key payload description and the required-parameter format are front-loaded and immediately useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, with three parameters, one required and two undocumented, plus no annotations, the description leaves meaningful gaps around 'part' pagination and 'competition' scoping.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It defines 'ref = owner/notebook', clarifying the only required parameter's format, but leaves 'part' and 'competition' entirely undocumented, so compensation is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resource ('a notebook's code and markdown') and clarifies scope with '(outputs stripped)'. It does not use an explicit verb like 'fetch' or 'retrieve', and does not name siblings such as list_top_notebooks, but the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like list_top_notebooks or fetch_competition. The agent must infer that this retrieves a single notebook by reference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sectionC

Full text of one section: overview, evaluation, rules, data, leaderboard, timeline or prizes.

ParametersJSON Schema
NameRequiredDescriptionDefault
partNo
sectionYes
competitionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden alone. It does signal that the output is the 'full text' of a section (as opposed to a summary), which is useful behavioral information, but it says nothing about read-only nature, auth requirements, or what happens with an invalid competition/section.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that states the resource and its possible values. The value enumeration duplicates the schema enum, which is slightly redundant but aids quick scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return format needn't be described, but for a 3-parameter tool the description omits the meaning of 'part' and the scoping behavior of 'competition' (default null — default competition?). Those gaps make the definition under-specified for the tool's actual complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate, but it only re-enumerates the already-visible section enum values. The 'part' parameter (presumably splitting a section into parts) and the nullable 'competition' parameter with its default are left completely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource — retrieving the full text of a single section — and enumerates the valid sections, so the agent knows exactly what it gets back. It does not, however, distinguish itself from siblings like get_brief or fetch_competition, which also return competition content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of alternatives such as get_brief (summary) versus get_section (full text). Usage is only implied by the section list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_whats_newC

Live: topics created or commented on since since (ISO date). Defaults to the last fetch.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNo
competitionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden, and it does disclose one genuinely useful trait: the tool is stateful, tracking content since the last fetch, and defaults to that checkpoint. It does not mention authentication, rate limits, ordering, or how 'live' updates behave.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence that front-loads the core purpose and appends the default behavior. No filler, though the 'Live:' prefix is slightly cryptic rather than informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the stateful 'since last fetch' behavior is conveyed. Still, the unexplained `competition` parameter and absence of any safety or usage context leave meaningful gaps for a 2-param tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only source of parameter meaning. It clarifies `since` (ISO date, defaults to last fetch) but says nothing at all about the `competition` parameter, leaving one of two parameters entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a resource (topics created or commented on) and a temporal scope (since `since`), which conveys the general intent. However, 'topics' is vague given siblings like list_discussions, get_discussion, and get_section, and the definition never clarifies what a 'topic' is relative to those. It is understandable but not sharply differentiated from its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when to prefer this tool over list_discussions or search_discussions, nor any exclusion criteria. The only usage-adjacent signal is 'Defaults to the last fetch,' which describes default behavior rather than selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_competitionsA

List competitions already fetched on this machine (the default is marked).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose two useful traits: results are local/cached rather than remote, and the default entry is flagged. It says nothing about ordering, whether fetching is triggered, rate limits, or auth, though for a zero-argument local listing the residual risk is low.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with the scope constraint and the default-marker detail packed in; nothing is padded and nothing is redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and a zero-parameter read-only listing is a simple contract. The description covers scope and the default marker; the only gap is the missing routing hint toward fetch_competition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The parenthetical noting that the default is marked adds a small amount of interpretive value about the output, but there are no parameters whose semantics need explaining.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (competitions) plus a meaningful scope qualifier: entries are local/cached ('already fetched on this machine'). That scope implicitly separates it from fetch_competition, but no sibling is named outright, so differentiation is left partly to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: by saying competitions are 'already fetched on this machine,' the agent can infer it must call fetch_competition first and that this tool is a local inventory view. There is no explicit when-to-use instruction, no exclusions, and no named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_discussionsC

Saved discussion topics (solution write-ups first) with ids for get_discussion.

ParametersJSON Schema
NameRequiredDescriptionDefault
competitionNo
solutions_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. It discloses the default ordering (solution write-ups first), which is genuinely useful, but says nothing about read-only nature, pagination, filtering semantics, or result size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence that is front-loaded with the resource and ordering. It is efficient and wastes little, though it borders on under-specification rather than true conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be detailed. But for a two-parameter listing tool with zero schema coverage and no annotations, the description should explain the competition filter and solutions_only flag; it leaves both undefined.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and neither parameter (competition, solutions_only) is explained in the description. The phrase 'solution write-ups first' loosely touches the solutions concept but never names or defines the parameters, so the gap is largely unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description conveys that this retrieves saved discussion topics and notes a default ordering (solution write-ups first), so the resource is clear. However, the verb is only implied by the tool name, and it does not distinguish itself from the close sibling search_discussions or explain what 'saved' means versus a general search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a partial next-step hint by noting the ids feed get_discussion, but offers no explicit when-to-use versus alternatives like search_discussions or get_discussion. An agent must infer the selection condition entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_top_notebooksC

Top public notebooks by votes, with refs for get_notebook.

ParametersJSON Schema
NameRequiredDescriptionDefault
competitionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does disclose ranking (by votes) and visibility scope (public only). However, it omits key behavior such as how many results are returned, pagination, filtering effects, or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded fragment with no wasted words; it conveys ranking scope and follow-up refs efficiently, though it is arguably too terse to be fully self-contained.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with an output schema, return format need not be explained, but the absence of any explanation for the sole optional filter parameter is a real gap. With no annotations and no parameter documentation anywhere, the definition is not complete enough for confident invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, 'competition', has 0% schema description coverage and is not mentioned in the description at all. The description therefore adds no meaning about the parameter and leaves its purpose entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: top public notebooks ranked by votes, with refs intended for get_notebook. The role is clear versus get_notebook (fetch one) and list_competitions, though it does not explicitly contrast itself with siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'with refs for get_notebook' implies a follow-up workflow—list here, then fetch details with get_notebook—but there is no explicit when-to-use, when-not-to-use, or alternative-condition guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_discussionsB

Keyword search over saved topics and comments, plus titles of other topics.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
competitionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the search scope (topics, comments, and titles of other topics), which goes beyond the schema, but says nothing about pagination via limit, result ordering, or any access constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words; scope is stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter tool with 0% schema description coverage and no annotations, the description is too thin. It omits the competition scoping parameter and the search-vs-list distinction, which an agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only loosely implies that query is keyword-based and says nothing about the competition filter or the limit parameter, leaving two of three parameters unexplained anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (keyword search) and resource scope (saved topics, comments, plus titles of other topics), which is clearer than a bare name. It does not, however, distinguish itself from the sibling list_discussions, so an agent still has to infer the search-vs-list boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no exclusions, and no named alternative such as list_discussions. The word 'keyword' weakly implies 'use when you have search terms,' but the choice between searching and listing is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedfetch_competition
    • First observedget_brief
    • First observedget_discussion
    • First observedget_notebook
    • First observedget_section
    • First observedget_whats_new
    • First observedlist_competitions
    • First observedlist_discussions
    • First observedlist_top_notebooks
    • First observedsearch_discussions

TDQS

B3.3/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target distinct resources or actions, but fetch_competition says it returns the brief while get_brief also returns key facts, creating minor overlap in when to use each. Discussion and notebook tools are clearly separated.

Naming Consistency5/5

All tools use snake_case with predictable verb_noun patterns (list_*, fetch_*, get_*, search_*), and the one compound list_top_notebooks remains readable and consistent.

Tool Count5/5

Ten tools is well-scoped for a Kaggle context server, covering competitions, discussions, notebooks, and updates without excessive surface area.

Completeness4/5

Core lifecycle for fetching and reading competition context is covered, including sections, discussions, notebooks, and live updates. Minor gaps exist around general competition search or non-top notebook discovery, but agents can work around them via fetch/reference tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers