Skip to main content
Glama
osick
by osick

sair-mcp

A local MCP (Model Context Protocol) server that exposes the SAIR Competition Public API as tools for an MCP client (Claude Code, Claude Desktop, or any other MCP-compatible client).

It covers the full documented API surface: account introspection, competitions (browsing, eligibility, leaderboards, submissions, IGP24 label progress), Playground (models, problem sets, runs, results, live event streaming, usage), your private cheatsheet and Lean solver-template libraries, custom Lean problems, and the Contributor Network (browsing, publishing, favoriting, commenting, lineage graphs, benchmarks).

Installation

Requires Python 3.10+.

git clone <this-repo>
cd SAIRmcp
pip install -e .

Related MCP server: codabench-mcp

Getting a SAIR API key

  1. Sign in to SAIR and open Account settings -> API keys.

  2. Create a key and select the scopes you need. At minimum, for the examples below: competition.read and competition.write. Add playground.read / playground.write for Playground tools, contributor-network.read / contributor-network.write for Contributor Network tools.

  3. Copy the key immediately -- it is shown only once. Keys look like sair_a1b2c3d4_zR9....

Configuration

Set these environment variables before starting the server:

Variable

Required

Default

Purpose

SAIR_API_KEY

Yes

-

Your personal SAIR API key. The server refuses to start without it.

SAIR_BASE_URL

No

https://api.sair.foundation/api/public/v1

Override for testing against a different environment.

Running it standalone

python -m sair_mcp

This starts the server on stdio and blocks, waiting for an MCP client to connect. There is no output on success; it's meant to be launched by an MCP client, not run interactively.

Registering with Claude Code and other mcp clients

Add to your project's .mcp.json (or user-level MCP config)

{
  "mcpServers": {
    "sair": {
      "command": "python",
      "args": ["-m", "sair_mcp"],
      "env": {
        "SAIR_API_KEY": "sair_a1b2c3d4_zR9..."
      }
    }
  }
}

Or via the CLI, substituting the same absolute path:

claude mcp add sair -- python3 -m sair_mcp

(then set SAIR_API_KEY in your shell environment before launching Claude Code, or add it to the env block above).

Alternative: pyproject.toml also declares a sair-mcp console-script entry point, so once installed you can skip -m sair_mcp entirely and point command straight at that script's absolute path instead -- again, resolve it in the same command as the install so it can't drift to a different environment's sair-mcp:

pip install -e . && which sair-mcp

No args needed when using this form.

If you use a dedicated virtual environment for this project (recommended for isolation from other Python projects), the same rule applies: use <path-to-venv>/bin/python (or <path-to-venv>/bin/sair-mcp) as command, not a bare python.

Registering with Claude Desktop

Add the same shape to claude_desktop_config.json under mcpServers, using the same absolute-interpreter-path command as above -- Desktop's subprocess environment is even less likely than a terminal's to have your Python environment on PATH.

Usage example

A typical end-to-end flow, as an MCP client would call it:

  1. get_me -- confirm the key is valid and see its scopes.

  2. list_competitions -- find a competition ID.

  3. get_competition("modular-arithmetic-challenge") -- read submissionSpec to learn the required payload shape.

  4. get_my_participation("modular-arithmetic-challenge") -- check canSubmit before attempting anything.

  5. submit_competition_entry("modular-arithmetic-challenge", payload={"modelName": "you/your-model", "commitHash": "0123...(40 hex chars)"}).

  6. get_my_submission("modular-arithmetic-challenge") -- confirm the active submission.

Tool reference

All tools return the API's unwrapped data object as a dict (or None for 204 responses, or a plain string for the two text-returning tools). On error, the tool call fails with a SairApiError-derived message in the form [<http status> <error code>] <message>; consult SAIR's Errors documentation for the full code table.

Account (1 tool)

Tool

Scope

Purpose

get_me

none

Confirm the API key and see its owner + granted scopes.

Competitions (10 tools)

Tool

Scope

Purpose

list_competitions

competition.read

List competitions visible through the API.

get_competition

competition.read

Get one competition's detail and submissionSpec.

get_my_participation

competition.read

Check canSubmit / submitBlockedReason for one competition.

get_leaderboard

competition.read

List published leaderboard rows.

get_my_leaderboard_standing

competition.read

Get the caller's own leaderboard entry.

submit_competition_entry

competition.write

Create or replace the caller's submission.

get_my_submission

competition.read

Read the caller's current submission (or history, for IGP24).

get_submission_by_id

competition.read

Read one submission by ID.

download_submission_text

competition.read

Download the stored text body of a submission.

get_igp24_label_progress

competition.read

Bulk aggregate IGP24 discovery progress by label.

Playground (10 tools)

Tool

Scope

Purpose

list_playground_models

playground.read

List model IDs accepted in runs for a competition.

list_playground_problem_sets

playground.read

List available practice problem sets.

get_playground_problem_set

playground.read

Get every problem in one problem set.

submit_playground_run

playground.write

Create a practice run.

list_playground_runs

playground.read

List the caller's runs for a competition.

get_playground_run

playground.read

Get one run's params, summary, and timing.

cancel_playground_run

playground.write

Cancel a pending/running run.

list_playground_run_results

playground.read

List per-cell/per-problem result rows for a run.

stream_playground_run_events

playground.read

Collect live verdict events for a solver-participation run (blocks up to a timeout).

get_playground_usage

playground.read

Get the caller's practice credit/usage counters.

Cheatsheets (5 tools)

Tool

Scope

Purpose

list_cheatsheets

playground.read

List the caller's cheatsheets.

get_cheatsheet

playground.read

Get one cheatsheet including its content.

create_cheatsheet

playground.write

Create a cheatsheet.

update_cheatsheet

playground.write

Update a cheatsheet's title/content.

delete_cheatsheet

playground.write

Delete a cheatsheet.

Solver templates (5 tools)

Tool

Scope

Purpose

list_solver_templates

playground.read

List the caller's Lean solver templates.

get_solver_template

playground.read

Get one solver template including its source.

create_solver_template

playground.write

Create a solver template.

update_solver_template

playground.write

Update a solver template's title/source.

delete_solver_template

playground.write

Delete a solver template.

Custom Lean problems (4 tools)

Tool

Scope

Purpose

list_custom_problems

playground.read

List the caller's private Lean statement pairs.

get_custom_problem

playground.read

Get one custom problem.

create_custom_problem

playground.write

Create an immutable custom Lean problem.

delete_custom_problem

playground.write

Delete a custom problem.

Contributor Network (13 tools)

Tool

Scope

Purpose

list_contributor_network_items

contributor-network.read

Browse shared cheatsheets/solver templates/model references.

get_contributor_network_item

contributor-network.read

Get one item's full payload.

publish_contributor_network_item

contributor-network.write

Publish a saved resource, submission body, inline text, or model reference.

withdraw_contributor_network_item

contributor-network.write

Withdraw (unpublish) an item you authored.

favorite_contributor_network_item

contributor-network.write

Favorite an item.

unfavorite_contributor_network_item

contributor-network.write

Unfavorite an item.

list_contributor_network_comments

contributor-network.read

List comments on an item.

create_contributor_network_comment

contributor-network.write

Post a comment.

delete_contributor_network_comment

contributor-network.write

Delete a comment.

get_contributor_network_item_graph

contributor-network.read

Get the lineage subgraph rooted at one item.

get_contributor_network_global_graph

contributor-network.read

Get the lineage graph across all visible items.

list_contributor_network_benchmarks

contributor-network.read

List platform-run benchmark summaries.

get_contributor_network_item_benchmark

contributor-network.read

Get the per-model benchmark breakdown for one item.

Total: 48 tools.

Development

pip install -e ".[dev]"
pytest --cov=sair_mcp --cov-report=term-missing

All tests run against a mocked HTTP layer (respx) -- no test requires or uses a real SAIR_API_KEY or makes a real network call.

License

MIT -- see LICENSE.

Available Tools

48 tools
cancel_playground_runA

Cancel a pending or running Playground run.

Scope: playground.write. Already-terminal runs raise RUN_NOT_CANCELLABLE (409).

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
competition_idYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It adds context about scope and error cases but does not disclose whether cancellation is irreversible or if it triggers asynchronous effects. More detail on side effects would improve transparency.

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 extremely concise, two sentences plus a scope line, with no wasted words. Action and key constraints are front-loaded.

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?

Adequate for a simple tool with 2 required params and no output schema. Covers purpose, scope, and a key error condition, but lacks explanation of side effects, idempotency, or how to obtain the IDs.

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 coverage is 0% and the description adds no information about the parameters 'competition_id' and 'run_id'. The agent must infer from names alone, which is insufficient.

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

Purpose5/5

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

The description clearly states the action 'Cancel' and the resource 'pending or running Playground run'. It distinguishes this tool from siblings like submit_playground_run and get_playground_run, and no other cancel tool exists.

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

Usage Guidelines4/5

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

Explicitly states scope requirement (playground.write) and error condition for already-terminal runs (RUN_NOT_CANCELLABLE, 409), guiding when not to use. However, it does not explicitly state when to prefer this over alternatives.

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

create_cheatsheetA

Create a cheatsheet owned by the calling account.

Scope: playground.write. Can be referenced from a Playground run (configurations[].cheatsheet) and submitted to a cheatsheet-kind competition.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
contentYes
source_contributor_network_item_idNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses ownership and scope ('playground.write') but does not detail behavioral traits such as side effects, rate limits, or success indicators. The information is partial but not misleading.

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 three sentences, front-loaded with the primary action, and each sentence adds meaningful context (ownership, scope, usage). No redundant or filler content.

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?

Given no output schema and 3 parameters with 0% schema coverage, the description lacks information on return value, parameter details, and complete behavioral context. It covers high-level use but is insufficient for an agent to fully understand invocation.

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%, yet the description does not explain any parameters. It implicitly references 'title' and 'content' but provides no semantics, format, or constraints. The third parameter 'source_contributor_network_item_id' is entirely unmentioned.

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

Purpose5/5

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

The description clearly states the action ('create') and resource ('cheatsheet'), specifies ownership ('owned by the calling account'), and provides context for use in playground runs and competitions, distinguishing it from sibling tools like update_cheatsheet.

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 description mentions use cases (playground runs and competitions) but does not provide explicit guidance on when to use this tool versus alternatives (e.g., update_cheatsheet) or when not to use it. No exclusions or prerequisites are stated.

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

create_contributor_network_commentA

Create a comment on an item.

Scope: contributor-network.write. body must be non-empty after trim and at most 5000 characters.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations, so description carries burden. It mentions length constraints but omits other behavioral details like idempotency or error cases. Adequate but not rich.

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 sentences, front-loaded with purpose, no fluff. Efficient.

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?

Simple tool with 2 params and no output schema. Covers purpose and constraints, but lacks parameter descriptions and behavioral completeness.

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 coverage is 0%, so description must compensate. Only adds constraint on body, but item_id is not explained. Insufficient given low coverage.

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

Purpose5/5

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

Clearly states 'Create a comment on an item.' Verb and resource are specific, and it distinguishes from sibling tools like 'delete_contributor_network_comment'.

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

Usage Guidelines4/5

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

Provides scope and constraints (body non-empty, max length). No explicit when-not or alternatives, but context is clear for a create operation.

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

create_custom_problemA

Create an immutable private Lean statement pair.

Scope: playground.write. lhs_name/rhs_name are derived automatically if omitted. Use the returned id in problemIds for a solver-participation Playground run.

ParametersJSON Schema
NameRequiredDescriptionDefault
lhs_nameNo
lhs_textYes
rhs_nameNo
rhs_textYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states the result is immutable and private, but does not detail side effects like ownership, storage implications, or access restrictions. More context would improve transparency.

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 extremely concise with no filler, front-loading the core purpose. Every sentence adds value, making it efficient for an AI agent.

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?

Given no output schema and 4 weakly documented parameters, the description covers creation and use but lacks detail on return format, privacy implications, and the exact nature of 'solver-participation Playground run.' It is adequate but not fully self-contained.

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 description adds minimal value: it explains auto-derivation of lhs_name/rhs_name but fails to clarify the meaning of lhs_text and rhs_text. The description assumes domain knowledge, leaving parameters largely undefined.

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

Purpose5/5

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

The description clearly states the tool creates an immutable private Lean statement pair, specifying the resource and action. It distinguishes from siblings like delete_custom_problem and get_custom_problem by focusing on creation and immutability.

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

Usage Guidelines4/5

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

The description provides usage context (playground.write) and explains that omitted name parameters are auto-derived. It guides the agent to use the returned id for subsequent playground runs, but does not explicitly mention when not to use or alternative tools.

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

create_solver_templateA

Create a solver template owned by the calling account.

Scope: playground.write. track defaults to "solo" server-side if omitted. Can be copied into a Playground run and submitted to a solver-participation competition.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
trackNo
solver_codeYes
source_contributor_network_item_idNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses ownership, required scope (playground.write), default behavior for 'track', and the template's lifecycle (can be copied and submitted). This is above average for a creation tool, though it could mention idempotency or error states.

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?

Three concise sentences with essential information front-loaded. No redundancy or extraneous details. Every sentence adds value: purpose, scope/default, and usage context.

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?

Given 4 parameters (2 required), no output schema, and no annotations, the description covers core aspects but lacks details: return value, parameter explanations beyond track, and potential error conditions. It is adequate but not comprehensive.

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 explains only the 'track' parameter (defaults to 'solo'), leaving 'title', 'solver_code', and 'source_contributor_network_item_id' unexplained. This provides insufficient guidance for the four parameters.

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

Purpose5/5

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

The description explicitly states 'Create a solver template' with the specific verb 'create' and resource 'solver template'. It distinguishes from sibling tools like delete, update, or list by focusing on creation. The additional context of ownership and usage in Playground runs clarifies the tool's role.

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

Usage Guidelines4/5

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

Provides clear context: owned by calling account, requires playground.write scope, track defaults to 'solo', and the template can be copied for competitions. While it doesn't explicitly contrast with alternatives, the nature of creation vs. other operations is implicit, and the scope and default are valuable usage hints.

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

delete_cheatsheetA

Delete a cheatsheet owned by the calling account.

Scope: playground.write. Raises CHEATSHEET_LOCKED (403) if published on the Contributor Network -- withdraw it first.

ParametersJSON Schema
NameRequiredDescriptionDefault
cheatsheet_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses the error condition (CHEATSHEET_LOCKED), required scope (playground.write), and ownership constraint. It does not mention irreversibility, but for a delete operation this is implied.

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 only two sentences, front-loading the action and then adding necessary conditions. Every word contributes value with no redundancy.

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?

Given the tool's simplicity (1 parameter, delete operation) and the presence of an output schema, the description covers scope, ownership, and error handling. It is nearly complete for this context.

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?

The input schema has 0% description coverage, and the description does not explain the 'cheatsheet_id' parameter beyond its name. No additional context about format, source, or validation is provided.

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

Purpose5/5

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

The description clearly states the action ('Delete') and the specific resource ('cheatsheet owned by the calling account'). This distinguishes it from sibling tools like create_cheatsheet or list_cheatsheets.

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

Usage Guidelines4/5

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

The description gives a specific condition when not to use this tool (if published on Contributor Network) and mentions the need to withdraw first, pointing to an alternative action. However, it does not explicitly name the alternative tool (withdraw_contributor_network_item), but it is implied.

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

delete_contributor_network_commentA

Soft-delete a comment.

Scope: contributor-network.write. Callers may delete their own comments; item authors may delete any comment on their own items.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
comment_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the action as 'soft-delete' and authorization rules. However, it omits details like reversibility, visibility of deleted comments, or side effects.

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 three concise sentences: action, scope, and authorization. No redundant 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?

Given simplicity (2 params, output schema exists), the description is adequate but incomplete. It lacks details on idempotency, error conditions, and whether the comment is hidden or recoverable.

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?

The input schema has 0% description coverage, so the description must compensate. It only implies that item_id and comment_id identify the comment, which is already obvious from names. No additional meaning is provided.

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

Purpose5/5

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

The description clearly states 'Soft-delete a comment' which is a specific verb-resource pair. It distinguishes from sibling tools like create_contributor_network_comment and list_contributor_network_comments.

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

Usage Guidelines4/5

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

The description specifies the scope ('contributor-network.write') and who can delete ('own comments' or 'item authors on own items'), providing clear context. However, it does not explicitly compare with alternatives or state when not to use.

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

delete_custom_problemA

Delete a custom Lean problem owned by the calling account.

Scope: playground.write. Existing runs that referenced the problem keep their own stored copy and history.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Despite no annotations, the description explicitly states required scope (playground.write) and the non-destructive effect on existing runs, which is crucial behavioral context. Could be improved by clarifying irreversibility of deletion itself.

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 concise: two sentences, front-loaded with the primary action, followed by key behavioral context. Every word adds value.

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?

The description covers purpose, ownership constraint, required scope, and impact on existing runs. It is sufficiently complete for a straightforward delete operation, though it could mention where to obtain the problem_id (e.g., list_custom_problems).

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?

The single parameter 'problem_id' has no description in schema (0% coverage). The tool description does not elaborate on the parameter, leaving the agent to infer from the tool name. This is insufficient for unambiguous selection, especially among similar tools like get_custom_problem and list_custom_problems.

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

Purpose5/5

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

The description clearly specifies the action (Delete) and resource (custom Lean problem) with ownership condition, differentiating from sibling tools like create_custom_problem, get_custom_problem, and list_custom_problems.

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?

No explicit when-to-use or alternative recommendations, but the description implies use for deleting owned problems. It provides context about effects on runs, which aids decision-making. Lacks explicit usage guidelines compared to siblings.

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

delete_solver_templateA

Delete a solver template owned by the calling account.

Scope: playground.write. Raises SOLVER_TEMPLATE_LOCKED (403) if published on the Contributor Network -- withdraw it first.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 discloses the required scope (playground.write) and the locked condition (403 error). It does not explicitly state irreversibility or side effects, which would be valuable for a deletion.

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 sentences, front-loaded with the core action, and no wasted words. Every sentence provides distinct value: the action and the key constraint.

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?

Given the single parameter and the presence of an output schema, the description does not describe return values. It covers the critical error case but lacks parameter guidance. Adequate but not comprehensive.

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?

The only parameter, template_id, has 0% schema documentation. The description does not elaborate on its format, source, or meaning beyond the schema. The agent must infer from context.

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

Purpose5/5

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

The description clearly states the verb 'delete' and the resource 'solver template owned by the calling account.' It distinguishes from sibling tools like create_solver_template and update_solver_template by specifying ownership and the delete action.

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 description provides a precondition (withdraw if published) and mentions a specific error (SOLVER_TEMPLATE_LOCKED). However, it does not explicitly guide when to use this tool versus alternatives like withdrawing or updating.

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

download_submission_textA

Download the stored text body of a submission as plain text.

Scope: competition.read. Returns payload.content (cheatsheet), payload.solverCode (solver-participation), or newline-joined payload.polynomials (igp24-polynomial). Raises NO_DOWNLOAD_FOR_KIND for model-reference submissions, which have no text body.

ParametersJSON Schema
NameRequiredDescriptionDefault
submission_idYes
competition_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so the description fully covers behavioral traits. It discloses that it raises NO_DOWNLOAD_FOR_KIND for model-reference submissions and describes the different payload fields returned depending on submission type. This adds value beyond the schema.

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 concise with three sentences, front-loading the purpose and including essential details (scope, content types, error case). Every sentence adds value with no wasted words.

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

Completeness5/5

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

For a simple download tool with two standard parameters and an existing output schema, the description covers the return types, error condition, and scope. It is complete given the tool's complexity and the available context.

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 description does not add any meaning to the two parameters (competition_id, submission_id). No formats, examples, or additional context are provided, making the description insufficient to compensate for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states the tool downloads the stored text body of a submission as plain text. It specifies the scope (competition.read) and differentiates the content types (payload.content, payload.solverCode, payload.polynomials) based on submission kind, distinguishing it from siblings like get_submission_by_id.

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

Usage Guidelines4/5

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

The description provides context on when to use the tool by listing supported submission kinds (cheatsheet, solver-participation, igp24-polynomial) and raises an error for model-reference submissions. However, it does not explicitly compare to alternatives like get_submission_by_id or explain when not to use it.

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

favorite_contributor_network_itemA

Set the caller's favorite flag for an item (idempotent).

Scope: contributor-network.write.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description adds key behavioral traits: idempotency (safe to repeat) and scope 'contributor-network.write' (authorization needed). This is sufficient for a simple mutation 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?

Two concise sentences, front-loaded with purpose and idempotency, then scope. No wasted words.

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?

The description covers the core action and idempotency but lacks parameter explanation. For a simple tool with no output schema, this is adequate but not fully complete.

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%. The description does not explain what 'item_id' refers to. For a single parameter, clarifying that it is the ID of the contributor network item would add value.

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

Purpose5/5

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

The description clearly states 'Set the caller's favorite flag for an item (idempotent).' It uses a specific verb and resource, and distinguishes from the sibling 'unfavorite_contributor_network_item'.

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?

No explicit guidance on when to use this tool versus alternatives like 'unfavorite_contributor_network_item'. The description only provides permission scope, not usage context.

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

get_cheatsheetB

Get one cheatsheet, including its content body.

Scope: playground.read.

ParametersJSON Schema
NameRequiredDescriptionDefault
cheatsheet_idYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description adds the scope information ('playground.read') which is useful for authorization context. However, it does not disclose other behaviors such as error handling or side effects.

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?

The description is brief with two sentences, front-loading the purpose. It avoids fluff, though the scope line could be integrated for even tighter structure.

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?

For a simple retrieval tool with one parameter and no output schema, the description covers the basic operation and hints at the return value ('content body'). It lacks detail on response format or edge cases, but is adequate.

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 sole parameter 'cheatsheet_id' is not described beyond the schema title. The description does not explain the parameter's format, how to obtain it, or any constraints, failing to compensate for the 0% schema description coverage.

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

Purpose5/5

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

The description clearly states the verb 'Get', resource 'cheatsheet', and scope 'one' including 'content body'. It distinguishes from sibling tools like 'list_cheatsheets' and 'delete_cheatsheet'.

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 description includes 'Scope: playground.read' which hints at required permissions but does not explicitly state when to use this tool versus alternatives or provide exclusion criteria.

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

get_competitionA

Get one competition's detail, including its submissionSpec.

Scope: competition.read. submissionSpec (schema, metaSchema, permission, window, limits, catalog) is the only source of truth for how to build a submission payload for this competition -- read it before calling submit_competition_entry or submit_playground_run.

ParametersJSON Schema
NameRequiredDescriptionDefault
competition_idYes

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, but description explains the data returned (submissionSpec fields) and implies read-only via name and scope 'competition.read'. Could explicitly state no modification, but adequate.

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 sentences: first states purpose, second provides critical usage guidance. No extraneous information.

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

Completeness5/5

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

For a simple get tool with one parameter and no output schema, description covers purpose, scope, output contents, and usage context. Complete and actionable.

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?

Only one parameter (competition_id) with 0% schema coverage. Description does not elaborate beyond the parameter name, but name is self-explanatory and description implicitly confirms it as identifier.

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

Purpose5/5

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

Description clearly states verb 'Get' and resource 'competition detail, including its submissionSpec', distinguishing it from sibling tools like submit_competition_entry by specifying the output scope.

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

Usage Guidelines5/5

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

Explicitly instructs to read submissionSpec before calling related submission tools (submit_competition_entry, submit_playground_run), providing clear context and alternatives.

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

get_contributor_network_global_graphA

Get the lineage graph across all visible items.

Scope: contributor-network.read. Capped at 2000 nodes -- add competition_id/kind filters if you hit GRAPH_TOO_LARGE (413).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
competition_idNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden. It discloses the node cap (2000), the error code for exceeding it, and suggests remedial filters. It also implies read-only by stating the scope. This provides good upfront behavioral information.

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 exceptionally concise: two short sentences plus a scope line. Every word is necessary, no redundancy. Front-loaded with the primary action.

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?

Given no output schema and only two optional parameters, the description covers the main concerns: purpose, scope, size limit, and error handling. It lacks explicit return format details, but 'lineage graph' is a common concept. Overall sufficient for a read-only graph tool.

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 coverage is 0%, so the description must compensate. It mentions competition_id and kind only as filters when hitting the cap, but does not explain their general purpose (e.g., kind filters node types, competition_id scopes to a competition). This provides partial but not full semantic context.

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

Purpose5/5

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

The description clearly states the tool retrieves the 'lineage graph across all visible items,' which is specific and distinct from sibling tools like get_contributor_network_item_graph that probably target individual items. The use of 'global' in the name is reinforced.

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

Usage Guidelines4/5

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

Explicitly mentions the required auth scope ('contributor-network.read') and provides actionable guidance: if the graph is too large (413 error), add filters (competition_id or kind). It does not mention alternatives or explicitly state when not to use, but the error handling advice is valuable.

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

get_contributor_network_itemA

Get one Contributor Network item with its full payload.

Scope: contributor-network.read. Includes content (cheatsheet), solverCode (solver-template), or modelName/commitHash (model-reference), plus parent lineage.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

A3.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 must disclose behavior. It lists the payload fields (content, solverCode, etc.) but does not mention error handling, authorization requirements beyond scope, or any side effects. The behavior is adequately described for a read operation but lacks depth.

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 brief (two sentences plus a list), front-loaded with the core action, and every phrase adds value. No redundant information.

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?

Given the simplicity (1 required param, no output schema), the description covers the main purpose and return payload. It lacks mention of error scenarios or performance considerations, but for a read tool it is sufficiently complete.

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?

The input schema has one parameter (item_id) with no description, and the tool description does not clarify what item_id expects (e.g., format, source). With 0% schema description coverage, the description should compensate but fails to add any meaning beyond the parameter name.

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

Purpose5/5

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

Description clearly states the action ('Get') and resource ('Contributor Network item with full payload'), and distinguishes from siblings like list_contributor_network_items or get_contributor_network_item_benchmark by specifying included fields such as content, solverCode, and parent lineage.

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 description includes usage scope ('contributor-network.read') but does not explicitly compare to alternative tools or provide guidance on when not to use it. The purpose is straightforward for a getter, so no explicit exclusions are given.

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

get_contributor_network_item_benchmarkC

Get the per-model benchmark breakdown for one item.

Scope: contributor-network.read.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description only states the purpose and scope. It does not disclose idempotency, error behavior, rate limits, or what the 'breakdown' entails, leaving significant behavioral uncertainty.

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?

The description is very concise, consisting of two short sentences. It is front-loaded with the functional purpose. However, it could be expanded slightly to add missing context without becoming verbose.

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?

Given no output schema and no parameter descriptions, the description fails to explain what the 'per-model benchmark breakdown' returns (e.g., metrics, scores). It lacks completeness for an agent to understand the tool's output and usage context.

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?

With 0% schema description coverage, the description adds no meaning to the single required parameter 'item_id'. It does not explain what constitutes an item ID, where to obtain it, or any constraints beyond type string.

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

Purpose5/5

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

The description clearly states 'Get the per-model benchmark breakdown for one item,' using a specific verb and resource. It distinguishes from siblings like 'list_contributor_network_benchmarks' (list vs get) and 'get_contributor_network_item' (item details vs breakdown).

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?

No explicit guidance on when to use this tool versus alternatives. The scope note 'contributor-network.read' is minimal and does not help choose between this and related tools like 'list_contributor_network_benchmarks' or 'get_contributor_network_item_graph'.

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

get_contributor_network_item_graphA

Get the lineage subgraph rooted at one item (ancestors + descendants).

Scope: contributor-network.read. depth in the response is relative to the anchor item: negative for ancestors, 0 for the anchor itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses the scope ('contributor-network.read'), the sign convention for depth, and that it returns ancestors and descendants. It does not mention authentication needs or rate limits, but as a read operation with a single parameter, the disclosure is reasonably transparent.

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 sentences plus a scope line, conveying all essential information without waste. Every sentence adds value: the core action, the scope, and the depth sign convention. Perfectly concise.

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?

Given the tool's simplicity (one parameter, no output schema), the description is nearly complete. It explains the response concept (depth sign) but lacks detail on the response structure (e.g., fields returned). However, the name suggests a graph structure, so this gap is minor.

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 schema provides only the parameter name 'item_id' with no description. The description adds meaning by explaining it is the 'rooted at one item' (the anchor). This compensates for the schema's 0% description coverage, though it could specify the format (e.g., string ID) more explicitly.

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

Purpose5/5

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

The description clearly states the specific purpose: 'Get the lineage subgraph rooted at one item (ancestors + descendants).' This distinguishes it from sibling tools like get_contributor_network_item (single item) and get_contributor_network_global_graph (global graph), making the purpose unambiguous.

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 description implies the tool is for rooted subgraphs but does not explicitly state when to prefer this over alternatives like get_contributor_network_global_graph. It provides context about depth interpretation but lacks explicit when-to-use or when-not-to-use guidance.

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

get_custom_problemA

Get one custom Lean problem owned by the calling account.

Scope: playground.read.

ParametersJSON Schema
NameRequiredDescriptionDefault
problem_idYes

TDQS

A3.6/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. It mentions the scope 'playground.read', indicating a read operation. However, it does not disclose what happens if the problem_id does not exist, if the problem is not owned by the calling account, or any error states. For a simple get tool, this is adequate but not thorough.

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 extremely concise with two short sentences. Every word is necessary: the verb, resource, ownership, and scope. No extraneous content.

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?

Given the tool's simplicity (one parameter, no output schema), the description is reasonably complete. It explains what the tool does and the scope. However, it lacks details on the return format and does not compensate for the missing parameter description. With no annotations, more behavioral context could be added.

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?

The only parameter 'problem_id' has no description in the schema (0% coverage). The tool description does not explain it either, leaving the agent to infer its meaning from the tool name. Since the description adds no value beyond the schema, and schema coverage is low, the score is low.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'one custom Lean problem owned by the calling account'. It also includes the scope 'playground.read', indicating a read operation. This distinguishes it from sibling tools like 'list_custom_problems' (for multiple) or 'create_custom_problem'.

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 description implies the tool is for retrieving a single problem, but it does not explicitly state when to use it versus alternatives (e.g., use when you have a specific problem_id, or that list_custom_problems is for finding IDs). No exclusions or when-not-to-use guidance is provided.

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

get_igp24_label_progressA

Get aggregate IGP24 participant progress by transitive group label.

Scope: competition.read. Bulk aggregate endpoint over the ~25,000-label IGP24 universe; returns data.labels[] rather than data.items[]. Before publication returns labels: [], meta.published: false. limit defaults to 100 and maxes at 5000 (higher than the default list-endpoint max) so a full sweep takes about 5 requests. label is a repeatable filter list (e.g. ["24T1", "24T3"]); labels is the same filter as one comma-separated string -- use one or the other. Changing filters invalidates a previous cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo
limitNo
cursorNo
labelsNo
include_emptyNo

TDQS

A4.2/5.0
Behavior4/5

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

Given no annotations, the description discloses key behaviors: aggregate bulk endpoint, pagination limits (100 default, 5000 max), filter repeatability, cursor invalidation, and published state. Could include more on error handling or rate limits, but sufficient for safe usage.

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?

Efficiently structured with a clear opening sentence followed by bullet-like details. Each sentence adds value, but could be slightly more concise by grouping related info. Still, no wasted words.

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?

Provides good context on pagination, filtering, and published state, but lacks full explanation of return values beyond data.labels[] and meta.published. Without an output schema, more detail on response fields would improve completeness.

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?

With 0% schema description coverage, the description adds meaning for 4 of 5 parameters (label, labels, limit, cursor). Explains label vs labels alternatives and limit defaults. Missing explanation for 'include_empty' parameter, leaving it ambiguous.

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

Purpose5/5

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

Clearly states 'Get aggregate IGP24 participant progress by transitive group label' with added scope and response structure details. Distinguishes from sibling list endpoints by explaining it returns data.labels[] rather than data.items[].

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

Usage Guidelines4/5

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

Provides explicit usage guidance: limits default and max, filter alternatives (label vs labels), cursor invalidation on filter change, and behavior before publication. Lacks explicit alternative tool names but context is clear.

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

get_leaderboardA

List published leaderboard rows for a competition.

Scope: competition.read. Cursor-paginated. Always returns 200; use data.meta.published (not the emptiness of items) to tell whether the leaderboard has been published yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
competition_idYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations, so description carries full burden. It reveals that the tool always returns 200, uses cursor pagination, and clarifies how to check publication status via data.meta.published. This goes beyond a basic description.

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?

Three sentences with front-loaded purpose, no redundant phrases. Every sentence contributes useful information.

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?

Covers purpose, scope, pagination behavior, and a specific operational detail. Missing information on error cases and return format beyond meta, but sufficient for a listing tool given no output schema.

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%, yet the description does not explain any parameter beyond implying pagination for limit and cursor. Competition_id is left implicit. The pagination detail marginally adds value, but not enough to compensate for the lack of explicit parameter documentation.

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

Purpose5/5

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

The description clearly states it lists published leaderboard rows for a competition, using the verb 'list' and resource 'leaderboard rows'. It distinguishes from siblings like get_my_leaderboard_standing and get_competition.

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

Usage Guidelines4/5

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

Provides clear context: scope required, cursor-paginated, and how to determine if published. Does not explicitly exclude alternative tools but offers enough practical guidance.

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

get_meA

Return the API key in use and its owner.

Scope: none -- works with any valid key. Call this first to verify a key is valid and to inspect its granted scopes before calling scope-gated endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the tool has no scope restriction and works with any valid key. It doesn't mention rate limits or side effects, but for a read-only status endpoint, this is acceptable. No annotation contradiction.

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 sentences: first sentence states purpose, second sentence provides usage context and scope. Perfectly front-loaded, no unnecessary words.

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?

Given no output schema, the description covers what is returned (API key, owner, scopes) and the recommended use case. It is complete for a simple verification tool, though listing return fields explicitly would enhance completeness.

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?

No parameters in input schema, so the description doesn't need to explain parameters. Baseline score of 4 applies per guidelines.

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

Purpose5/5

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

The description clearly states it returns the API key and its owner, and explicitly says to call it first to verify a key and inspect scopes. This distinguishes it from other 'get_*' siblings like get_competition or get_cheatsheet.

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

Usage Guidelines5/5

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

Explicitly states 'Scope: none -- works with any valid key. Call this first to verify a key is valid and to inspect its granted scopes before calling scope-gated endpoints.' This gives clear when-to-use and implies when not to use (after key is verified).

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

get_my_leaderboard_standingA

Get the caller's own leaderboard entry for a competition.

Scope: competition.read. Returns {"entry": null} when the caller isn't ranked yet (no team, no scoring placements, or leaderboard unpublished).

ParametersJSON Schema
NameRequiredDescriptionDefault
competition_idYes

TDQS

A4/5.0
Behavior4/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 discloses that the tool returns null when the caller is not ranked, which is a key behavioral trait. The scope 'competition.read' is mentioned, indicating read-only behavior. It does not cover all edge cases but is adequate.

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 sentences, front-loaded with the main purpose. Every sentence adds value, with no redundant or unnecessary words. It is highly efficient.

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?

Given the tool has only one parameter and no output schema, the description covers the null-case return value but does not explain the structure of a successful entry. An agent may need to infer the output format from context. This is a moderate gap.

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%, meaning no parameter descriptions in the schema. The description only mentions 'for a competition', which weakly implies the meaning of competition_id. It does not provide details like format, examples, or constraints, so it adds minimal value beyond the schema's title.

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

Purpose5/5

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

Description clearly states the tool retrieves the caller's own leaderboard entry for a competition. The verb 'get' and specific resource 'leaderboard entry' are unambiguous, and it distinguishes itself from sibling tools like 'get_leaderboard' which returns the full leaderboard.

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

Usage Guidelines4/5

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

The description provides implicit usage context: use to check your own standing. It mentions that null is returned when not ranked, which helps agents decide when to use it. However, it lacks explicit guidance on when not to use it or alternatives among the many sibling tools.

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

get_my_participationA

Get the caller's participation status in one competition.

Scope: competition.read. Returns canSubmit and, when false, submitBlockedReason (EMAIL_NOT_VERIFIED, NOT_ENROLLED, NOT_TEAM_OWNER, BEFORE_WINDOW, AFTER_WINDOW). Treat this as the source of truth for whether a submission should be attempted right now.

ParametersJSON Schema
NameRequiredDescriptionDefault
competition_idYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses return fields (canSubmit, submitBlockedReason with enum values) and implies a read-only operation via 'Scope: competition.read'. No side effects or destructive behavior are indicated.

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 three concise sentences, front-loaded with purpose, then details on return values, and finally usage guidance. No extraneous information.

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?

Given the low complexity (1 parameter, no output schema), the description covers the key output and usage intent. However, it omits explaining the competition_id parameter and potential error scenarios aside from blocked reasons.

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. While 'competition_id' is implied, the description provides no additional details about its format, source, or validation beyond the schema's title.

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

Purpose5/5

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

The description uses a specific verb 'Get' and identifies the resource as 'the caller's participation status in one competition', clearly distinguishing it from siblings like get_competition or get_my_leaderboard_standing.

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

Usage Guidelines4/5

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

The description explicitly states to 'Treat this as the source of truth for whether a submission should be attempted right now', providing clear context for when to use it. However, it does not list alternatives or when not to use it.

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

get_my_submissionA

Get the caller's current submission for a competition.

Scope: competition.read. For cheatsheet / model-reference / solver-participation this returns a single submission record (404 if none exists yet); pass track for track-based competitions. For igp24-polynomial this instead returns a cursor-paginated list of every past submission (newest first) -- cursor/limit apply only to that kind and are ignored for the others.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
trackNo
cursorNo
competition_idYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description fully informs about behavior: returns single record (404 if none) for most competitions, returns paginated list for igp24-polynomial, and explains parameter effects. No contradictions.

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 well-structured: a brief one-line purpose followed by a clear breakdown of behavior per competition type. Every sentence adds value without redundancy.

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

Completeness5/5

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

Despite no output schema, the description covers all key aspects: competition type distinctions, return types, parameter applicability, and error condition (404). It is sufficiently complete for the tool's complexity.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description must compensate. It does so by detailing which parameters are relevant for which competition types (e.g., cursor/limit ignored for non-igp24), adding significant meaning beyond the schema fields.

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

Purpose5/5

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

The description clearly states the tool gets the caller's current submission for a competition. It distinguishes behavior across competition types (single record vs. paginated list) and specifies the resource and action, setting it apart from siblings like get_submission_by_id.

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

Usage Guidelines4/5

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

The description explains when to use the tool and provides parameter guidance (e.g., pass 'track' for track-based competitions, cursor/limit apply only to igp24-polynomial). However, it lacks explicit when-not-to-use scenarios or direct references to alternative tools among siblings.

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

get_playground_problem_setB

Get every problem in one Playground problem set (not paginated).

Scope: playground.read. Row shape depends on competition kind: equation problems (index, equation1, equation2, goldAnswer) for cheatsheet competitions, Lean problems (id, lhsName, lhsText, rhsName, rhsText, isCustom) for solver-participation competitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
competition_idYes
problem_set_idYes

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 full burden. It discloses the non-paginated behavior and row shape varying by competition kind, which is helpful. However, it lacks details on potential size limits, error handling, or whether the operation is read-only (implied but not explicit).

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?

The description is concise, with two clear sentences. The first sentence front-loads the core purpose and constraint. The second adds useful output shape info, though it is somewhat dense. It is not overly verbose.

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?

Given no output schema, the description explains row shape for different competition kinds, which adds value. However, it omits ordering, defaults, and error conditions. For a simple retrieval tool, it is adequate but not fully complete.

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 add meaning. It does not describe the two required parameters (competition_id, problem_set_id) beyond their names, omitting format, source, or constraints. This is insufficient for a tool with two required parameters.

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

Purpose5/5

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

The description clearly states 'Get every problem in one Playground problem set (not paginated)', specifying the verb, resource, and a key constraint. This distinguishes it from sibling tools like list_playground_problem_sets, which lists sets rather than problems.

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 provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, typical use cases, or exclusions. The mention of 'Scope: playground.read' hints at auth but does not clarify usage context.

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

get_playground_runB

Get one Playground run: params, summary, and timing.

Scope: playground.read. Lean competitions also include verdicts[].

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
competition_idYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It states the tool is read-only (gets a run) and describes returned data, but does not disclose potential errors, rate limits, or additional behavioral constraints beyond the scope mention.

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 concise sentences: first states action and output, second adds scope and conditional context. No unnecessary words, front-loaded with key 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?

Description covers the return data adequately for a simple get tool but lacks parameter descriptions and error handling details. With no output schema or annotations, it meets minimal requirements but leaves gaps in completeness.

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 coverage is 0% with no parameter descriptions in the schema. Description adds no meaning to run_id or competition_id, merely mentioning 'one Playground run' without explaining what these parameters represent or their format.

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

Purpose5/5

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

Description clearly states verb 'Get' and resource 'one Playground run', specifies returned data (params, summary, timing) and conditional data for Lean competitions (verdicts[]). Distinct from sibling list_playground_runs which retrieves multiple runs.

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?

Mentions scope 'playground.read' implying authorization requirement, but does not explicitly state when to use this tool versus alternatives like list_playground_runs or cancel_playground_run. Usage is implied by the 'get one' purpose, but lacks explicit guidance.

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

get_playground_usageA

Get the caller's accumulated Playground practice spend for this competition.

Scope: playground.read. Returns credit balance, run counters, and either cellsExecuted (equation-style) or problemsAttempted (Lean / model-reference).

ParametersJSON Schema
NameRequiredDescriptionDefault
competition_idYes

TDQS

A3.8/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 discloses return fields (credit balance, run counters, etc.) but does not explicitly state that the operation is read-only, idempotent, or side-effect free. The name 'get' implies reading, but behavioral safety is not confirmed.

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 concise with three sentences. The first sentence immediately states the main purpose, the second adds scope, and the third details returns. No superfluous information, every sentence adds value.

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?

Given the tool has only one parameter, no output schema, and simple returns, the description provides a solid overview. It covers the action, scope, and return fields. Missing details like error handling or parameter format are minor given the simplicity.

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?

The schema has one required parameter 'competition_id' with 0% description coverage. The description adds context by stating 'for this competition,' linking the parameter to the competition. However, it does not specify format, allowed values, or examples, leaving some ambiguity.

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

Purpose5/5

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

The description clearly states the tool retrieves the caller's accumulated Playground practice spend for a specific competition, using a specific verb and resource. It distinguishes from sibling tools like get_playground_run and get_playground_problem_set by focusing on overall spend and returns.

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 description mentions the scope ('playground.read') but does not provide explicit guidance on when to use this tool versus alternatives. It implies usage for checking own spend but lacks when-not-to-use or alternative comparisons.

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

get_solver_templateB

Get one solver template, including its Lean 4 solverCode.

Scope: playground.read.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description provides minimal behavioral info: it is a read operation (scope playground.read) and returns the template with solverCode. However, it does not mention error handling, authentication, or rate limits.

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 concise sentences with no superfluous text. The purpose and scope are front-loaded, making it efficient for an agent to parse.

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?

For a simple get tool with 1 parameter and no output schema, the description is minimally adequate. It could mention that template_id comes from list_solver_templates or describe the return format, but is not severely incomplete.

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?

The single parameter template_id is required but lacks any description in the schema or tool description. The description does not explain what template_id represents or how to obtain it, despite 0% schema coverage.

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

Purpose5/5

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

The description clearly states 'Get one solver template, including its Lean 4 solverCode.' This specifies the verb, resource, and included content, distinguishing it from siblings like list_solver_templates, create_solver_template, etc.

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?

No explicit guidance on when to use this tool vs alternatives. The 'Scope: playground.read' hints at read-only context but doesn't clarify when to choose get_solver_template over list_solver_templates or other get tools.

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

get_submission_by_idA

Get one submission by ID.

Scope: competition.read. The caller can only read submissions they are allowed to access for this competition.

ParametersJSON Schema
NameRequiredDescriptionDefault
submission_idYes
competition_idYes

TDQS

A3.8/5.0
Behavior3/5

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

Discloses authorization context and read-only nature. No annotations exist, so description carries burden; it lacks details on error handling or idempotency but is adequate for a simple retrieval.

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 concise sentences with front-loaded purpose. No wasted words.

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?

Covers purpose and authorization but omits return format and parameter details. With no output schema, the description should offer more on what the response contains.

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%. Description does not explain the parameters beyond mentioning 'by ID'. Does not add meaning to 'submission_id' or 'competition_id' beyond their names.

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

Purpose5/5

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

Immediately states verb 'Get' and resource 'submission by ID'. Clearly distinguishes from sibling tools like 'get_my_submission' and 'download_submission_text'.

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

Usage Guidelines4/5

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

Specifies scope and authorization (competition.read, caller can only read accessible submissions) which helps decide when to use. However, no explicit alternative or when-not-to-use guidance is provided.

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

list_cheatsheetsB

List cheatsheets owned by the calling account (content omitted).

Scope: playground.read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description adds some behavioral context: scope 'playground.read' indicates read-only, and 'content omitted' discloses that cheatsheet contents are not returned. However, it omits details on pagination, ordering, or what fields are included in the list.

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?

The description is very concise, using two short lines. It front-loads the key action and scope. However, the brevity sacrifices parameter explanation.

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?

Given no output schema and two undocumented parameters, the description is incomplete. It fails to specify the return format or pagination behavior, which are essential for correct invocation in a list operation.

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 coverage is 0%, so the description should explain parameters. It does not mention limit or cursor, leaving the agent without context for their purpose or usage. The schema provides basic types but no semantics.

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

Purpose5/5

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

The description clearly states the tool lists cheatsheets owned by the calling account, specifying the verb (list) and resource (cheatsheets) with ownership scope. It distinguishes from other cheatsheet tools like get_cheatsheet and create_cheatsheet.

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 description implies usage for listing user's own cheatsheets but does not explicitly state when to use this tool over alternatives or provide exclusions. No mention of when not to use or comparison to sibling tools like list_competitions.

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 visible through the public API.

Scope: competition.read. Cursor-paginated (default limit 25, max 100): pass the previous response's nextCursor to fetch the next page; a nextCursor of null means there are no more pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo

TDQS

A4.5/5.0
Behavior4/5

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

Despite no annotations, the description reveals key behaviors: cursor-paginated with default/max limits, null nextCursor signals end. This is sufficient for safe invocation. Could also mention order or filtering, but current details are adequate.

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 three concise sentences, front-loading purpose and then adding pagination details. No redundant or vague statements; every sentence earns its place.

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?

The description is complete for a listing tool with no output schema: it specifies scope, pagination mechanics, and limits. It omits return field descriptions, but pagination details suffice for usage. Could be improved by noting typical sort order.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining the limit default/max and cursor usage (pass previous response's nextCursor). This adds essential meaning beyond the raw schema types.

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

Purpose5/5

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

The description clearly states the action ('List') and the resource ('competitions visible through the public API'), immediately conveying what the tool does. It distinguishes from the sibling 'get_competition' by implying a list vs. single retrieval context.

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

Usage Guidelines4/5

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

The description provides explicit pagination usage (cursor, limit, nextCursor semantics) and mentions OAuth scope, enabling correct invocation. However, it does not explicitly contrast with alternatives like 'get_competition' for when to list vs. fetch a specific item.

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

list_contributor_network_benchmarksA

List platform-run benchmark summaries for published items.

Scope: contributor-network.read. Benchmarks are platform-scheduled, not user-triggered. sort_by is "avgAccuracy" (default), "publishedAt", or "scoredTotal"; sort_direction is "desc" (default) or "asc".

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
searchNo
sort_byNo
model_idNo
problem_setNo
competition_idNo
sort_directionNo
min_avg_accuracyNo

TDQS

A3.5/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. It discloses that benchmarks are platform-scheduled (not user-triggered) and specifies the scope, but does not describe side effects, authentication requirements beyond scope, or rate limits. Some behavioral context is provided but not comprehensive.

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 concise: three short sentences with no redundancy. The first sentence provides the core purpose, followed by critical behavioral and parameter details. Every sentence adds value.

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?

Given 9 parameters and no output schema, the description is incomplete. It does not explain pagination (limit, cursor), filtering (search, model_id, etc.), or the meaning of 'benchmark summaries.' A more complete description would cover all parameters and expected output.

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?

Only 2 of 9 parameters (sort_by and sort_direction) are described with allowed values. The remaining parameters (limit, cursor, search, model_id, problem_set, competition_id, min_avg_accuracy) lack any description despite 0% schema description coverage. The description fails to compensate for this gap.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'List platform-run benchmark summaries for published items.' It uses a specific verb and resource, and distinguishes itself from sibling tools like 'get_contributor_network_item_benchmark' (which retrieves a single item's benchmark).

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 description mentions the scope ('contributor-network.read') implying read-only usage, but does not explicitly guide when to use this tool versus alternatives like 'get_contributor_network_item_benchmark' or other list tools. Usage context is implied rather than stated.

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

list_contributor_network_commentsA

List comments on an item, oldest first.

Scope: contributor-network.read. Soft-deleted comments remain for thread continuity with body/author.displayName set to null.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
item_idYes

TDQS

A3.8/5.0
Behavior4/5

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

The description discloses a key behavioral trait: soft-deleted comments remain for thread continuity with null body/author.displayName. This is valuable beyond the schema, as no annotations are provided. However, it does not mention other behaviors like pagination or rate limits.

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 concise, using two sentences to convey purpose, ordering, scope, and soft-delete behavior. No unnecessary words.

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?

The description covers purpose, ordering, and a notable behavior, but lacks explanation of pagination parameters (limit, cursor) and does not describe the output structure. For a list tool, this leaves gaps in understanding.

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?

With schema description coverage at 0%, the description should compensate, but it only implicitly explains 'item_id' as the item. The 'limit' and 'cursor' parameters for pagination are not mentioned or described, leaving ambiguity for the agent.

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

Purpose5/5

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

The description clearly states the action (list comments), the resource (on an item), and the ordering (oldest first). It distinguishes from siblings like create_contributor_network_comment and delete_contributor_network_comment.

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 description mentions the required scope (contributor-network.read) but does not provide explicit guidance on when to use this tool versus alternatives, such as when to list versus create or delete comments.

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

list_contributor_network_itemsA

List visible Contributor Network items (content/solverCode/model fields omitted).

Scope: contributor-network.read. kind is one of cheatsheet / solver-template / model-reference. track applies when kind=solver-template. public_code does an exact lookup by shareable code (e.g. "MAC01-000042") and ignores cursor when given. sort is "newest" (default) or "earliest".

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
sortNo
limitNo
trackNo
cursorNo
searchNo
public_codeNo
competition_idNo

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses scope ('contributor-network.read'), explains parameter behavior for kind, track, public_code, and sort, and notes that public_code lookup ignores cursor. However, it does not describe the output structure or error conditions, which is a minor gap.

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?

The description is concise and well-structured, with a clear initial statement followed by parameter explanations separated by line breaks. Each sentence adds value without repetition.

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?

Given the complexity (8 parameters, no annotations, no output schema), the description is adequate but not fully comprehensive. It explains key parameters but omits details on pagination (beyond cursor mention), error handling, and response structure.

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 explains meaning for 4 of 8 parameters (kind, track, public_code, sort) but provides no information about limit, cursor, search, or competition_id. This partial coverage leaves gaps.

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 clearly identifies the tool as listing 'visible Contributor Network items' and specifies omitted fields, making the purpose clear. However, it does not explicitly differentiate from sibling tools like list_cheatsheets or list_solver_templates, though the 'kind' parameter implies coverage of multiple item types.

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 description explains some parameter behavior (e.g., 'public_code' ignores cursor) but provides no guidance on when to use this tool versus alternatives. No explicit when-to-use or when-not-to-use conditions are given.

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

list_custom_problemsC

List private Lean statement pairs (custom problems) owned by the calling account.

Scope: playground.read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It states the scope (playground.read) implying read-only, but does not disclose pagination behavior, rate limits, or what happens when no problems exist. Minimal behavioral context.

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?

The description is concise with two lines, but it could include parameter information without being verbose. It is adequate but not optimally structured.

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?

Given the tool is a listing endpoint with pagination parameters and no output schema, the description should mention pagination, sorting, or return format. It lacks these details, making it incomplete for an agent to invoke properly.

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 coverage is 0% and the description does not explain the limit and cursor parameters. An agent would not know these are for pagination, and the description adds no value beyond the parameter names.

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

Purpose5/5

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

The description clearly states the tool lists private custom problems (Lean statement pairs) owned by the calling account, with a specific verb and resource. It distinguishes from siblings like get_custom_problem (single item) and create/delete_custom_problem.

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 description implies listing own problems but does not explicitly state when to use this tool versus alternatives like get_custom_problem or search variants. No guidance on pagination or filtering is provided.

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

list_playground_modelsA

List Playground model IDs accepted in a run for this competition.

Scope: playground.read. Only call this when the competition's capabilities.playground is true. Model IDs are opaque tokens (some are OpenRouter-style provider/name, others are hyphenated) -- don't parse them, just pass the id field back in run requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
competition_idYes

TDQS

A4.1/5.0
Behavior4/5

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

The description warns that model IDs are opaque tokens and advises not to parse them, which is a key behavioral trait. It also indirectly implies the tool is read-only via the 'playground.read' scope statement. No annotations exist to contradict.

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 concise: two sentences plus a brief scope/condition line. It is front-loaded with the core purpose and every sentence adds value without unnecessary words.

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?

Given the simplicity of the listing tool and no output schema, the description adequately covers when to use, what the IDs look like, and how to use them. It could mention that results are paginated, but the parameters imply that.

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 coverage is 0%, so the description must compensate. It only implicitly mentions the competition_id parameter in the context of 'this competition' but does not explain the two pagination parameters (limit, cursor) or their usage.

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

Purpose5/5

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

The description clearly states the tool lists Playground model IDs accepted in a run for a specific competition, using the verb 'list' and specifying the resource exactly. It distinguishes from sibling tools like list_playground_runs by its focus on models.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to call this tool: 'Only call this when the competition's capabilities.playground is true.' It also mentions the scope requirement (playground.read). While it doesn't explicitly state when not to use it, the condition is clear.

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

list_playground_problem_setsC

List Playground problem sets available for practice runs.

Scope: playground.read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
competition_idYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral traits. It only implies a read operation but omits details like pagination, ordering, or any side effects. This is insufficient for an agent to understand the tool's behavior.

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

Conciseness2/5

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

The description is extremely brief, but not efficiently informative. It lacks necessary context while being too short to convey essential details, making it under-specified rather than concise.

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?

Given the tool has 3 parameters, no output schema, and no annotations, the description is incomplete. It does not explain pagination, required fields, or return format, leaving significant gaps for an AI agent.

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 input schema has 0% description coverage for its 3 parameters. The description adds no explanation for 'competition_id,' 'limit,' or 'cursor,' leaving the agent to guess their meaning and usage. This is a critical 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 clearly states the verb ('List') and resource ('Playground problem sets'), and indicates they are 'available for practice runs.' This distinguishes it from similar tools like get_playground_problem_set, but lacks detail about the nature of problem sets.

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?

No guidance on when to use this tool versus alternatives is provided. The 'Scope: playground.read' note is about permissions, not usage context or exclusions.

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

list_playground_run_resultsA

List per-cell/per-problem result rows for a Playground run.

Scope: playground.read. Row shape depends on competition kind (equation / Lean / model-reference result fields).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
run_idYes
competition_idYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description must carry full burden. Discloses that row shape depends on competition kind, but does not mention pagination behavior, read-only nature, or authorization details beyond scope.

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 concise sentences plus a scope/note line. Every sentence adds value, no wasted words.

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?

Given no output schema, no annotations, and 4 parameters with 0% schema coverage, the description lacks details on return format, pagination, ordering, or what 'result rows' contain. Incomplete for a listing 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 coverage is 0%, and description adds no explanation for parameters (run_id, competition_id, limit, cursor). The description only references competition kind, not the parameters themselves.

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

Purpose5/5

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

Description states specific verb 'list', resource 'per-cell/per-problem result rows for a Playground run', and distinguishes from sibling 'list_playground_runs' by specifying results rather than runs. Also notes dependency on competition kind.

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?

Mentions scope 'playground.read' but provides no explicit when-to-use or when-not-to-use guidance. Does not differentiate from other list tools or provide alternatives.

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

list_playground_runsB

List Playground runs created by the caller for this competition.

Scope: playground.read. status is one of pending/running/done/failed/ cancelled. problem_set applies to equation-style competitions only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
statusNo
model_idNo
problem_setNo
competition_idYes

TDQS

B3.1/5.0
Behavior3/5

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

Provides scope (read-only) and constraints on status and problem_set. However, does not mention pagination behavior, ordering, or potential performance impacts, leaving gaps given no annotations.

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?

Three concise sentences with front-loaded purpose. Could be slightly more streamlined, but overall efficient.

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?

With 6 parameters, no output schema, and no annotations, the description is too sparse. Missing pagination details, response format, and default behavior for optional parameters.

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?

Adds meaning for status (valid values) and problem_set (applicability), but leaves limit, cursor, model_id, and competition_id unexplained. Schema coverage is 0%, so description should do more.

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?

Clearly states it lists playground runs created by the caller for a competition. Distinguishes from sibling tools like submit_playground_run or get_playground_run, but could be more explicit about alternatives among list tools.

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?

Implied usage for listing runs, but no explicit guidance on when to use this tool over others or when not to use it. Sibling tools exist for specific actions.

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

list_solver_templatesA

List solver templates owned by the calling account (solverCode omitted).

Scope: playground.read. track filters by track ID, e.g. "solo" or "marathon".

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
trackNo
cursorNo

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 full burden. It discloses ownership filtering and solverCode omission but does not explain pagination behavior, rate limits, or error conditions. The cursor and limit parameters hint at pagination but are not explained.

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 succinct with three short sentences, each adding distinct value. No redundant or unnecessary text. The main action is front-loaded.

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?

Given no output schema and minimal annotations, the description is adequate but lacks details on pagination (limit, cursor), return format, and default ordering. The mention of 'solverCode omitted' hints at output structure but is insufficient for complete understanding.

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 coverage is 0%, so description must compensate. It adds meaning to the 'track' parameter with an example ('solo' or 'marathon') but does not explain 'limit' or 'cursor'. Only one of three parameters is elaborated, leaving gaps.

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

Purpose5/5

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

The description clearly states the action ('List solver templates'), the scope ('owned by the calling account'), and an important detail ('solverCode omitted'). This distinguishes it clearly from sibling tools like get_solver_template or create_solver_template.

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 description implies a read operation via 'Scope: playground.read' but does not explicitly state when to use list versus other tools like get_solver_template. No guidance on alternatives or when not to use is provided.

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

publish_contributor_network_itemA

Publish a saved resource, a submitted text body, inline text, or a model reference.

Scope: contributor-network.write. kind must match source["from"]: "cheatsheet" (needs source.cheatsheetId), "solver-template" (needs source.solverTemplateId), "submission" (needs source.submissionId -- only for cheatsheet/solver-participation submissions), "inline" (needs source.title plus source.content or source.solverCode), or "model-reference" (needs source.modelName and source.commitHash). track/model_id are required when kind=solver-template and must be omitted when kind=model-reference.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
trackNo
remarkNo
sourceYes
model_idNo
competition_idYes
parent_contributor_network_item_idNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the scope and parameter constraints but does not mention side effects (e.g., whether publishing can be undone), error conditions, or return behavior. This is a notable gap for a mutation tool.

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?

The description is front-loaded with the purpose and uses bullet-like formatting for constraints. It is dense but each sentence adds value. A slight reduction for density could be made, but overall it is well-structured.

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?

The tool has 7 parameters, 3 required, nested objects, and no output schema. The description adds critical context for constructing the 'source' object based on 'kind'. However, it does not explain the return value or post-publish behavior, which would aid complete understanding.

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 coverage is 0%, so the description must compensate. It adds meaning for 'kind', 'source', 'track', and 'model_id' by specifying dependencies and constraints. However, it omits descriptions for 'remark', 'competition_id', and 'parent_contributor_network_item_id', leaving those parameters unexplained.

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

Purpose5/5

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

The description clearly states 'Publish a saved resource, a submitted text body, inline text, or a model reference', using a specific verb and resource types. It further distinguishes from siblings by detailing the 'kind' parameter and its associated requirements, making the tool's purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides explicit conditions for each kind, including required source fields and parameter constraints like track/model_id. It states the required scope 'contributor-network.write'. However, it does not explicitly compare to sibling tools or state when not to use this tool, leaving some ambiguity.

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

stream_playground_run_eventsA

Collect Server-Sent Events for a solver-participation Playground run.

Scope: playground.read. Only available for solver-participation competitions. This blocks for up to timeout_seconds (capped at 300) collecting one LeanVerdict per event as the run progresses, and returns once the run reaches a terminal status (stream closes) or the timeout elapses -- an MCP tool call is a single request/response, so this collects-then-returns rather than truly streaming incrementally. Returns {"verdicts": [...], "ended_reason": "completed" | "timeout"}.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
competition_idYes
timeout_secondsNo

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses key behaviors: it is not truly streaming ('collects-then-returns'), blocks up to a capped timeout, and the return format. This exceeds minimal requirements.

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 a single well-structured paragraph of 4 sentences, front-loaded with purpose. Every sentence adds value: purpose, scope, blocking behavior, return format.

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

Completeness5/5

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

Given no output schema, the description includes the return structure ('verdicts' and 'ended_reason'), explains the blocking collect-then-return approach, and notes constraints (capped timeout). It is complete for invocation.

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 coverage is 0%, so description must compensate. It adds context for `timeout_seconds` (capped at 300, default 120) but provides no additional meaning for `run_id` or `competition_id` beyond their names. Partial compensation, hence score 3.

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

Purpose5/5

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

The description clearly states it 'Collect Server-Sent Events for a solver-participation Playground run', with specific verb and resource. It distinguishes from siblings by emphasizing blocking behavior and scope (playground.read), which is unique among listed tools.

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

Usage Guidelines4/5

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

The description provides explicit context: 'Only available for solver-participation competitions' and explains blocking and timeout behavior. While it doesn't explicitly state when not to use, the context is sufficient for correct invocation.

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

submit_competition_entryA

Create or replace the caller's submission for a competition.

Scope: competition.write. payload's shape is selected by the competition's submissionSpec.kind -- call get_competition first and build payload from submissionSpec.schema. Known kinds today:

  • cheatsheet: {"content": ""}

  • model-reference: {"modelName": "/", "commitHash": "<40-hex-char sha>"}

  • solver-participation: {"track": "", "modelId": "", "solverCode": "<lean 4 source>"}

  • igp24-polynomial: {"polynomials": ["<25 comma-separated coefficients a_0..a_24>", ...]}

meta is optional (e.g. {"description": "...", "contributorNetworkItemId": "..."}), validated against submissionSpec.metaSchema. For igp24-polynomial every call creates a brand-new submission; other kinds overwrite the existing entry for that competition (or track) in place and keep the same submissionId.

ParametersJSON Schema
NameRequiredDescriptionDefault
metaNo
payloadYes
competition_idYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses behavioral traits such as 'create or replace', overwriting behavior for most kinds, and brand-new submission for igp24-polynomial. It mentions scope requirement and optional meta validation. It could be improved by mentioning error scenarios or authentication details, but overall it provides good transparency.

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 concise and well-structured: a single introductory sentence followed by a bullet list of known payload kinds and a note on overwrite behavior. No redundant information, and the key purpose and usage are front-loaded.

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?

Given the complexity of multiple submission kinds and no output schema, the description covers the main functionality, payload variations, and overwrite behavior. However, it does not describe the return value or error conditions, which would complete the picture for an agent.

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?

Despite 0% schema description coverage, the description adds substantial meaning to parameters. It explains the payload structure for each known kind and mentions meta's optionality and validation against metaSchema. The competition_id is implied by the instruction to call get_competition, but it is not explicitly described, so a slight gap remains.

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

Purpose5/5

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

The description clearly states the verb ('Create or replace') and the resource ('the caller's submission for a competition'). It distinguishes from siblings by mentioning the prerequisite to call get_competition and provides known payload kinds, setting it apart from other competition-related tools.

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

Usage Guidelines4/5

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

The description explicitly instructs to call get_competition first and build payload from submissionSpec.schema, providing clear context on when to use. It offers examples of known kinds but does not explicitly state exclusions or alternatives, so it slightly lacks completeness in guidance.

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

submit_playground_runA

Create a Playground practice run.

Scope: playground.write. run_request's shape depends on the competition's submissionSpec.kind -- read get_competition first. Known shapes today:

  • cheatsheet: {"models": ["", ...], "problems": [{"problemSet": "", "index": 0} | {"custom": {"equation1": "...", "equation2": "...", "goldAnswer": true}}, ...], "configurations": [{"cheatsheet": ""}, ...] (optional, omit for an unconditioned baseline), "repeat": 1 (optional, max 5)}

  • solver-participation: {"solverCode": "<lean 4 source>", "solverName": "" (optional), "problemIds": ["", ...], "allowedModels": ["", ...] (optional)}

  • model-reference: {"modelName": "/", "commitHash": "<40-hex-char sha>", "problemSetId": "", "hfToken": "" (optional, for private/gated repos), "note": "<=500 chars" (optional)}

Returns {"runId": ..., "status": "pending"}. Poll get_playground_run / list_playground_run_results for progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_requestYes
competition_idYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the return value and polling behavior, and mentions scope playground.write. No mention of error states or rate limits, but generally transparent.

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?

Well-structured: summary, scope, dependency, shapes, return value, and polling instructions. Information is front-loaded and each sentence adds value.

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

Completeness5/5

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

Given the complexity (nested objects, no output schema, no annotations), the description is comprehensive, covering purpose, usage, parameter shapes, and expected behavior.

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

Parameters5/5

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

Schema coverage is 0%, so description must explain parameters. It does so thoroughly, detailing three distinct shapes for run_request based on competition kind, including optional fields and constraints.

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

Purpose5/5

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

The description clearly states 'Create a Playground practice run.' It uses a specific verb (create) and resource (Playground practice run), and distinguishes from sibling tools like get_playground_run and cancel_playground_run.

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

Usage Guidelines4/5

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

Provides guidance to read get_competition first, and gives explicit shapes for different run_request kinds. However, it does not explicitly state when not to use this tool vs alternatives.

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

unfavorite_contributor_network_itemA

Clear the caller's favorite flag for an item (idempotent).

Scope: contributor-network.write. Refetch the item to read the updated favoriteCount.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

No annotations provided, so the description fully carries behavioral disclosure. It discloses idempotency, mutation nature (clearing a flag), required scope, and the need to refetch for updated count. This is comprehensive for a simple 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 extremely concise with two sentences. First sentence states action and idempotency; second sentence adds scope and a usage note. No unnecessary words.

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?

For a simple tool with one parameter and an output schema, the description covers the action, idempotency, scope, and post-action behavior. It does not explain error conditions or output schema, but the output schema is available separately. Slightly incomplete on edge cases.

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?

The input schema has 0% description coverage for the single parameter 'item_id'. The description does not provide additional detail about the parameter beyond the tool name and schema type. However, the parameter is self-explanatory given the tool's purpose, so it meets the minimum viable level.

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

Purpose5/5

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

The description clearly states the action: 'Clear the caller's favorite flag for an item' and notes idempotency. It distinguishes from sibling 'favorite_contributor_network_item' by implying the opposite action.

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

Usage Guidelines4/5

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

The description mentions required scope ('contributor-network.write') and advises to refetch after use. However, it does not explicitly state when not to use this tool or name the sibling tool for the opposite action, though the sibling name provides context.

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

update_cheatsheetA

Partially update a cheatsheet. Provide at least one field.

Scope: playground.write. Raises CHEATSHEET_LOCKED (403) if the cheatsheet is currently published on the Contributor Network -- withdraw it first.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
contentNo
cheatsheet_idYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are present, so the description carries full burden. It discloses partial update behavior, required fields, and a specific error condition. However, it does not mention success response, side effects on other data, or idempotency.

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 extremely concise, consisting of two short sentences. It is front-loaded with the core purpose and immediately provides necessary constraints. No extraneous information.

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?

For an update tool with no output schema and no annotations, the description covers the key aspects: purpose, constraints, and error condition. It lacks information about the return value or confirmation, but for a simple partial update it is fairly complete.

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?

Schema coverage is 0%, so description must add meaning. It states 'Provide at least one field' which implies that either title or content should be provided, adding context beyond the schema's optionality. However, it does not explain cheatsheet_id or provide formatting for title/content.

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

Purpose5/5

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

The description clearly states the tool's action: 'Partially update a cheatsheet.' It specifies the resource (cheatsheet) and distinguishes it from sibling tools like create_cheatsheet and delete_cheatsheet.

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

Usage Guidelines5/5

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

Provides explicit guidance: 'Provide at least one field.' and warns about the CHEATSHEET_LOCKED error when published on Contributor Network, instructing to withdraw first. This effectively tells when and when not to use the tool.

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

update_solver_templateA

Partially update a solver template. Provide at least one field.

Scope: playground.write. track and its source item are fixed after creation. Raises SOLVER_TEMPLATE_LOCKED (403) if published on the Contributor Network -- withdraw it first.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
solver_codeNo
template_idYes

TDQS

A4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses the error condition (SOLVER_TEMPLATE_LOCKED 403) and fixed fields, but does not mention side effects or idempotency. Partial update behavior is implied.

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 sentences plus a note, no wasted words. Purpose is front-loaded, and each sentence provides unique information (operation, scope, constraints).

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?

Given no output schema and 0% schema coverage, the description covers key constraints but lacks parameter explanations and return value information. It is adequate for a mutation tool with these gaps.

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%, yet the description does not explain what 'title' and 'solver_code' represent or how to use them. It only states 'provide at least one field', which adds minimal value.

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

Purpose5/5

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

The description clearly states the verb 'update' and resource 'solver template', uses 'partially update' to specify the type of modification, and is distinct from sibling tools like create_solver_template and delete_solver_template.

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

Usage Guidelines4/5

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

Provides scope (playground.write), a precondition (track and source item fixed after creation), and a condition for when not to use (raises 403 if published, withdraw first). However, it does not explicitly compare to alternatives.

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

withdraw_contributor_network_itemA

Withdraw (unpublish) an item authored by the calling account.

Scope: contributor-network.write. Withdrawn items disappear from listings, direct lookups, graphs, and benchmark results.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/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. It explains that withdrawn items disappear from listings, lookups, graphs, and benchmarks, but does not state reversibility, side effects, or required permissions beyond the scope note.

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 very short with three sentences, each serving a purpose: defining the action, specifying scope, and detailing effects. It is front-loaded and concise.

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?

Given the simplicity of the tool (one required parameter) and the presence of an output schema (not shown), the description covers the main effect and scope. It could include error states or prerequisites for clarity, but overall it is reasonably complete.

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 single parameter 'item_id' has no description in the schema (0% coverage) and the tool description does not provide any additional context about its meaning, format, or usage.

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

Purpose5/5

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

The description clearly states the action ('withdraw/unpublish') and the resource ('item'), and distinguishes from sibling tools like 'publish_contributor_network_item' by specifying the reverse operation.

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 description mentions that the item must be authored by the calling account, implying a prerequisite, but does not provide explicit guidance on when to use withdraw versus alternatives like delete or unpublish, nor does it mention potential negative cases.

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. Dates show when Glama detected each change.

  1. 48 tool updatesv0.1.0
    • First observedcancel_playground_run
    • First observedcreate_cheatsheet
    • First observedcreate_contributor_network_comment
    • First observedcreate_custom_problem
    • First observedcreate_solver_template
    • First observeddelete_cheatsheet
    • First observeddelete_contributor_network_comment
    • First observeddelete_custom_problem
    • First observeddelete_solver_template
    • First observeddownload_submission_text
    • First observedfavorite_contributor_network_item
    • First observedget_cheatsheet
    • First observedget_competition
    • First observedget_contributor_network_global_graph
    • First observedget_contributor_network_item
    • First observedget_contributor_network_item_benchmark
    • First observedget_contributor_network_item_graph
    • First observedget_custom_problem
    • First observedget_igp24_label_progress
    • First observedget_leaderboard
    • First observedget_me
    • First observedget_my_leaderboard_standing
    • First observedget_my_participation
    • First observedget_my_submission
    • First observedget_playground_problem_set
    • First observedget_playground_run
    • First observedget_playground_usage
    • First observedget_solver_template
    • First observedget_submission_by_id
    • First observedlist_cheatsheets
    • First observedlist_competitions
    • First observedlist_contributor_network_benchmarks
    • First observedlist_contributor_network_comments
    • First observedlist_contributor_network_items
    • First observedlist_custom_problems
    • First observedlist_playground_models
    • First observedlist_playground_problem_sets
    • First observedlist_playground_run_results
    • First observedlist_playground_runs
    • First observedlist_solver_templates
    • First observedpublish_contributor_network_item
    • First observedstream_playground_run_events
    • First observedsubmit_competition_entry
    • First observedsubmit_playground_run
    • First observedunfavorite_contributor_network_item
    • First observedupdate_cheatsheet
    • First observedupdate_solver_template
    • First observedwithdraw_contributor_network_item

TDQS

B3.4/5.0
Disambiguation4/5

The tools are mostly distinct, each targeting specific resources and actions. However, the high number of tools (48) introduces some complexity, and a few like 'get_my_submission' vs 'get_submission_by_id' could cause minor confusion despite different purposes.

Naming Consistency5/5

Tool names consistently follow the `verb_noun` snake_case pattern (e.g., create_cheatsheet, list_playground_runs). The verbs are appropriately descriptive (create, get, list, delete, update, submit, etc.), and there is no mixing of conventions.

Tool Count2/5

With 48 tools, the set is significantly larger than the recommended 3-15 range, indicating over-scoping. While the domain is broad, many operations could be consolidated, and the sheer volume risks overwhelming agents.

Completeness4/5

The tool surface covers CRUD operations for core resources (cheatsheets, solver templates, custom problems, contributor network items) and key workflows (competition submissions, playground runs). Minor gaps exist, such as the lack of a tool to list all runs across competitions, but the set is largely complete for its intended domain.

Maintenance

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/osick/SAIRmcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server