link2kaggle-colab-mcp
Enables submitting Python/notebook jobs to Google Colab, selecting Colab as a provider, checking quota/resources, and managing job lifecycle including status, logs, download, and cancel, with real GPU/CCU work gated by explicit settings.
Enables submitting Python/notebook jobs to Kaggle, selecting Kaggle as a provider, checking quota/resources, and managing job lifecycle including status, logs, download, and cancel where supported.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@link2kaggle-colab-mcprecommend a provider for my training script and submit it in mock mode"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Link2Kaggle-Colab
Local MCP server and CLI to submit jobs to Kaggle and Google Colab from your machine.
English | 简体中文
Status
v1.0.0 — initial public release on main (changelog).
Default mode is mock: no real account, network, GPU, or Colab compute units (CCU).
Real GPU/CCU submit needs both
mode: realandallow_real_jobs: true.Mock quota / balance / membership text is a TEST FIXTURE, not a live account.
Related MCP server: mcp-server-colab-exec
Features
Providers: Kaggle, Google Colab, and offline
fakerunnerSurfaces: SDK (
link2kaggle_colab.Client), CLI (l2kc), stdio MCP serverScheduler: recommend / auto placement with quota-aware guards
Jobs: SQLite job manager, list / reconcile, idempotency keys
Multi-account: credential references in config (paths / env / keyring), no secrets in YAML
Piece | Name |
Distribution |
|
Import package |
|
SDK |
|
CLI |
|
MCP (stdio) |
|
Skill |
|
Quick start
python3 -m venv .venv
.venv/bin/pip install -e '.[dev]'
.venv/bin/l2kc doctor
.venv/bin/l2kc quota
.venv/bin/l2kc submit examples/train_example.py --provider fakeLocal CI gate:
make ci
# or: ./scripts/ci.shl2kc doctor prints a MOCK MODE line on stderr (not part of --json stdout). Linux/WSL notes: docs/linux-wsl-setup.md.
Safety
Connect only trusted MCP clients. Downloads are confined to artifact_root (default ./l2kc-artifacts); paths outside that root raise PathSecurityError. In the MCP process, local fake exec is off unless L2KC_ALLOW_FAKE_EXEC=1. Real billed work is double-gated (mode: real + allow_real_jobs: true).
See SECURITY.md and docs/known-limitations.md.
MCP setup (Cursor / stdio)
{
"mcpServers": {
"link2kaggle-colab": {
"command": "link2kaggle-colab-mcp"
}
}
}From a virtualenv:
{
"mcpServers": {
"link2kaggle-colab": {
"command": ".venv/bin/python",
"args": ["-m", "link2kaggle_colab.mcp"]
}
}
}Canonical tools use the gpu_* prefix (also registered as l2kc_*). Agent guidance: skills/link2kaggle-colab/SKILL.md.
Real mode (spend warning)
Real Kaggle/Colab auth and GPU/CCU jobs can cost money or quota. Read docs/real-auth-setup.md before enabling:
mode: realin configallow_real_jobs: truefor any GPU/CCU submit
Either flag alone does not submit billed work. Default CI never burns GPU or Colab CCU.
Docs index
Doc | Topic |
Trust boundary, reporting | |
Dev setup, | |
Limitations and Won't-Fix | |
Mock defaults | |
Real credentials | |
Multi-account | |
Design overview | |
Linux/WSL | |
Version history | |
Config template |
CLI (cheat sheet)
Global options go before the subcommand: l2kc --config ./l2kc.yaml doctor.
Command | Purpose |
| Mode, state dir, CLI presence, auth (does not run |
| Providers and fixtures (mock) or live reads (real) |
| Pick a backend; does not submit |
| Submit |
| Job lifecycle |
| Accounts and local job store |
Known errors print error[<code>]: <message> on stderr and exit 2. Full flag lists: run l2kc --help / l2kc submit --help.
Limitations (short)
Mock quotas are fixtures; default Colab CCU rates are unverified.
Kaggle cancel is
not_supported(official CLI has no cancel).Remote MCP transports are refused; stdio only.
Some premium accelerators need a real-account check.
Full list: docs/known-limitations.md.
License
Available Tools
30 toolsgpu_auth_statusC
Auth snapshots. Mock data are TEST FIXTURES, not a live account.
account reads that account only. There is no automatic rotation.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two genuinely useful behaviors: mock data are test fixtures rather than a live account, and there is no automatic rotation. It omits whether this is a read-only operation, what happens on missing/invalid credentials, and whether the snapshot is cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short with no padding, but it is a set of disconnected fragments opening with a bare noun phrase rather than a front-loaded statement of purpose. The literal backticks around ``account`` read as formatting noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values needn't be explained, but for a two-parameter auth tool with 0% schema coverage and a near-identical sibling, the description leaves the core question — what this returns and when to prefer it over l2kc_auth_status — unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for both parameters. It only gestures at ``account`` ("reads that account only") and says nothing about ``provider``, accepted value formats, or what the null defaults mean.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Auth snapshots" is a noun fragment that essentially restates the name gpu_auth_status; it never says what the tool returns (credentials? token validity? provider identity?) in a verb+resource form. Nothing distinguishes it from the sibling l2kc_auth_status, which appears to be the same operation for another backend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no routing to alternatives such as l2kc_auth_status, gpu_list_accounts, or gpu_doctor. "``account`` reads that account only" scopes a parameter but does not tell the agent when this tool is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_cancel_jobC
Cancel a job. Mock data are TEST FIXTURES, not a live account.
Kaggle's official CLI cannot cancel a running kernel.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It implies a destructive cancellation but does not state whether cancellation is irreversible, what job states are cancellable, permission requirements, or side effects; the mock-data and CLI notes add some context but not enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core action. The following sentences add context without excess, though they are not tightly organized around invocation guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a cancellation mutation with no annotations, the description should clarify safety, reversibility, and parameter semantics beyond what the minimal schema provides. It mentions mock fixtures and a CLI limitation but leaves important invocation details incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one required parameter, job_id, with 0% description coverage, and the description does not explain its format or meaning. The phrase 'cancel a job' only weakly implies that job_id identifies the job.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: cancel a job. It is clear what the tool does, but it does not distinguish itself from the sibling l2kc_cancel_job, so sibling differentiation is missing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It does not explain when to use this tool instead of l2kc_cancel_job, nor does it state prerequisites or conditions for cancellation. The mock-data and Kaggle CLI notes provide context but not actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_doctorB
Local doctor report. Mock data are TEST FIXTURES, not a live account.
Does not execute kaggle or colab. CLI presence is shutil.which.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose useful traits: mock data are test fixtures, the tool does not execute kaggle or colab, and CLI presence is checked via shutil.which. However, it does not explicitly state that the report is read-only, what side effects if any exist, or what permissions/prerequisites are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the purpose before adding caveats. Each sentence provides relevant context, though the opening phrase remains somewhat vague.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter diagnostic tool with an output schema, the description does not need to explain return values. However, it leaves out what the report actually diagnoses and why an agent should choose gpu_doctor over the similarly named l2kc_doctor sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to document. The baseline for a parameterless tool is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it produces a "Local doctor report," which gives the resource and local scope but does not clearly state what the diagnostic report checks or what "doctor" means in this context. It also does not distinguish it from the sibling l2kc_doctor tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to call gpu_doctor versus l2kc_doctor or any other sibling. The description provides caveats about mock data and non-execution, but these are behavioral details rather than usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_download_artifactsC
Download artifacts under artifact_root. Mock data are TEST FIXTURES.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| dest_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it does not say whether files are overwritten, whether dest_dir defaults to the working directory, what happens if the job is still running, or that the data may be mock fixtures generated for testing rather than real outputs. The one behavioral hint ('Mock data are TEST FIXTURES') is ungrammatical and leaves the agent guessing about data provenance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short, which is good, but the second sentence is opaque and reads like an unexplained note rather than information the agent can act on. Nothing is front-loaded beyond the verb.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, so that need not be explained, but for a two-parameter download tool with zero schema coverage the description omits parameter meaning, destination behavior, and prerequisites. It is not sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither documented parameter is addressed: job_id (required) and dest_dir (nullable, default null) are never mentioned, and 'artifact_root' is not even a parameter. The description therefore adds no meaning beyond the bare field names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a verb (Download) and resource (artifacts), which separates it from list/get/logs siblings, but 'under artifact_root' is an unexplained config reference and gives no hint of what kind of artifacts or from which job. The trailing note about mock data is cryptic rather than clarifying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool instead of gpu_get_job_logs or l2kc_download_artifacts, nor any precondition such as the job having completed. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_get_job_logsC
Tail of the job log. Mock data are TEST FIXTURES, not a live account.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears the full burden. It does disclose two useful traits—output is a truncated tail, and data are mock test fixtures rather than a live account—but says nothing about permissions, behavior when the job is missing or still running, or how max_chars affects results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and no filler. It is efficient, though the brevity borders on under-specification rather than being purely economical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered, but with zero schema coverage and no annotations the definition leaves the agent without parameter meanings, error behavior, or selection guidance. Too thin for a tool with a required identifier parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so neither job_id nor max_chars is documented anywhere. The word "tail" vaguely implies that max_chars truncates output, but no units, defaults, or identifier format are given in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Tail of the job log" names a specific resource and operation, enough for an agent to know this returns recent log output. It does not, however, distinguish itself from the near-identical sibling l2kc_get_job_logs or from gpu_get_job_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus gpu_get_job_status, gpu_list_jobs, or the l2kc equivalent. The only supplementary sentence is a data-provenance warning, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_get_job_statusD
Job state. Mock data are TEST FIXTURES, not a live account.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It adds an important caveat that mock data are TEST FIXTURES, but says nothing about authorization, side effects, failure modes, or what state retrieval entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but it is under-specified rather than concise. "Job state" is too vague to earn its place as the leading sentence, and the fixture warning, while useful, is the only substantive detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return value details are less critical. However, with no annotations and no parameter documentation, the definition is still missing essential context about the sole required input and how this tool relates to its many siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single required job_id parameter has 0% schema description coverage, and the description does not mention it at all. An agent gets no information about what job_id should contain or how it is interpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says only "Job state," which restates the tool name without a specific verb or scope. It does not distinguish gpu_get_job_status from siblings such as l2kc_get_job_status or gpu_list_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus gpu_list_jobs, gpu_get_job_logs, gpu_cancel_job, or the l2kc counterpart. The mock-data warning is useful context but does not tell the agent when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_get_quotaB
Quota snapshots. Mock data are TEST FIXTURES, not a live account.
account reads that account only. There is no automatic rotation.
refresh drops the per-account quota cache entry before reading.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| refresh | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and usefully discloses that mock data are test fixtures, that account scoping has no automatic rotation, and that refresh clears the per-account cache before reading. It still omits provider behavior and any auth/error/rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four short lines, front-loaded with the snapshot purpose and fixture warning, then parameter notes. It is compact and structured with backticks, though the opening phrase is terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 0% schema coverage, and three optional parameters, the description leaves provider semantics and sibling routing unexplained. An output schema exists, so return values need not be described, but the remaining gaps are clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 ``account`` as a scoped read and ``refresh`` as a cache drop. It says nothing about ``provider`` and does not clarify what a null account means, leaving one of three parameters completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description calls the tool "Quota snapshots" but never states a clear retrieval verb or scope such as "returns GPU quota for an account/provider." It is identifiable as quota-related, but not clearly differentiated from siblings like l2kc_get_quota or gpu_refresh_quota.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains that ``account`` reads only that account and that ``refresh`` drops the cache, but gives no when-to-use guidance, exclusions, or routing to sibling tools such as gpu_refresh_quota. The agent must infer the invocation context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_list_accountsA
List accounts. Mock data are TEST FIXTURES, not a live account.
Credential values are not included. Quota exhaustion does not rotate to another account of the same provider.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose important traits: the data are mock TEST FIXTURES rather than live accounts, credential values are omitted, and quota exhaustion does not rotate to another account. It still omits explicit read-only/auth/rate-limit details, but adds substantial context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads 'List accounts' and follows with three short caveats; there is no boilerplate or repetition. The quota-rotation sentence is somewhat tangential, and line breaks are awkward, but the text remains compact and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with an output schema, the description needs mainly to clarify purpose and behavioral caveats, which it does. It is slightly incomplete because it does not explain the gpu_ versus l2kc_ provider distinction or when this account list should be preferred over its sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and schema description coverage is 100%, so there are no parameter semantics to document. The rubric baseline for a zero-parameter tool is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource with 'List accounts.' It is clear enough to distinguish this from job/quota/resource tools, but it does not differentiate this GPU account listing from the sibling l2kc_list_accounts or explain what account scope is being listed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance, prerequisites, or alternatives. It does not explain when an agent should call gpu_list_accounts instead of gpu_list_providers or l2kc_list_accounts, so the user must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_list_jobsB
List stored jobs. Mock data are TEST FIXTURES, not a live account.
This does not call a provider and does not submit. limit defaults to
50. Pass null to return every match.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| state | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description rightly spends effort on behavior: it warns that Mock data are TEST FIXTURES, not a live account, and that it makes no provider call or submission, so the agent knows it is side-effect free. It nonetheless omits pagination behavior and ordering of results, so it only partially covers the behavioral burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The mock-data warning is front-loaded in a short, direct sentence, followed by scoping notes. The text is compact and contains no filler, though the limit explanation is embedded somewhat awkwardly at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the test-fixture caveat is a valuable addition. Still, with 0% schema coverage, the unexplained `state` and `provider` filters leave the definition incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry all parameter meaning; it explains only `limit` (defaults to 50, null returns every match) and says nothing about `state` or `provider`. Two of the three parameters remain undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List stored jobs', which clearly distinguishes it from get_job_status, submit_job, and cancel_job. It does not name its direct sibling l2kc_list_jobs or otherwise disambiguate the duplicate toolset, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clarifies what this tool does NOT do, namely 'does not call a provider and does not submit', which is useful exclusion guidance. However, it gives no positive routing advice for when to use this versus gpu_list_accounts, gpu_get_job_status, or l2kc_list_jobs, so the guidance remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_list_providersB
List providers. Mock data are TEST FIXTURES, not a live account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does surface one genuinely non-obvious trait: the returned data are test fixtures rather than a live account, so an agent shouldn't present them as real infrastructure. It says nothing about auth requirements, whether the call is a pure read, or result ordering/pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action first and the important mock-data warning second; nothing is padded. It is terse to the point of thinness, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation isn't required, and the mock-data warning covers the biggest trap. Still, for a zero-param entry point into a provider/account/resource hierarchy, the description never explains what a provider is or how it relates to the account and resource listing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The schema is empty and fully described, and the description correctly implies no input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List providers" names a verb and resource, but it is essentially the tool name with the gpu_ prefix stripped and says nothing about scope or what a provider is. It also gives no basis for choosing it over the sibling l2kc_list_providers, which appears to do the same thing for the other backend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus l2kc_list_providers, gpu_list_accounts, or gpu_list_resources, all of which sit adjacent in the toolset. The mock-data note is a caveat about data provenance, not guidance on selecting the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_list_resourcesC
Accelerators. Memory is per GPU. Mock data are TEST FIXTURES, not a live account.
account lists that account only. There is no automatic rotation.
When quota publishes eligible_gpus, each row includes eligible.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does carry real behavioral context: the mock-data-as-test-fixtures caveat, per-account scoping, no automatic rotation, and the eligible field appearing when quota publishes eligible_gpus. That is genuinely useful, but it omits whether this is a pure read, auth requirements, and any pagination or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the lead word 'Accelerators.' is a weak, near-contentless front-load, and the remaining text is choppy sentence fragments with odd inline code formatting. Nothing is padded, but the ordering does not surface the most decision-relevant information first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but for a 2-parameter tool with zero annotation coverage the description leaves the `provider` parameter, the read-only nature, and the account-vs-provider relationship unspecified. Key gaps remain for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain both parameters. It addresses `account` (scope limited to that account) but says nothing about what `provider` filters or accepts, leaving half the parameters undocumented anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the bare noun 'Accelerators.' and never supplies an explicit verb like 'list' or 'enumerate available GPU/accelerator resources'. It hints at content ('Memory is per GPU') but does not differentiate itself from gpu_list_providers, gpu_list_accounts, or the parallel l2kc_list_resources sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a scoping rule ('``account`` lists that account only. There is no automatic rotation.'), but gives no guidance on when to choose this tool over gpu_list_accounts/providers or the l2kc variant. No exclusions, no prerequisites, no mention of how account vs provider interact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_recommend_backendA
Recommend a backend without submitting. Mock data are TEST FIXTURES, not a live account.
A premium GPU needs scheduler.allow_premium_gpu plus allow_premium.
Colab needs timeout_seconds so the CCU budget can be checked.
provider auto lets the scheduler choose. account pins that
account and does not rotate on quota. Per-GPU memory is never summed
across devices.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| gpu_type | No | ||
| high_mem | No | ||
| provider | No | auto | |
| gpu_count | No | ||
| allow_premium | No | ||
| timeout_seconds | No | ||
| min_gpu_memory_gb_per_gpu | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it does disclose meaningful traits: the call does not submit anything, and the returned mock data are test fixtures rather than a live account. It stops short of covering whether a recommendation reserves CCU budget or quota, what permissions must already be in place, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core statement and the mock-data caveat are front-loaded in the first two lines, followed by terse per-parameter notes with no filler. The tradeoff is that the notes are compressed to backticked config keys and read as jargon-heavy, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described, and the description covers the decision-relevant constraints for an 8-parameter recommendation call with zero annotation support. Remaining gaps (three undocumented params, no sibling differentiation) are real but secondary for a read-only recommendation endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 and it does so for about half the surface: account (pins and does not rotate on quota), provider=auto (scheduler chooses), timeout_seconds (drives the CCU budget check), allow_premium (gated by scheduler.allow_premium_gpu), and the per-GPU memory rule for min_gpu_memory_gb_per_gpu. gpu_type, high_mem, and gpu_count get no semantic explanation anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Recommend a backend without submitting" gives a specific verb, resource, and a key scope qualifier (dry-run preview, no job created), which separates it from gpu_submit_job. However, it never addresses the near-identical sibling l2kc_recommend_backend, so an agent facing both names has no stated basis for choosing between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives conditional guidance tied to parameters (premium GPUs need the scheduler flag plus allow_premium; Colab needs timeout_seconds), which implies usage contexts. But there is no explicit when-to-use versus when-not, no statement of prerequisites such as auth_status, and no routing against the l2kc twin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_reconcile_jobsA
Poll job status. Mock data are TEST FIXTURES, not a live account.
Omit job_ids to poll every active job, including UNKNOWN.
Reconcile never submits and never resubmits an ambiguous job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does real work: it warns that data are test fixtures, and explicitly guarantees the tool never submits and never resubmits an ambiguous job, which removes a serious misfire risk. It doesn't say whether reconciliation writes/persists updated statuses or how UNKNOWN jobs are resolved, leaving some side-effect ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines, front-loaded with the core action, with no filler. The mock-data caveat is somewhat awkwardly inserted between the action and the operating rules but costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described, and the negative guarantees cover the riskiest behavior. What's missing is whether the call mutates stored job records and any expectation about repeated polling, which matters for a reconcile verb.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter has no description, so the description carries the burden. It explains the omission/default behavior meaningfully, but says nothing about the expected ID format or how invalid or already-terminal IDs are handled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Poll job status') and the name plus 'Reconcile' framing distinguish it from the sibling gpu_get_job_status/gpu_list_jobs by implying batch synchronization of many jobs. It doesn't explicitly name those siblings as alternatives, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Omit job_ids to poll every active job, including UNKNOWN' gives a clear calling rule for the main decision point. However, it never says when to prefer this over gpu_get_job_status or gpu_list_jobs, so the agent must infer the routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_refresh_quotaB
Refresh quota snapshots. Mock data are TEST FIXTURES, not a live account.
Equivalent to gpu_get_quota(..., refresh=True).
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load; it does disclose an important caveat that mock data are test fixtures rather than a live account, which is genuinely useful behavioral context. However, it omits whether the call performs a network round-trip, hits rate limits, mutates cached state, or requires auth — all relevant for a refresh operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both front-loaded with the operative information and zero padding. The caveat and the sibling equivalence each earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and the mock-data caveat covers scope. What remains missing is guidance on the two undocumented filter parameters and on the cost/side effects of a refresh, making it only minimally adequate for a zero-annotation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the two optional parameters (account, provider), and the description says nothing about them — no expected identifier format, no statement of what happens when they are omitted (all accounts? default provider?). The description fails to compensate for the documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Refresh quota snapshots') and adds the equivalence to gpu_get_quota(..., refresh=True), which lets an agent distinguish it from the plain read sibling. It is not a tautology, but it never says what a 'quota snapshot' contains or what refreshing changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The equivalence note implies the selection rule (use this instead of gpu_get_quota when you want fresh data), but that is inferred rather than stated. There is no explicit when-to-use / when-not-to-use sentence or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gpu_submit_jobA
Submit a script. Mock data are TEST FIXTURES, not a live account.
provider auto asks the scheduler to choose. A premium GPU needs
scheduler.allow_premium_gpu plus allow_premium. high_mem maps
to Colab --high-mem (CPU/T4/A100/H100/G4; not L4/TPU) and does not
bypass premium guards. Colab needs
timeout_seconds so the CCU budget can be checked. Real jobs also
require mode: real and allow_real_jobs. idempotency_key returns
the existing job instead of submitting again when the spec matches. A
different spec is an invalid-input error. deduplicated is true when
the existing job is returned. An ambiguous submit is not resubmitted.
account pins that account. Quota exhaustion does not rotate to
another account. dry_run recommends a backend and does not submit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| account | No | ||
| dry_run | No | ||
| gpu_type | No | ||
| high_mem | No | ||
| provider | No | auto | |
| gpu_count | No | ||
| script_path | Yes | ||
| allow_premium | No | ||
| idempotency_key | No | ||
| timeout_seconds | No | ||
| min_gpu_memory_gb_per_gpu | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral-disclosure burden and does a strong job on idempotency, deduplication, ambiguous submits not being resubmitted, account pinning, quota exhaustion not rotating accounts, premium guards, and `dry_run` not submitting. It still leaves some gaps around failure modes, authorization requirements, and side effects, and it references `mode` and `allow_real_jobs` even though those are not in the input schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence and most of the dense content is relevant to a complex 12-parameter submission tool. The single-paragraph format is less scannable than it could be, but there is little outright fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is behaviorally rich for a tool with no annotations and 0% schema description coverage, and the output schema means return values need not be explained in detail. However, it does not fully document the 12 input parameters and introduces parameters (`mode`, `allow_real_jobs`) that are absent from the schema, leaving an agent with ambiguity about what can actually be supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for all 12 parameters. It adds meaningful semantics for `provider`, `high_mem`, `timeout_seconds`, `idempotency_key`, `account`, `dry_run`, and partially `allow_premium`, but it leaves `name`, `gpu_type`, `gpu_count`, `script_path`, and `min_gpu_memory_gb_per_gpu` unexplained while also mentioning schema-absent fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Submit a script." That is clear enough for an agent to understand the core operation, but it never distinguishes this tool from the sibling `l2kc_submit_job` or explicitly scopes it as the GPU submission tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful conditional guidance around `dry_run`, premium GPUs, Colab timeouts, and real jobs, which implies when certain options apply. However, it never states when to choose this tool over `l2kc_submit_job`, `gpu_recommend_backend`, or other siblings, and it provides no explicit 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.
l2kc_auth_statusC
Auth snapshots. Mock data are TEST FIXTURES, not a live account.
account reads that account only. There is no automatic rotation.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two useful traits: results are mock fixtures rather than live credentials, and there is no automatic rotation. It does not say what a snapshot contains, whether the call is a read-only probe, or how missing/expired auth is surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the resource and followed immediately by the fixture caveat. No padding, though the backticked parameter fragment is slightly cryptic in isolation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described, which lowers the bar. Still, for an auth-status tool the description omits what providers are valid, what state values mean, and how this differs from gpu_auth_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description must compensate. It clarifies that ``account`` restricts the read to one account, but ``provider`` is never mentioned, leaving half the parameters undocumented in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Auth snapshots" names the resource but uses a noun phrase with no verb, so the agent must infer this reports authentication/credential status. No differentiation from the sibling gpu_auth_status, which appears to do the same thing for another backend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The text explains scoping (``account`` reads that account only, no automatic rotation) but never states when to call this tool versus l2kc_list_accounts, l2kc_doctor, or gpu_auth_status. No exclusions or alternatives are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_cancel_jobB
Cancel a job. Mock data are TEST FIXTURES, not a live account.
Kaggle's official CLI cannot cancel a running kernel.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two useful traits: the data are fixtures rather than a live account, and the official Kaggle CLI cannot cancel a running kernel. It still omits what happens on cancel (job state afterward, reversibility, permission/auth requirements, error behavior for invalid job_id).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action in three words, then the caveats. Tight overall; the Kaggle-CLI sentence is borderline tangential but does justify why this tool exists, so it largely earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. But for a mutation-style tool with no annotations and an undocumented parameter, the description leaves out consequences of cancellation and how job_id is obtained, so it is only minimally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter job_id has 0% schema description coverage and the description says nothing about it — no format, no indication that it comes from l2kc_submit_job or l2kc_list_jobs. The description therefore fails to compensate for the schema gap on the only parameter that matters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource ("Cancel a job"), so the operation is unambiguous. However, the sibling list contains gpu_cancel_job, and the description never explains why an agent would pick l2kc_cancel_job over it; the Kaggle CLI remark hints at a difference without stating it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Mock data are TEST FIXTURES, not a live account" implies the tool is for exercising a test/demo environment and warns against trusting results as live, which is real usage context. But there is no explicit when-to-use, when-not-to-use, or named alternative (gpu_cancel_job), so the guidance stays implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_doctorC
Local doctor report. Mock data are TEST FIXTURES, not a live account.
Does not execute kaggle or colab. CLI presence is shutil.which.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does carry useful behavioral disclosures: it clarifies that mock data are test fixtures rather than a live account, that it does not shell out to kaggle or colab, and that CLI detection uses shutil.which. These are meaningful for interpreting results, but it omits what checks are run and whether the tool has any 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler and no repetition. The only structural weakness is that caveats about fixtures and non-execution come before any substantive statement of what the report actually contains.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the zero-parameter surface is trivial. What is still missing is the scope of the diagnostic itself — an agent cannot tell from the description what problems this tool will surface compared to the richer sibling gpu_doctor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. The description does not need to explain inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Local doctor report" largely restates the tool name (doctor) rather than describing what the report covers — environment? credentials? CLI availability? It adds the "local" scope but never names the checks performed, and gives no basis for distinguishing it from the sibling gpu_doctor or l2kc_auth_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to run this versus gpu_doctor, l2kc_auth_status, or l2kc_refresh_quota, nor any prerequisite or typical first-step guidance. A diagnostics tool conventionally implies troubleshooting, but nothing in the text confirms or directs that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_download_artifactsC
Download artifacts under artifact_root. Mock data are TEST FIXTURES.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| dest_dir | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral-disclosure burden. It notes that mock data are test fixtures, which is a useful caveat, but it does not disclose whether downloads overwrite files in `dest_dir`, what permissions are required, how conflicts are handled, or any 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loads the action, but the two sentences are cryptic rather than efficiently informative. The fixture warning is useful, yet the overall structure leaves key operational details absent rather than concisely explained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a required `job_id`, an optional destination directory, and no annotations, the description is incomplete. The output schema may cover return values, but the description does not explain how to invoke the tool correctly, what `job_id` identifies, or how `dest_dir` affects behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, but it does not meaningfully explain either parameter. `job_id` is required yet entirely undocumented, and `dest_dir` is not mentioned at all; the description's reference to ``artifact_root`` is not a parameter name and does not clarify the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Download artifacts under ``artifact_root``.' This is clear enough for an agent to understand the basic action, but it does not distinguish this tool from its obvious sibling `gpu_download_artifacts`, leaving ambiguity when both are available.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus `gpu_download_artifacts` or other siblings, nor any prerequisites such as authentication or job completion state. The only usage-adjacent statement is that mock data are test fixtures, which does not help select between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_get_job_logsC
Tail of the job log. Mock data are TEST FIXTURES, not a live account.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden and mostly doesn't: no statement that it is read-only, no auth or rate-limit notes, no explanation of truncation. The one genuinely useful disclosure is the warning that returned data are test fixtures rather than a live account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, but the second sentence is a data-provenance caution rather than core tool information, and the whole thing is too sparse to be structurally complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be described, but with zero annotation coverage and zero parameter documentation, an agent still lacks the essentials: is this read-only, what job_id is valid, and what max_chars does in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so both job_id and max_chars need explanation, but neither is covered. 'Tail' vaguely implies truncation yet the description never ties max_chars to how much log is returned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete operation and resource: fetching the tail of a job's log. The mock-data sentence implicitly distinguishes this l2kc_ variant from the gpu_ counterpart, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this instead of gpu_get_job_logs, nor prerequisites such as needing a valid job_id from l2kc_list_jobs. The test-fixture note hints at the context but does not phrase it as a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_get_job_statusC
Job state. Mock data are TEST FIXTURES, not a live account.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It warns that mock data are test fixtures, which is valuable, but says nothing about read-only behavior, authentication, rate limits, or what state values may be returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loads the caveat about mock data. However, the first sentence is too terse to function as a useful purpose statement, making the brevity under-specification rather than efficient conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Still, for a job-status lookup with one required parameter and multiple similar siblings, the description is missing basic routing and parameter context needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for the undocumented job_id parameter, but it does not explain expected format, source, or constraints. The single required parameter is only minimally inferable from its name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Job state" only gestures at the resource and omits a specific verb such as retrieve or get. It is close to restating the tool name and does not distinguish this tool from gpu_get_job_status or other job-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus siblings such as l2kc_list_jobs, l2kc_get_job_logs, or gpu_get_job_status. The mock-data caveat is useful but is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_get_quotaC
Quota snapshots. Mock data are TEST FIXTURES, not a live account.
account reads that account only. There is no automatic rotation.
refresh drops the per-account quota cache entry before reading.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| refresh | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load; it does disclose two useful traits: mock data are test fixtures rather than live account data, and refresh invalidates the per-account quota cache before reading. It omits other relevant traits (read-only nature, auth/permission needs, failure modes when account or provider is unknown).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, and the test-fixture warning is placed early where it matters. However the leaked RST double-backtick markup and the fragment opening ("Quota snapshots.") make it read as documentation spillover rather than agent-facing guidance, and the sentence order puts the no-rotation note before the parameter it refers to.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the caching and mock-data caveats are covered. Still, for a 3-parameter tool in a duplicated gpu_/l2kc_ namespace, the missing provider semantics and the absent routing guidance versus l2kc_refresh_quota leave an agent guessing on a core selection decision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only source of parameter meaning. It explains `account` (scoped read, no rotation) and `refresh` (cache eviction) but is silent on `provider` entirely, and gives no format hint for account/provider (name vs. id). Partial compensation only, with a full parameter left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Quota snapshots" names the resource but supplies no verb and no scope statement, so an agent must infer that this reads quota for an account/provider. It also never distinguishes itself from the near-identical sibling gpu_get_quota, nor from l2kc_refresh_quota / gpu_refresh_quota even though it internally performs a refresh via a parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"There is no automatic rotation" and "``account`` reads that account only" hint that a caller should pass an explicit account, but there is no explicit when-to-use guidance. Critically, the description never says when to set refresh=true here versus calling the dedicated l2kc_refresh_quota sibling, leaving a real selection ambiguity among listed alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_list_accountsB
List accounts. Mock data are TEST FIXTURES, not a live account.
Credential values are not included. Quota exhaustion does not rotate to another account of the same provider.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the whole burden. It does add real behavioral context: data is mock/test fixtures rather than live accounts, credentials are omitted from the output, and quota exhaustion does not fail over to another account of the same provider. It says nothing about pagination, ordering, or whether the call is side-effect free.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded in the first clause and the caveats follow in short, waste-free sentences. The fixture sentence is slightly awkwardly phrased but earns its place by disambiguating the mock nature of the data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required, and a zero-param list tool is simple. However, given 28 similarly named sibling tools, the description omits the one thing an agent most needs here: how this differs from gpu_list_accounts and when to pick each.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so there is nothing to clarify; baseline 4 applies. The description correctly implies the tool takes no filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List accounts"), so the basic action is unambiguous. But with 28 siblings including gpu_list_accounts, it never explains what distinguishes the l2kc variant (mock/test-fixture accounts) from the gpu one, leaving the agent to guess which to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this tool, when not to, or which sibling to prefer. The test-fixture caveat hints at a mock context but is not framed as a usage rule and no alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_list_jobsA
List stored jobs. Mock data are TEST FIXTURES, not a live account.
This does not call a provider and does not submit. limit defaults to
50. Pass null to return every match.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| state | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and usefully discloses that the data are mock test fixtures, no provider call occurs, and no submission happens. It also states the limit default and null behavior. It stops short of explicitly declaring read-only semantics or describing filter behavior, but the key operational caveats are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose, then adds the essential fixture/no-provider/no-submit caveats, then explains limit behavior. Every sentence contributes useful information, and there is no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. The description covers the crucial mock-data caveat and limit behavior, but it omits meaning for the state and provider filters in a schema with zero parameter descriptions. That leaves clear gaps for correct invocation, though the tool remains minimally usable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 limit parameter (default 50, null returns every match) and leaves state and provider entirely unexplained, so two of three parameters remain semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List stored jobs.' It also scopes the data source as mock/test fixtures and says it does not call a provider or submit, which separates it from provider-backed or submission tools. It does not explicitly name a sibling such as gpu_list_jobs, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage boundary by stating the data are test fixtures, not a live account, and that the tool does not call a provider or submit. However, it does not explicitly say when to use this instead of alternatives such as gpu_list_jobs or l2kc_list_jobs, leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_list_providersB
List providers. Mock data are TEST FIXTURES, not a live account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a meaningful behavioral trait — that returned mock data are test fixtures rather than a live account — but says nothing about read-only safety, error behavior, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and the fixture caveat immediately after. The second sentence is a fragment and slightly awkward, but no content is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values needn't be explained, and there are no params to document. However, with no annotations at all, the description leaves out the read-only safety profile and expected failure modes an agent would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema fully covers the input surface. The description correctly implies a no-argument, unfiltered listing without contradicting the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List providers'), so the agent knows exactly what it does. It does not differentiate from the near-identical sibling gpu_list_providers; only the name prefix hints at the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus gpu_list_providers or l2kc_list_accounts. The only extra sentence is a data-authenticity caveat, not usage guidance or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_list_resourcesC
Accelerators. Memory is per GPU. Mock data are TEST FIXTURES, not a live account.
account lists that account only. There is no automatic rotation.
When quota publishes eligible_gpus, each row includes eligible.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It discloses that mock data are test fixtures and that there is no automatic rotation, which is useful, but it omits permissions, rate limits, and the read-only nature of a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but poorly structured; it leads with a noun fragment rather than a purpose statement and jumps between mock-data warnings, filtering behavior, and output details without logical flow. It is concise but not front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple two-parameter list tool with an output schema, the description should at least clarify purpose and both parameters. It provides some behavioral notes but leaves the core purpose and the provider parameter unexplained, so an agent would have to infer too much.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain both parameters. It mentions that ``account`` lists only that account, adding some meaning, but says nothing about the ``provider`` parameter, leaving half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Accelerators' and 'Memory is per GPU,' which are nouns and facts but not a verb+resource statement of what the tool does. It never says it lists GPU resources or how it differs from sibling gpu_list_resources, leaving the purpose vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 the many list_* siblings. The notes about account filtering and no rotation are behavioral, not usage conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_recommend_backendA
Recommend a backend without submitting. Mock data are TEST FIXTURES, not a live account.
A premium GPU needs scheduler.allow_premium_gpu plus allow_premium.
Colab needs timeout_seconds so the CCU budget can be checked.
provider auto lets the scheduler choose. account pins that
account and does not rotate on quota. Per-GPU memory is never summed
across devices.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| gpu_type | No | ||
| high_mem | No | ||
| provider | No | auto | |
| gpu_count | No | ||
| allow_premium | No | ||
| timeout_seconds | No | ||
| min_gpu_memory_gb_per_gpu | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does useful work by disclosing that mock data are test fixtures, explaining premium GPU preconditions, Colab timeout/CCU budgeting, and that account pinning does not rotate on quota. It still lacks broader behavioral details such as permissions or side effects, but covers the domain-specific behavior well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the core action. Each sentence carries a domain rule, though some phrasing is terse enough to feel cryptic, such as 'A premium GPU needs scheduler.allow_premium_gpu plus allow_premium.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters with 0% schema description coverage and no annotations, and an output schema exists so return values need not be described. The description covers key behavior and some parameters, but half the parameters lack any explanatory context, leaving notable gaps for an agent to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for all 8 parameters. It adds meaningful semantics for provider, account, allow_premium, and timeout_seconds, but leaves gpu_type, gpu_count, high_mem, and min_gpu_memory_gb_per_gpu unexplained except for a brief note about per-GPU memory not being summed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states the action and resource: recommend a backend without submitting. It differentiates from the submit-job sibling by saying 'without submitting', though it does not name that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without submitting' implies this is a pre-flight/dry-run step before gpu_submit_job, but there is no explicit when-to-use/when-not-to-use guidance or named alternative. The domain rules are usage hints, not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_reconcile_jobsA
Poll job status. Mock data are TEST FIXTURES, not a live account.
Omit job_ids to poll every active job, including UNKNOWN.
Reconcile never submits and never resubmits an ambiguous job.
| Name | Required | Description | Default |
|---|---|---|---|
| job_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does add real behavior: it never submits or resubmits ambiguous jobs, and mock data are test fixtures rather than a live account. It omits polling cadence, whether it blocks/waits, rate limits, and error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the verb phrase, and the test-fixture caveat is prominent. The ordering is slightly choppy (mock notice interrupts the operational semantics) but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described, and the description covers the two things an agent needs to know: the wildcard behavior and the no-resubmit guarantee. Some gaps remain around polling/blocking behavior, but the definition is sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the tool has only one optional parameter, so the description's explanation of the omit-``job_ids`` case covers the important semantic. It still doesn't clarify what happens when a specific list is passed (e.g., unknown or terminal IDs) or the expected ID format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Poll job status'), and the reconcile semantics (never submits/resubmits ambiguous jobs) distinguish it from a plain status getter. It doesn't explicitly name gpu_get_job_status or l2kc_list_jobs, so the sibling boundary is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete selection rule: omit ``job_ids`` to poll every active job, including ``UNKNOWN``. That tells the agent when this bulk mode applies, though it never explicitly contrasts with the singular get_job_status sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_refresh_quotaB
Refresh quota snapshots. Mock data are TEST FIXTURES, not a live account.
Equivalent to gpu_get_quota(..., refresh=True).
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure, and it does flag that mock data are test fixtures rather than a live account — genuinely useful context. However it never says what 'refresh' actually does (network call? cache invalidation? side effects?), whether it is rate limited, or whether the snapshot is persisted, leaving the mutation semantics opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action followed by the important caveat. No filler or repetition; sizing is appropriate, though the second sentence's format is slightly reference-doc flavored.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. Still, for a two-parameter, no-annotation tool the description omits parameter meaning and refresh behavior, leaving real gaps an agent would face when deciding how to call it and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both parameters ('account' and 'provider', both nullable with defaults) are entirely undocumented in the schema. The description adds no information about what these parameters mean, their format, or what omitting them does, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Refresh quota snapshots') and distinguishes itself from the sibling gpu_get_quota by noting it is equivalent to that call with refresh=True. It is clear what the tool does, though 'snapshots' and 'quota' scope (account/provider) are not elaborated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The equivalence note to gpu_get_quota(..., refresh=True) implies when this tool is relevant, but it does not explicitly say when to call it versus plain gpu_get_quota, nor any prerequisites (auth required, per-account scoping). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l2kc_submit_jobB
Submit a script. Mock data are TEST FIXTURES, not a live account.
provider auto asks the scheduler to choose. A premium GPU needs
scheduler.allow_premium_gpu plus allow_premium. high_mem maps
to Colab --high-mem (CPU/T4/A100/H100/G4; not L4/TPU) and does not
bypass premium guards. Colab needs
timeout_seconds so the CCU budget can be checked. Real jobs also
require mode: real and allow_real_jobs. idempotency_key returns
the existing job instead of submitting again when the spec matches. A
different spec is an invalid-input error. deduplicated is true when
the existing job is returned. An ambiguous submit is not resubmitted.
account pins that account. Quota exhaustion does not rotate to
another account. dry_run recommends a backend and does not submit.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| account | No | ||
| dry_run | No | ||
| gpu_type | No | ||
| high_mem | No | ||
| provider | No | auto | |
| gpu_count | No | ||
| script_path | Yes | ||
| allow_premium | No | ||
| idempotency_key | No | ||
| timeout_seconds | No | ||
| min_gpu_memory_gb_per_gpu | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it warns that mock data are test fixtures, states dry_run does not submit, discloses that idempotency_key returns the existing job with deduplicated=true, that a mismatched spec is an invalid-input error, and that an ambiguous submit is not resubmitted. Gaps remain — no mention of auth requirements or what happens to an already-queued job — which keeps this from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The fixture caveat is usefully front-loaded, but the body is a stream of telegraphic, backticked fragments with no grouping by concern (provider, memory, idempotency, quota). Every clause is substantive, yet the lack of structure makes it slower to extract the actionable rules than a short ordered list would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with no annotations, the description covers scheduling behavior reasonably well, and an output schema exists so return values need not be explained. Still, several parameters and the auth/precondition story are undocumented, and the reference to non-schema fields suggests the description is describing a broader spec than this tool's schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 12 parameters, so the description must compensate. It explains provider=auto, high_mem mapping, timeout_seconds' role in CCU budgeting, idempotency_key, account pinning, dry_run and allow_premium, but leaves name, gpu_count, script_path, gpu_type and min_gpu_memory_gb_per_gpu undefined. It also references `mode: real` and `allow_real_jobs`, which do not exist in the schema, adding confusion rather than clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Submit a script" gives a verb and an object, but the object is under-described — nothing says it submits a GPU/compute job to a scheduler, which the rest of the text only implies. There is a twin sibling, gpu_submit_job, and the description never distinguishes this tool from it, nor from l2kc_recommend_backend even though it mentions dry_run recommends a backend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage conditions are implied through parameter-level rules (premium GPU needs allow_premium, Colab needs timeout_seconds, real jobs need mode: real), but there is no explicit "use this when / use X instead" routing and no exclusions. An agent must infer the workflow from caveats rather than being told where this tool sits relative to list/get/cancel/recommend siblings.
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.
30 tool updates
v1.0.0- First observed
gpu_auth_status - First observed
gpu_cancel_job - First observed
gpu_doctor - First observed
gpu_download_artifacts - First observed
gpu_get_job_logs - First observed
gpu_get_job_status - First observed
gpu_get_quota - First observed
gpu_list_accounts - First observed
gpu_list_jobs - First observed
gpu_list_providers - First observed
gpu_list_resources - First observed
gpu_recommend_backend - First observed
gpu_reconcile_jobs - First observed
gpu_refresh_quota - First observed
gpu_submit_job - First observed
l2kc_auth_status - First observed
l2kc_cancel_job - First observed
l2kc_doctor - First observed
l2kc_download_artifacts - First observed
l2kc_get_job_logs - First observed
l2kc_get_job_status - First observed
l2kc_get_quota - First observed
l2kc_list_accounts - First observed
l2kc_list_jobs - First observed
l2kc_list_providers - First observed
l2kc_list_resources - First observed
l2kc_recommend_backend - First observed
l2kc_reconcile_jobs - First observed
l2kc_refresh_quota - First observed
l2kc_submit_job
TDQS
Scored across 30 tools
Every tool has an exact duplicate under a different prefix (gpu_ vs l2kc_), with identical descriptions. An agent cannot determine which of the two identical-looking tools to call, making the set highly ambiguous despite unique underlying functions.
Within each prefix, tools follow a clear verb_noun pattern (list_providers, submit_job, get_job_status). However, maintaining two parallel prefixes for identical functionality creates an inconsistent naming scheme that is readable but confusing.
30 tools is too many for the apparent scope, especially since half are duplicates. There are only about 15 unique operations, so the effective surface is reasonable but inflated to 30 by aliases.
The tool surface covers provider/account/auth/quota listing, resource listing, job submission, status, logs, artifacts, cancellation, listing, reconciliation, backend recommendation, and doctor checks. Minor gaps like direct job deletion or detail retrieval may exist, but core lifecycle operations are present.
Maintenance
Related MCP Connectors
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
LLM cost optimization gateway, repo token-waste auditor & model arbitrage MCP server.
Related MCP Servers
- AlicenseBqualityDmaintenanceLocal-first MCP server for controlling Google Colab as a development, shell, file, and training runtime, with tools for notebook editing, GPU acceleration, and file transfer.598Apache 2.0
- AlicenseAqualityDmaintenanceMCP server that allocates Google Colab GPU runtimes (T4/L4) and executes Python code on them. Lets any MCP-compatible AI assistant run GPU-accelerated code without local GPU hardware.39MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for executing Python code on CoCalc cloud projects. It enables any MCP-compatible assistant to run Python and machine-learning workloads remotely on CoCalc infrastructure without local GPU requirements.MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI agents and CLI users to drive Kaggle notebooks end-to-end—pull, edit, save new versions, run, monitor, and fetch logs—using a local stdio MCP server with a Kaggle API token.MIT