Skip to main content
Glama
MOT1209

Google Colab MCP Server

by MOT1209

Google Colab MCP Server

A standalone, framework-agnostic, production-grade Model Context Protocol server that lets any MCP-compatible AI agent or application control Google Colab — or any Jupyter-compatible runtime — as an execution environment: run code, manage notebooks, install packages, inspect GPU/CPU/RAM/disk, run training jobs, manage datasets and environment profiles, and track artifacts.

Any AI Agent (KingAgent, Claude, Cursor, VS Code, a custom agent, ...)
      │
      │  MCP (stdio / SSE)
      ▼
Google Colab MCP Server   ←—— this repository
      │
      ▼
Runtime Manager  →  Runtime Provider  →  Execution Backend
      │
      ▼
Google Colab (verified) / local Jupyter / remote Jupyter / Docker

This server has no dependency on any specific agent or framework — not KingAgent, not Claude, not LangChain, CrewAI, AutoGen, or OpenAI Agents. You can plug it into any of them without modifying this codebase.

Google Colab is a first-class, verified provider

Colab has no public API for arbitrary remote execution; the only documented path in is the Jupyter kernel protocol. Because a generic Jupyter kernel and a real Colab kernel speak that same protocol, this server actively verifies — after connecting — that a session created with provider: "colab" is genuinely running on Colab (checking for google.colab/Colab environment markers) and refuses the connection otherwise, rather than silently treating any Jupyter kernel as "Colab" the way most projects in this space do. See docs/COLAB.md.

Related MCP server: colab-mcp

Features

  • 59 MCP tools across runtime/session management, code execution, notebooks, files, packages/environments, GPU/hardware introspection, ML training, datasets, and jobs/artifacts.

  • 7 MCP resources: colab://runtime, colab://sessions, colab://jobs, colab://notebooks, colab://artifacts, colab://environments, colab://datasets.

  • RuntimeProvider abstractioncolab, local_jupyter, remote_jupyter, docker — with a documented, honest lifecycle (discovering → connecting → authenticating → initializing → ready → running/idle → disconnected/failed/reconnecting) and a background health monitor with bounded auto-reconnect.

  • Async job engine (queued/starting/running/paused/completed/ failed/cancelled/timeout) with structured metrics, and each job tracks the session/runtime it ran on.

  • Environment & dataset management: package install/list/export, reusable EnvironmentProfiles, and a checksummed, versioned dataset store with http(s):// caching.

  • Multi-method GPU detection (nvidia-smi, pynvml, torch, TensorFlow) — not dependent on any one ML framework being installed.

  • Security layer: auth, per-tool and per-session allow/deny lists, a dangerous-tool confirmation policy, path sandboxing (locally and inside the runtime), output/file size limits, rate limiting, timeouts, secret redaction, and audit logging.

  • Structured errors with a retryable flag and provider/network/ auth-specific categories — never a raw crash.

  • No framework lock-in on the Colab side either: whatever ML framework your code imports (PyTorch, TensorFlow, Transformers, scikit-learn, XGBoost, ...) runs inside the target runtime — this server doesn't impose one.

Quick start

python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

# Local kernel for dev/testing (no real Colab connection needed):
pip install ipykernel
python3 -m ipykernel install --user --name python3

cp .env.example .env
google-colab-mcp

Try it with the included example client:

python examples/example_client.py

Connect a real MCP client (any of them) by pointing it at the google-colab-mcp command — see config/mcp_client_example.json, docs/SETUP.md, and docs/COLAB.md for how to attach to a real, verified Colab runtime.

Example: an agent using this server

Agent: "Run this code in Colab and use a GPU if one is available."
  → colab_create_session (provider: "colab")
  → colab_get_runtime / colab_get_gpu   # is a GPU present?
  → colab_execute_code                  # run the code (device chosen accordingly)
  → colab_run_training / colab_get_job  # if it was a long training run instead

Documentation

Testing

pytest -q

121 tests (unit + real end-to-end execution against a locally-launched Jupyter kernel, skipped automatically if none is available), including a dedicated test proving a plain Jupyter kernel is correctly rejected when requested as provider: "colab".

License

MIT — see LICENSE.

Available Tools

40 tools
colab_add_cellB

Add a single cell to a notebook, at an index or appended to the end.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
indexNo
sourceYes
cell_typeNocode

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral consequences itself. 'Add' implies mutation, and the placement wording gives a little context, but it does not explain insertion semantics (e.g., shifting existing cells), side effects, required permissions, or error/return behavior.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no padding. It earns its place, though it is concise partly because it leaves out important behavioral and parameter context.

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

Completeness2/5

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

For a mutation tool with four parameters, no annotations, and no output schema, this one-sentence description is incomplete. An agent still lacks essential input semantics, side effects, and what the call returns or how failures surface.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the parameters. It only clarifies the index/append behavior; path and source are completely undocumented, and cell_type's meaning/default is left to the schema. This is very partial compensation.

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

Purpose5/5

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

The description names a specific action ('Add'), a specific resource ('a cell to a notebook'), and the placement options ('at an index or appended to the end'). It is easy to tell apart from sibling tools that edit, delete, or execute cells.

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

Usage Guidelines3/5

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

The placement options imply this is the tool for inserting a new cell, but the description never says when to choose it over edit_cell, delete_cell, or update_notebook. There is no explicit alternative guidance or exclusionary conditions.

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

colab_cancel_jobB

Request cancellation of a running or queued job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. 'Request cancellation' suggests an asynchronous action but does not mention side effects, reversibility, error handling, or whether the operation is idempotent. For a destructive operation, this is insufficient.

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

Conciseness5/5

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

The description is a single, direct sentence with no unnecessary words. It front-loads the action and target, making it easy to scan.

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

Completeness3/5

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

The tool is simple with one parameter, but the description lacks information about response behavior, asynchronous semantics, or failure conditions. Given no output schema and no annotations, these gaps are notable but not critical for a basic cancel operation.

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

Parameters2/5

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

Schema coverage is 0% and the description does not mention job_id at all. Although job_id is self-explanatory, the description adds no meaning beyond the schema field name. With zero coverage, it should at least clarify the parameter's role.

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

Purpose5/5

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

The description states a clear verb ('cancel') and resource ('job'), and specifies the target state ('running or queued'). This distinguishes it from sibling cancellation tools like colab_stop_execution and colab_stop_training, which target different resources.

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

Usage Guidelines3/5

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

The description implies usage for canceling jobs but does not explicitly contrast with alternative tools (e.g., stop_execution, stop_training) or state when this tool should not be used. It gives context but lacks explicit exclusions.

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

colab_create_directoryA

Create a directory (and parents) in the runtime's sandboxed workspace. Path is relative to the runtime's sandboxed workspace (e.g. /content/mcp_workspace).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
session_idNo

TDQS

A3.5/5.0
Behavior3/5

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 does disclose useful behavior: it creates parent directories and treats the path as relative to the sandboxed workspace. But it omits what happens if the directory already exists, whether it is idempotent, and what the response is.

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

Conciseness5/5

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

The description is two sentences, front-loads the action and resource, and uses a concrete example to clarify path behavior. Every sentence contributes useful information without wasted words.

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

Completeness2/5

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

Given two parameters, 0% schema coverage, no annotations, and no output schema, the description is not complete enough. The missing semantics for 'session_id' are a notable gap, and there is no guidance about return values or failure behavior. The path handling is well covered, but overall invocation still leaves important unknowns.

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

Parameters2/5

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

The schema has 0% description coverage, so the description must explain the parameters. It does explain 'path' well by noting it is relative and giving an example. However, the 'session_id' parameter is entirely undocumented, leaving agents to guess whether it is required, what it selects, or how it relates to sessions.

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

Purpose5/5

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

The description uses a specific verb and resource ('Create a directory') and adds parent-directory creation, making the core operation unambiguous. It also scopes the action to the runtime's sandboxed workspace, which separates it from notebook, file, and session-related siblings.

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

Usage Guidelines3/5

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

The description clearly implies use when a directory is needed in the sandboxed workspace, and the relative-path example helps clarify how to invoke it. However, it does not explicitly state when not to use it or mention alternatives, leaving the usage guidance mostly implicit.

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

colab_create_notebookA

Create a new, empty .ipynb notebook inside the sandboxed workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesNotebook path, relative to the workspace root.
kernel_nameNopython3

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It discloses that the created notebook is new and empty, which is useful, but it does not mention behavior on existing paths, parent directory creation, or success/failure signals.

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

Conciseness5/5

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

The description is a single clear sentence with no filler. It front-loads the core purpose and includes the key qualifier 'empty' and the workspace constraint without redundancy.

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

Completeness3/5

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

For a simple creation tool with two parameters and no output schema, the description is mostly adequate, but it leaves gaps: no mention of what happens if the path already exists, no clarification of how kernel_name is used, and no guidance on prerequisites. These are relevant for reliable invocation.

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

Parameters2/5

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

Schema description coverage is only 50%: the 'path' parameter is described in the schema, but 'kernel_name' has no description beyond its default value. The tool description does not compensate by explaining kernel_name or elaborating on path semantics beyond what the schema already says.

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

Purpose5/5

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

The description clearly states a specific action ('Create'), a specific resource ('a new, empty .ipynb notebook'), and a location ('inside the sandboxed workspace'). This distinguishes it from siblings like colab_get_notebook and colab_update_notebook, which operate on existing notebooks.

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

Usage Guidelines3/5

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

The description implies when to use this tool: when a new empty notebook needs to be created in the sandbox. However, it does not explicitly explain when not to use it or mention alternatives like colab_update_notebook for modifying an existing notebook.

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

colab_create_sessionB

Open a new runtime session (a Colab/Jupyter kernel connection). Omit connection_file to launch a local kernel.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNodefault
connection_fileNoPath to a Jupyter kernel connection file to attach to.

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only says it opens a new runtime session and mentions the connection_file behavior. It does not disclose side effects, whether the session persists, how to stop it, or resource implications. The description is largely a restatement of the tool's name plus a parameter hint.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the core purpose and followed by the key parameter behavior. There is no filler or redundant text, so every sentence earns its place.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description should cover what happens when the session is created, what is returned, and any lifecycle considerations. It only covers the act of opening a session and the local-kernel option, leaving the agent to guess about return values and session management.

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

Parameters3/5

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

Schema coverage is 50%: connection_file has a schema description, while label does not. The description adds value for connection_file by explaining that omitting it launches a local kernel, which goes beyond the schema. However, it does not explain the purpose of label, leaving that parameter's semantics incomplete.

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

Purpose5/5

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

The description clearly states a specific action—opening a new runtime session—and clarifies that a runtime session is a Colab/Jupyter kernel connection. It differentiates from sibling tools like colab_create_notebook and colab_restart_runtime by emphasizing 'new' and the kernel-connection nature. The clause about omitting connection_file further refines the tool's distinct behavior.

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

Usage Guidelines3/5

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

The description gives a usage hint: 'Omit connection_file to launch a local kernel,' which implies when to use the attach vs. local-kernel path. However, it does not explicitly state when to prefer this tool over alternatives such as restart_runtime or get_runtime, nor does it provide exclusions. Usage guidance is present but mostly implicit.

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

colab_delete_cellC

Delete one cell by index.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
indexYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It only restates the name and adds the index mechanism. It does not mention whether deletion is permanent, what happens if the index is out of bounds, whether the operation requires write permissions, or any side effects on the notebook. The destructive nature is implied but not elaborated.

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

Conciseness4/5

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

The description is one short sentence that gets straight to the point. It contains no filler and is easy to parse, though it may be too terse to be fully informative.

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

Completeness2/5

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

For a tool with two required parameters and no annotations or output schema, the description is incomplete: it fails to define what 'path' refers to, does not mention error handling, and does not clarify the scope of deletion. An agent would need to infer path semantics from the parameter name alone.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It clarifies that 'index' is the cell index, but it does not explain 'path' (presumably the notebook path) or any constraints. The description adds minimal value over the raw schema property names.

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

Purpose5/5

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

The description uses a specific verb ('Delete') and resource ('cell') and identifies the selection mechanism ('by index'). It clearly distinguishes from sibling tools like colab_add_cell, colab_edit_cell, and colab_execute_cell.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool over alternatives, no prerequisites (e.g., notebook must exist), and no conditions under which deletion is appropriate. It simply states the action.

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

colab_delete_fileA

Delete a file or directory (recursively) in the runtime's sandboxed workspace. Path is relative to the runtime's sandboxed workspace (e.g. /content/mcp_workspace).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
session_idNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It adds useful context by noting recursive deletion and that the path is relative to the sandboxed workspace. However, it does not explicitly warn that deletion is permanent/irreversible, describe behavior for nonexistent paths, or mention any permission requirements, which is significant for a destructive tool.

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

Conciseness5/5

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

The description is two sentences with no filler. The core action and resource are front-loaded, followed by the essential path constraint and example. Every sentence adds value.

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

Completeness3/5

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

For a simple destructive file operation with no output schema, the description covers the primary path semantics and recursive behavior. However, it omits session_id's role and any post-deletion behavior or safety warnings, leaving an agent to guess how to select the correct runtime and what to expect after calling the tool.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It explains the path parameter's semantics (relative to sandboxed workspace) and gives an example, but it does not mention the session_id parameter at all. This leaves one of two parameters undocumented, providing only partial parameter meaning.

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

Purpose5/5

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

The description clearly states the action (Delete), the resource (file or directory), and key behavior (recursively) within the runtime's sandboxed workspace. It distinguishes this tool from file read/write/move/list siblings by specifying the deletion operation and the path relativity.

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

Usage Guidelines3/5

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

The usage context is implied: use when a file or directory in the sandboxed workspace should be removed. However, there is no explicit guidance about when not to use it, alternatives like moving files, or prerequisites such as session_id selection. It does not state exclusions or compare against sibling tools.

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

colab_download_fileA

Download a file from the runtime's sandboxed workspace as base64. Path is relative to the runtime's sandboxed workspace (e.g. /content/mcp_workspace).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
session_idNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden and does disclose two key behaviors: the response is base64-encoded, and path resolution is relative to the sandboxed workspace. It does not disclose failure behavior for missing paths, directory downloads, or size limits, but for a file retrieval tool the disclosed traits are the ones an agent most needs.

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

Conciseness5/5

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

Two sentences with zero filler: the first states the operation and output format, the second clarifies the critical path-scoping detail with an example. Every sentence earns its place and the key information is front-loaded.

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

Completeness3/5

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

Adequate for a low-complexity, 2-parameter tool: purpose, path semantics, and return encoding are covered. The unexplained session_id parameter and the absence of any error/edge-case mention leave gaps, and since there is no output schema, the base64 statement is the only return-format information available.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It thoroughly explains the required 'path' parameter with location and example, but 'session_id' is left entirely unexplained — the agent cannot know whether it selects a runtime, scopes the workspace, or is optional.

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

Purpose5/5

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

States a specific verb ('Download'), resource ('file from the runtime's sandboxed workspace'), and format ('as base64'). The base64 mention and 'download' framing distinguish it from siblings like colab_read_file and colab_upload_file without ambiguity.

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

Usage Guidelines3/5

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

Provides clear context that paths are relative to the sandboxed workspace with a concrete example (/content/mcp_workspace), which tells the agent how to invoke it. However, it gives no explicit guidance on when to choose this over colab_read_file or when not to use it, leaving alternative selection to inference.

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

colab_edit_cellA

Replace the source of one existing cell by index.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
indexYes
sourceYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It clearly communicates that this is a mutating operation that replaces the old cell source with the provided source. Yet it does not disclose persistence behavior, side effects, authentication needs, or what happens when the index is invalid.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. Every word earns its place, and the core action is immediately clear.

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

Completeness4/5

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

For a simple three-parameter edit operation, the description covers the operation, target, and replacement content. It does not fully specify the meaning of 'path' or error behavior, but the essential calling context is mostly sufficient despite lacking annotations and an output schema.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning to 'source' as the replacement source and 'index' as the cell's position among existing cells, but 'path' is left unexplained and must be inferred from the tool name and domain.

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

Purpose5/5

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

The description states a specific verb ('Replace'), a precise object ('the source of one existing cell'), and the selection mechanism ('by index'). This clearly distinguishes it from sibling tools like colab_add_cell, colab_delete_cell, and colab_execute_cell.

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

Usage Guidelines3/5

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

The description implies when to use this tool: when you need to overwrite an existing cell's source by its index. However, it does not explicitly state alternatives or provide exclusion criteria like 'use colab_add_cell to create a new cell instead.'

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

colab_evaluate_modelB

Run evaluation code synchronously against a runtime session and return its output.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
session_idNo
timeout_secondsNo

TDQS

B3/5.0
Behavior3/5

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

The description discloses that execution is synchronous and that output is returned, which are meaningful behavioral traits beyond the raw schema. However, with no annotations to provide a safety or side-effect profile, it does not address potential side effects, timeout behavior, or runtime state changes from executing evaluation code.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. Every word contributes to the basic understanding of the tool, making it highly concise and easy to parse.

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

Completeness2/5

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

With no output schema, no annotations, and 0% schema description coverage, the description carries a heavy burden but only provides a minimal statement. It omits details about expected return format, how to target or create a session, timeout semantics, and whether this tool should be used for model evaluation versus generic code execution.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only vaguely maps to 'code' and 'session_id' via 'evaluation code' and 'runtime session'. The timeout_seconds parameter is not explained at all, and none of the parameters get concrete semantic detail such as format, defaults, or optionality.

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

Purpose4/5

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

The description identifies a specific action ('run evaluation code'), a target resource ('runtime session'), and a result ('return its output'). It is clear about the core operation, but it does not explicitly distinguish itself from closely related siblings like colab_execute_code or colab_execute_cell beyond the word 'evaluation'.

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

Usage Guidelines2/5

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

The description states what the tool does but gives no guidance on when to use it instead of alternatives such as colab_execute_code, colab_execute_cell, or colab_run_training. There is no mention of prerequisites, exclusions, or selection criteria.

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

colab_execute_cellC

Execute a single notebook cell by index against a runtime session.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
indexYes
session_idNo
timeout_secondsNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden, but it only states the action without disclosing any side effects, such as whether execution is synchronous, if it blocks until completion, or whether a session must already exist. It also doesn't mention if execution is destructive to the runtime state.

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

Conciseness4/5

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

The description is brief and to the point, with no unnecessary details. It is appropriately front-loaded with the core action, but could have included more context without being verbose.

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

Completeness2/5

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

For a tool that executes code, with no annotations and no output schema, the description is inadequate. It lacks details about prerequisites (e.g., a live runtime), error scenarios, and expected outputs. An agent would need to infer too much to invoke it correctly.

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

Parameters2/5

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

Schema coverage is 0%, and the description does not elaborate on any parameter meanings beyond their names, which are mostly self-explanatory. It doesn't clarify what 'index' refers to (0-based?), what 'session_id' is for, or how 'timeout_seconds' behaves. The description adds no value over the schema.

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

Purpose3/5

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

The description states a specific verb ('execute') and resource ('a single notebook cell by index against a runtime session'), which clearly distinguishes it from siblings like colab_execute_code. However, 'runtime session' is not explicitly tied to a specific requirement, and the tool's scope is not fully contextualized.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as colab_execute_notebook or colab_execute_code. For instance, it doesn't mention that it's best for interactive debugging or that colab_execute_notebook is for running the entire notebook.

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

colab_execute_codeB

Execute a snippet of Python code in a Colab/Jupyter runtime session and return stdout, stderr, the last expression's repr, and any rich display data.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesPython source to execute.
session_idNoExisting session to run in; omit to use/create the default session.
timeout_secondsNoMax seconds to wait for execution to finish.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the return payload (stdout, stderr, last expression repr, rich display data), which is useful, but it does not mention behavioral traits like persistent session state, potential side effects of the executed code, or exception/timeout handling. It offers some transparency but not comprehensive context.

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

Conciseness5/5

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

The description is a single, well-structured sentence with no filler. Every word contributes: verb, target environment, and return outputs. It is appropriately sized and front-loaded.

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

Completeness4/5

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

Given the tool's complexity (arbitrary code execution) and lack of output schema, the description covers the core invocation context and return values. It lacks some behavioral caveats about session persistence and side effects, but the schema covers session_id and timeout, and the return contract is stated. It is reasonably complete for a successful call, though a warning about side effects would be beneficial.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters described meaningfully. The tool description adds only the term 'snippet' and does not enrich the parameter semantics beyond the schema, which is acceptable given the high schema coverage. Baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies the tool's function: executing Python code snippets in a Colab/Jupyter runtime and returning execution outputs. It uses a specific verb and resource, but does not explicitly contrast with sibling tools like colab_execute_cell or colab_execute_notebook, which weakens sibling differentiation.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as colab_execute_cell or colab_execute_notebook. It only states what the tool does, with no context for selecting it over siblings and no exclusions.

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

colab_execute_notebookB

Execute every code cell in a notebook, in order, against a runtime session.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
session_idNo
timeout_secondsNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals that all cells run in order against a runtime session, but it does not mention side effects, error behavior, asynchronous execution, cancellation, or output handling—important context for a code-execution tool.

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

Conciseness5/5

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

A single sentence delivers the core action, scope, and execution context with no filler. It is front-loaded and every word earns its place.

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

Completeness2/5

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

For a potentially long-running and side-effectful operation with three parameters and no annotations or output schema, the description is too thin. It omits return behavior, failure semantics, whether the call is asynchronous, and how timeout applies, leaving significant gaps for an agent to call it correctly.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain path, session_id, or timeout_seconds. The phrase 'runtime session' hints at session_id, and 'notebook' implies path, but timeout_seconds is entirely unaddressed, leaving the agent to rely on parameter names alone.

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

Purpose5/5

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

The description uses a specific verb-resource pair ('Execute every code cell in a notebook') and adds ordering and runtime-session context. This clearly differentiates the tool from siblings like colab_execute_cell, which targets a single cell, and colab_execute_code, which runs arbitrary code.

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

Usage Guidelines3/5

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

The description implies the tool is for full notebook execution, but it does not explicitly state when to prefer it over colab_execute_cell or colab_execute_code. There are no exclusions, alternatives, or conditions mentioned, so usage guidance is left to inference.

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

colab_export_modelB

Run model-export code (e.g. ONNX/TorchScript) in a runtime session and register the exported artifact.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
nameNo
job_idNo
session_idNo
artifact_pathNo
timeout_secondsNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that code runs in a session and an artifact is registered, but it does not mention required setup, existing session expectations, overwrite behavior, timeout effects, or the arbitrary side-effect potential of running user-supplied code.

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

Conciseness5/5

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

The description is a single front-loaded sentence with concrete examples and no wasted words. It efficiently communicates the core purpose.

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

Completeness2/5

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

With 6 undocumented parameters, no output schema, and no annotations, this one-line description is not enough to invoke the tool correctly. It gives a good summary but omits parameter semantics, usage boundaries, and behavioral expectations.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds only a weak mapping: 'code' is model-export code and the output is an 'exported artifact'. The meaning and role of name, job_id, session_id, artifact_path, and timeout_seconds remain unexplained, so the agent must guess.

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

Purpose5/5

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

The description states a clear, specific action: run model-export code such as ONNX/TorchScript in a runtime session and register the exported artifact. This distinguishes it from notebook export and generic code execution by emphasizing artifact registration for model exports.

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

Usage Guidelines3/5

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

The intended use is implied by the phrase 'model-export code', but there is no explicit guidance about when to use this tool versus alternatives like colab_execute_code or colab_export_notebook. Clear context is present, but exclusions and alternative routing are not stated.

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

colab_export_notebookB

Export a notebook as raw .ipynb JSON or as a flattened Python script.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
formatNoipynb

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does explain the key transformation behavior ('raw .ipynb JSON' vs 'flattened Python script'), but it does not disclose whether the result is returned directly, written to a file, or requires any permissions/read access. This is a moderate gap for an export operation.

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

Conciseness5/5

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

The description is a single efficient sentence with no repetition or filler. The core action and output choices are front-loaded, making it easy to scan.

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

Completeness3/5

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

For a low-complexity tool, the description conveys the main purpose and output formats, but it leaves important context undeclared: what 'path' refers to, whether export produces a file or returns content, and how this differs from related notebook/file tools. The absence of an output schema makes the missing return-delivery information more significant.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning to the 'format' parameter by explaining the two output representations, but it does not clarify the meaning of the required 'path' parameter beyond its name. The explanation is partial rather than complete.

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

Purpose4/5

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

The description states a specific verb ('Export') and resource ('a notebook'), and clearly names the two output formats: raw .ipynb JSON or flattened Python script. It distinguishes itself from get_notebook/download_file by framing the operation as an export/conversion, though it does not explicitly call out sibling differences.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as colab_get_notebook or colab_download_file. The description implies an export use case but does not describe exclusions or the conditions that would make a sibling tool more appropriate.

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

colab_get_artifactsB

List artifacts (models, datasets, logs, metrics, reports) produced by a job, or all jobs if job_id is omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNo

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It discloses that it lists artifacts but doesn't clarify whether the tool is read-only or if it might trigger side effects. It also doesn't mention pagination, sorting, or result limits. The behavior is minimally described; an agent might not know if this is a safe read operation or if it could be expensive.

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

Conciseness5/5

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

The description is a single sentence that is efficient and front-loaded with the main action and resource. It includes the parenthetical list of artifact types and the conditional scope. No wasted words.

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

Completeness3/5

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

For a simple listing tool with one optional parameter and no output schema, the description provides enough to call it correctly. However, given the complexity of the Colab environment and the absence of output schema, it could benefit from mentioning that the output is a list of artifacts and perhaps that some artifacts might not be available if jobs are still running. The absence of any behavioral details is a minor gap.

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

Parameters4/5

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

Schema has 1 parameter with 0% description coverage)Skip 5; the definition portion accomplish the description. It explains that job_id filters to a specific job and that omitting it lists all jobs. This adds meaning beyond the schema, which only shows 'string' type. The description effectively documents the parameter's semantics.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource 'artifacts', and enumerates the artifact types (models, datasets, logs, metrics, reports), which distinguishes it from sibling tools like colab_get_logs and colab_get_job. It also mentions the optional job_id scope, which adds precision. However, it doesn't explicitly contrast with siblings, but the resource listing is specific enough.

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

Usage Guidelines3/5

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

The description implies usage context by mentioning that job_id is optional, suggesting it can list all jobs or a specific job's artifacts. But it doesn't explicitly state when to choose this tool over alternatives (e.g., colab_get_logs for logs only, colab_get_job for job details). No exclusions or alternative names are provided.

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

colab_get_cpuB

Get CPU core count and utilization for a runtime session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are present, so the description must carry behavioral weight. 'Get' implies a read-only operation, but nothing is said about side-effect safety, behavior when session_id is omitted, or whether an error is raised for invalid sessions. The description only names the metric without disclosing operational behavior.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; every word contributes to naming the operation and resource. It is efficient, though the brevity leaves behavioral details to other dimensions.

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

Completeness3/5

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

For a simple one-parameter read tool, the core action is clear, but with no annotations and no output schema the description still leaves gaps: there is no statement of the return shape, default behavior, or invalid-session handling. It is minimally adequate but not complete.

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

Parameters2/5

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

The input schema gives only a parameter name with no description (0% coverage), so the description needed to explain session_id. It does not; 'for a runtime session' is only a loose mapping and does not state whether the parameter is optional, what format it should be in, or what happens when it is absent.

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

Purpose5/5

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

States a specific read operation ('Get') on a well-defined resource ('CPU core count and utilization') scoped to 'a runtime session'. The resource name differentiates it from sibling metrics tools like colab_get_gpu and colab_get_memory, so an agent can select it unambiguously.

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

Usage Guidelines3/5

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

The phrase 'for a runtime session' gives some context for when to call it, but the description does not mention alternatives, exclusions, or prerequisites such as needing an active session. Usage is implied rather than explicit, so this is not strong routing guidance.

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

colab_get_diskB

Get disk usage for a runtime session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'Get' implies a read-only operation with no side effects, which is useful, but the description does not disclose what happens if the session is missing, whether a default session is used, or any error/return behavior.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to stating the tool's purpose, and it is appropriately sized for the simple operation.

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

Completeness2/5

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

With no annotations and no output schema, the description should explain more about expected input and return format. It does not mention units of disk usage, output shape, what happens with no session_id, or error conditions, so an agent is left guessing.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explicitly explain the session_id parameter. It only weakly maps to it via 'for a runtime session', leaving the parameter's role, optionality, and default behavior undocumented.

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

Purpose5/5

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

The description uses a specific verb ('Get'), a clear resource ('disk usage'), and a scope ('for a runtime session'). This distinguishes it from sibling tools like colab_get_cpu, colab_get_memory, and colab_get_gpu without ambiguity.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives, when not to use it, or any prerequisites. The description only states what the tool does, leaving the agent to infer usage context.

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

colab_get_gpuA

Get GPU/VRAM info for a runtime session (device name, memory, count).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. The verb 'Get' and the listing of informational fields imply a read-only operation, but the description does not cover edge cases like missing or invalid session_id, or whether an active runtime is required. It adds some useful context beyond the name but could be more explicit about expected behavior.

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

Conciseness5/5

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

A single sentence that states the operation, target, and key output detail in a parenthetical. The content is front-loaded with the important resource name and there is no wasted wording.

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

Completeness4/5

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

For a simple getter with one parameter, no output schema, and no annotations, the description is mostly satisfactory: it names the resource, the returned fields, and the runtime scope. The primary omissions are optionality details and explicit alternative routing, but these are secondary for such a low-complexity tool.

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

Parameters3/5

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

The sole parameter session_id has no schema description (0% coverage), so the description must compensate. 'or a runtime session' gives some context linking the parameter to a runtime, but it does not explain the format, where to get the session_id, or that it is optional (as indicated by required=0). This is a moderate compensation but not thorough.

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

Purpose5/5

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

The description uses a specific verb ('Get') with a clear resource ('GPU/VRAM info') and explicitly lists the returned fields (device name, memory, count). It is immediately distinguishable from sibling tools like colab_get_cpu and colab_get_memory.

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

Usage Guidelines4/5

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

The phrase 'for a runtime session' indicates the tool's context of use, and the focus on GPU/VRAM clearly separates it from sibling resource-specific getters. However, it does not explicitly state when not to use it or name alternatives such as colab_get_cpu.

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

colab_get_jobB

Get the status, progress, and result of a job (e.g. a training run) by job_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
include_logsNo

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral disclosure burden. It makes clear this is a read operation that returns status, progress, and a result, but it does not disclose whether the call blocks, whether results are available before completion, error conditions, or what the 'result' includes.

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

Conciseness5/5

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

A single sentence with no filler, front-loaded with the action and resource, and the parenthetical 'a training run' clarifies the intended use without adding unnecessary length.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is somewhat thin. It does not differentiate from sibling tools, does not explain include_logs, and does not indicate response shape or caveats around job completion, leaving an agent to guess at important details.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate. It explains that job_id identifies the job, but it adds no meaning for include_logs, such as when to enable it or what additional data it would return.

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

Purpose4/5

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

The description clearly identifies the verb ('Get') and the resource ('a job'), and specifies the operation's focus: status, progress, and result. It is not as strong as a 5 because it does not explicitly contrast itself with closely related siblings such as colab_get_logs or colab_list_jobs.

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

Usage Guidelines2/5

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

The description implies the tool is for retrieving job information by job_id, but it provides no explicit when-to-use guidance or exclusions. It does not mention when to prefer this over colab_list_jobs, colab_get_logs, or colab_get_artifacts, nor any prerequisite like first obtaining a job_id.

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

colab_get_logsA

Get a job's accumulated log lines, optionally only the last N.

ParametersJSON Schema
NameRequiredDescriptionDefault
tailNo
job_idYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It usefully reveals that logs are accumulated over time and that the tail parameter limits retrieval. However, it does not mention error behavior, log retention, or explicitly confirm that the operation is read-only, though 'Get' strongly implies it.

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

Conciseness5/5

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

The description is a single, compact sentence with no filler. It front-loads the core action and resource, then adds the optional tail behavior. Every word contributes to understanding the tool.

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

Completeness4/5

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

For a simple two-parameter log-retrieval tool with no output schema and no nested objects, the description is largely complete. It explains the resource, the required job identifier, and the optional tail limit. It does not describe the return format, but the tool name and description make the expected log-line output reasonably clear.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate for the bare input schema. It adds meaning to both parameters: 'a job's' identifies job_id as the target job, and 'optionally only the last N' clarifies that tail is an optional count for log lines. This is sufficient for basic invocation.

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

Purpose5/5

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

The description states a specific verb ('Get'), a precise resource ('a job's accumulated log lines'), and an optional modifier ('only the last N'). This clearly distinguishes it from sibling tools like colab_get_job and colab_list_jobs, which focus on job status or listing rather than log content.

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

Usage Guidelines4/5

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

The description provides clear context: use this tool when you need a job's accumulated log output, optionally truncated to the last N lines. It does not explicitly name alternatives or state when not to use it, but the resource and purpose are specific enough to guide selection.

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

colab_get_memoryA

Get RAM total/available/used for a runtime session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns three memory metrics, which is useful, but it does not mention error behavior, session requirements, or whether this is a safe read-only operation beyond the verb 'Get'.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to understanding the tool's purpose and return metrics.

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

Completeness3/5

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

For a simple getter with one optional parameter and no output schema, the description gives the core information: what is retrieved and in what scope. However, it leaves session_id semantics and potential error cases unexplained, which limits completeness.

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

Parameters2/5

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

The schema has one parameter, session_id, with 0% description coverage. The description only hints at session_id through the phrase 'for a runtime session' and does not explain what session_id should contain, its format, or whether it is required.

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

Purpose5/5

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

The description uses a specific verb ('Get'), names the resource ('RAM'), lists the exact metrics ('total/available/used'), and scopes it to a 'runtime session'. This clearly differentiates it from sibling tools like colab_get_cpu, colab_get_gpu, and colab_get_disk.

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

Usage Guidelines3/5

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

The scope 'for a runtime session' implies when the tool applies, but no explicit when-to-use guidance or alternatives are mentioned. The intended usage is inferable from the name and description, but not stated directly.

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

colab_get_notebookA

Read a notebook's cells and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. The verb 'Read' implies a non-destructive, side-effect-free operation, which is useful. However, the description does not address whether this reads from disk, session state, or APIs, nor does it describe pagination, freshness, or the structure of the returned metadata. It is adequate for a simple getter but not fully transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It efficiently conveys the core purpose and scope in very few words, which is ideal for quick agent scanning.

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

Completeness3/5

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

For a tool with one required parameter and no output schema, the description gives a minimal but workable overview: it names the operation and the intended result. However, it lacks critical contextual guidance such as how 'path' should be specified, what the returned metadata looks like, and how this differs from colab_read_file or colab_get_job in practice. It is adequate but leaves gaps.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain the meaning or format of the required 'path' parameter. The word 'notebook' in the description implies path identifies a notebook, but whether it is a workspace path, notebook ID, or remote URI is left unspecified. With no schema description to compensate, the agent must guess at valid path semantics.

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

Purpose5/5

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

The description states a specific action ('Read') and a specific resource ('a notebook's cells and metadata'), which clearly distinguishes this tool from sibling tools like colab_create_notebook, colab_update_notebook, and colab_export_notebook. The scope of what is returned is made explicit, so an agent can identify this tool's purpose without ambiguity.

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

Usage Guidelines3/5

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

The description implies usage through its purpose ('read when you need a notebook's cells and metadata'), but it does not explicitly state when to prefer this over closely related tools such as colab_read_file, colab_get_logs, or colab_export_notbook. No when-not or alternative-guidance is provided, leaving some inference required.

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

colab_get_package_versionC

Get the installed version of a specific package in the runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageYes
session_idNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It does not mention potential errors (e.g., package not installed), whether a session is required, or whether the tool is read-only (though it likely is). The description adds minimal context beyond the name.

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

Conciseness4/5

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

The description is concise and front-loaded with the key action. It is a single sentence with no fluff, but it under-specifies rather than being overlong, so it earns a 4 for conciseness, but the lack of detail is penalized elsewhere.

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

Completeness2/5

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

Given that there is no output schema, no annotations, and 0% schema coverage, the description is incomplete. It does not specify what the response format is (e.g., string of version number) or any prerequisites (e.g., session must exist). For a tool that queries runtime state, an agent needs more context to use it correctly.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the schema gives no descriptions for 'package' or 'session_id'. The description only mentions 'package' implicitly but not 'session_id'. It does not clarify the format of 'package' (e.g., PyPI name) or when 'session_id' is needed, so the description fails to compensate for the schema's lack of details.

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

Purpose4/5

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

The description clearly states the verb 'Get' and the resource 'installed version of a specific package in the runtime', which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like colab_list_packages, but the action of getting a version is distinct enough that an agent can infer the difference.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. For example, there is no mention of when to use colab_list_packages instead (e.g., if you need all packages) or whether this tool requires a session. The agent has to infer usage from the sibling names alone.

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

colab_get_runtimeB

Get overall runtime status: active sessions, Python version, CUDA/torch availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It does convey that the operation is a read-only status retrieval and enumerates the returned categories, but it does not mention potential side effects, error conditions, session handling, or whether information is returned for the active session only.

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

Conciseness5/5

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

The description is a single front-loaded sentence that states the resource first and then enumerates the key result components without any filler. Every part adds useful information.

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

Completeness3/5

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

The tool is simple and its output components are listed, but there is no output schema and the optional session_id parameter is left completely unexplained. The description is adequate for a casual overview but not fully complete for an agent deciding how to invoke the tool.

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

Parameters1/5

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

Schema description coverage is 0%, and the description never mentions the session_id parameter. An agent cannot tell what session_id refers to, whether it is optional in practice, or what happens when it is omitted, so the description fails to compensate for the undocumented schema.

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

Purpose5/5

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

The description uses a specific verb ('Get') and a clear resource ('runtime status'), and then lists exactly what is included: active sessions, Python version, and CUDA/torch availability. This distinguishes it from sibling tools like colab_get_gpu or colab_get_cpu, which target individual resources.

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

Usage Guidelines2/5

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

The description gives no guidance about when to use this tool versus alternatives such as colab_get_gpu, colab_get_cpu, or colab_get_memory. It does not state exclusions or point to a more specialized sibling for narrower queries.

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

colab_install_packageA

Install a Python package (e.g. 'transformers', 'torch==2.3.0') inside the runtime via pip.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageYes
session_idNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It adds meaningful context by specifying the mechanism ('via pip') and the target environment ('inside the runtime'), but it does not disclose side effects such as dependency installation, network use, or whether an active session is required.

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

Conciseness5/5

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

The description is one concise, front-loaded sentence with an illustrative example. Every word earns its place, and there is no redundant filler.

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

Completeness3/5

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

For a simple install action, the definition is mostly adequate: it names the required parameter format and the installation mechanism. However, with no annotations, no output schema, and no explanation of 'session_id', the description leaves modest gaps for an agent trying to invoke the tool correctly in all contexts.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does add value for the 'package' parameter with concrete examples like 'transformers' and 'torch==2.3.0', but it omits any semantics for 'session_id', leaving that parameter unexplained.

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

Purpose5/5

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

The description uses a specific verb ('Install') with a clear resource ('a Python package') and scope ('inside the runtime via pip'). It cleanly differentiates the tool from siblings like colab_uninstall_package and colab_list_packages.

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

Usage Guidelines3/5

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

The description implies when the tool should be used—when a package needs to be installed into the runtime—but does not explicitly address alternatives or exclusions. There is no mention of when to prefer another sibling tool, such as colab_uninstall_package or colab_get_package_version.

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

colab_list_filesA

List files and directories under a path in the runtime's sandboxed workspace. Path is relative to the runtime's sandboxed workspace (e.g. /content/mcp_workspace).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
session_idNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It accurately indicates a non-mutating listing operation and the path base, but does not disclose default-path behavior, recursion behavior, or the shape of the returned listing, leaving some behavior to inference.

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

Conciseness5/5

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

Two sentences with the action front-loaded and an explicit path example. The second sentence clarifies path semantics without redundancy or fluff; both sentences earn their place.

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

Completeness3/5

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

For a low-complexity list tool, the description covers the core operation and path semantics. However, it omits session_id, the meaning of the empty default path, and the return format. With no output schema and no annotations, the description should fill more of these gaps to be fully self-contained.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains path semantics well, but session_id is entirely undocumented in both the schema and the description, leaving one of two parameters without any semantic guidance.

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

Purpose5/5

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

Uses a specific verb ('List') and resource ('files and directories under a path in the runtime's sandboxed workspace'), clearly identifying the operation. It distinguishes the tool from sibling file operations like read_file, write_file, and download_file; no sibling provides the same listing function.

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

Usage Guidelines4/5

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

Provides clear context by explaining that the path is relative to the sandboxed workspace, which is necessary for constructing correct inputs. It does not explicitly name alternatives or exclusions, but the listing purpose and sandbox scope make the appropriate usage clear among the colab_* siblings.

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

colab_list_jobsA

List all known jobs, optionally filtered by status (queued/starting/running/completed/failed/cancelled/timeout).

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It clearly describes a read-only listing operation with a filter, but does not disclose output format, ordering, pagination, or side-effect implications. For a list tool, the transparency is adequate but not rich.

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

Conciseness5/5

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

One sentence with no fluff. It front-loads the main action ('List all known jobs') and then adds the optional filter condition and valid values, every word earning its place.

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

Completeness4/5

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

For a simple list tool with one optional parameter and no output schema, the description sufficiently covers purpose and filter usage. The only gaps are details about what each job entry looks like and pagination/ordering, but these are not critical for selecting and invoking the tool correctly.

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

Parameters5/5

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

Schema coverage is 0% and the schema only defines 'status' as a string with no enum or description. The description fully compensates by listing the allowed values: queued/starting/running/completed/failed/cancelled/timeout, and clarifies that filtering is optional. This gives the agent actionable parameter guidance absent from the schema.

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

Purpose5/5

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

States a specific verb and resource: 'List all known jobs', clearly distinguishing it from sibling tools like colab_get_job which targets a single job. The optional status filter with enumerated values further clarifies the scope.

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

Usage Guidelines3/5

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

The description implies usage for listing jobs and optionally filtering by status, but it does not explicitly contrast against colab_get_job or colab_cancel_job. The usage context is clear enough for an agent but relies on inference rather than explicit exclusions or alternatives.

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

colab_list_packagesB

List all installed packages and their versions in the runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. The verb 'List' indicates a read-only action and 'all installed packages and their versions' conveys the scope of the result. However, it does not disclose anything about session selection, potential errors, or output format.

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

Conciseness5/5

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

The description is one focused sentence with the verb front-loaded and no filler. It is appropriately concise for a simple list operation.

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

Completeness3/5

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

The tool is low complexity and the description captures the essential purpose and result scope. However, the undocumented session_id parameter, lack of alternative guidance, and absence of any return-format note leave meaningful gaps for an agent trying to invoke it correctly.

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

Parameters1/5

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

The only parameter, session_id, is entirely undocumented in both the schema and the description. Schema description coverage is 0%, and the description does not compensate by explaining what session_id does, whether it is required, or what happens when it is omitted.

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

Purpose5/5

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

The description clearly states the verb 'List', the resource 'installed packages', and the objective 'their versions in the runtime'. This distinguishes it from siblings like colab_list_files (files) and colab_get_package_version (a single package version).

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as colab_get_package_version or colab_install_package. The description implies a read/list scenario but gives no exclusions or selection criteria.

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

colab_move_fileB

Move/rename a file within the runtime's sandboxed workspace. Path is relative to the runtime's sandboxed workspace (e.g. /content/mcp_workspace).

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYes
session_idNo
destinationYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds one useful context detail: paths are relative to the sandboxed workspace. However, it does not disclose overwrite behavior on the destination, whether directories are created, what happens if the source is missing, or any runtime/session requirements.

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

Conciseness5/5

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

The description is only two sentences, front-loads the operation and resource, and provides the necessary path-scoping context with an example. Every sentence contributes useful information with no redundancy.

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

Completeness3/5

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

For a simple file-move operation, the description covers the core action and path semantics. However, no output schema or annotations exist, and the description omits session_id and overwrite/destination semantics, leaving some ambiguity for an agent deciding how to invoke the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It does clarify that source and destination are workspace-relative paths and gives an example, but it never mentions the optional session_id parameter or explains how it affects execution. One of the three parameters is entirely undocumented.

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

Purpose5/5

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

The description states a precise action ('Move/rename a file') and a clear resource scope ('within the runtime's sandboxed workspace'). This distinguishes it from sibling file tools like colab_read_file, colab_write_file, colab_delete_file, and colab_upload_file, none of which perform move/rename operations.

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

Usage Guidelines3/5

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

The description implies usage context through the file-operation verb and sandbox scoping, so an agent can infer it is for relocating files inside the workspace. However, it does not explicitly state when to prefer this tool over alternatives, nor does it mention exclusions such as moving files between runtimes or outside the sandbox.

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

colab_read_fileA

Read a text file's contents from the runtime's sandboxed workspace. Path is relative to the runtime's sandboxed workspace (e.g. /content/mcp_workspace).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
session_idNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral disclosure. It makes clear the operation is a read and scopes it to the sandboxed workspace, but it does not address what happens for binary files, missing paths, or whether session_id changes behavior. This is acceptable but not fully transparent.

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

Conciseness5/5

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

The description is two short sentences, front-loads the primary action, and includes a concrete example. Every sentence adds value with no redundancy.

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

Completeness3/5

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

For a simple two-parameter read tool, the core behavior is described, but session_id is unexplained and there is no mention of return contents beyond the word 'contents.' Given no annotations and no output schema, the description is minimally adequate but has clear gaps.

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

Parameters3/5

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

The description explains the path parameter well ('Path is relative to the runtime's sandboxed workspace (e.g. /content/mcp_workspace)'), which the schema does not. However, session_id is left entirely undocumented, and with 0% schema coverage the description needs to compensate more than it does.

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

Purpose5/5

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

The description states a specific action ('Read a text file's contents') and the resource ('runtime's sandboxed workspace'), with a concrete path example. This clearly differentiates it from sibling file tools like write, upload, download, and list.

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

Usage Guidelines3/5

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

The purpose implies when to use it — when file contents are needed — but it does not explicitly state when not to use it or mention alternative tools such as colab_download_file. The guidance is adequate but relies on inference from the verb 'read.'

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

colab_restart_runtimeA

Restart a runtime session's kernel (clears all variables/state).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

TDQS

A3.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It explicitly states that restarting clears all variables/state, which is the most important behavioral consequence. It could additionally mention that running executions may be terminated or that the runtime becomes temporarily unavailable, but the core destructive effect is disclosed.

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

Conciseness5/5

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

The entire description is one focused sentence, front-loading the action ('Restart') and including the critical side effect in parentheses. There is no filler, redundancy, or repetition of the tool name.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description gives the essential purpose and side effect, which is a minimally viable level. However, the lack of parameter guidance and the absence of any statement about preconditions (e.g., session must exist) or what happens to running jobs leaves meaningful gaps for an agent deciding how to call it correctly.

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

Parameters2/5

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

The schema has one parameter, session_id, with no description, and schema description coverage is 0%. The description says 'a runtime session' but never explicitly links it to the session_id parameter, its format, or whether it is required or optional. Given zero schema coverage, the description should have made it clear that session_id identifies the session to restart.

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

Purpose5/5

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

The description uses a specific verb ('Restart'), names the exact resource ('runtime session's kernel'), and includes the key side effect ('clears all variables/state'). This clearly distinguishes it from sibling tools like colab_stop_execution or colab_cancel_job, which halt work but do not reset the kernel state.

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

Usage Guidelines2/5

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

There is no guidance about when to choose this tool over alternatives. It does not state that restart is appropriate when a runtime is unresponsive or when a fresh state is needed, nor does it explicitly say not to use it when merely stopping execution would suffice. The intended use case is only implied by the name and description.

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

colab_run_trainingA

Start a training run as a background job: submits Python training code (any framework) to a runtime session and returns a job_id immediately. Poll with colab_get_job / colab_get_logs.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesFull training script to execute.
session_idNo
timeout_secondsNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does add useful behavioral detail: it is asynchronous, returns a job_id immediately, and requires polling for status/logs. However, it omits other relevant behaviors such as whether an existing session is required, what happens on timeout, or how to cancel the job—gaps that an agent might need to know for reliable use.

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

Conciseness5/5

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

The description is two sentences with no filler; it front-loads the core purpose, then immediately tells the agent how to monitor the job. Every phrase adds value, and it is concise enough to be parsed quickly.

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

Completeness3/5

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

Given the lack of output schema and annotations, the description covers the essential flow (start background job, get job_id, poll) but leaves important contextual details unspecified, such as session_id optionality, timeout behavior, and cancellation. For a training-run starter that is moderately complex, the description is adequate but not fully complete.

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

Parameters3/5

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

Only the code parameter has a schema description ('Full training script to execute'), and the overall schema coverage is 33%. The description partially compensates by clarifying that the code is Python and can use any framework, and its phrase 'to a runtime session' hints at the session_id parameter. However, session_id and timeout_seconds are not explained, leaving those parameter semantics vague.

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

Purpose5/5

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

The description clearly states a specific action ('Start a training run') and resource ('background job'), and further specifies that it submits Python training code to a runtime session and returns a job_id immediately. This differentiates it from sibling execution tools like colab_execute_code by focusing on training runs and asynchronous background processing, so an agent can immediately tell it apart.

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

Usage Guidelines4/5

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

The description provides clear context: use this tool to launch a training run as a background job and then poll with colab_get_job / colab_get_logs. It does not explicitly name alternative tools for synchronous or non-training code execution, nor state when not to use it, but the background-job framing and polling instructions make the intended usage scenario clear.

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

colab_save_modelB

Run model-saving code in a runtime session, then (optionally) register the resulting file under a job's artifacts via colab_get_artifacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
nameNo
job_idNo
session_idNo
artifact_pathNoPath (relative to the artifact root) the code saved to.
timeout_secondsNo

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals that code is run in a runtime session and artifact registration is optional, but it does not mention side effects, overwrite behavior, authentication, failure modes, or what happens when artifact_path is omitted.

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

Conciseness5/5

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

A single sentence that front-loads the action, states the optional registration behavior, and includes a reference to the relevant sibling tool. There is no filler or redundant restatement of the schema.

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

Completeness2/5

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

The tool has six parameters, no annotations, and no output schema, yet the description is only one high-level sentence. It does not explain session/job relationships, required versus optional parameters, timeout defaults, or expected return behavior, so an agent cannot reliably invoke it correctly.

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

Parameters2/5

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

Schema description coverage is only 17%, and the description adds little parameter meaning: it implies code contains model-saving logic and artifact_path is where the resulting file is stored, but it does not clarify name, job_id, session_id, or timeout_seconds.

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

Purpose5/5

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

The description uses a specific action ('Run model-saving code in a runtime session') and a concrete outcome ('register the resulting file under a job's artifacts'), which makes the tool's purpose clear and distinguishes it from generic execution tools like colab_execute_code and artifact-related tools like colab_get_artifacts.

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

Usage Guidelines3/5

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

The phrase 'model-saving code' implies this is for persisting models and optionally registering outputs, but the description never explicitly states when to choose it over colab_execute_code or when to skip artifact registration. There is no when-not-to-use guidance or named alternative.

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

colab_stop_executionB

Interrupt whatever is currently executing in a runtime session (like a keyboard interrupt).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. 'Like a keyboard interrupt' usefully signals a graceful interruption of the current execution rather than a hard session kill, but it omits details such as what happens to session state, whether the interrupt is reversible, and what response is returned.

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

Conciseness5/5

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

The description is one front-loaded sentence with no filler; the verb and target appear first, and the keyboard-interrupt analogy is a compact, useful addition. It is appropriately sized for the tool's simple scope.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description should clarify what session_id means, whether it is optional, and how this stop differs from stop_training/cancel_job. The single sentence covers the core action but leaves these operational details absent.

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

Parameters2/5

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

Schema coverage is 0% and the description never explicitly mentions session_id, so the parameter's default/required behavior is not explained. It only indirectly ties the parameter to a 'runtime session,' which is partial compensation but not enough to fully document the lone parameter.

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

Purpose4/5

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

The description uses a specific verb ('interrupt') and resource ('whatever is currently executing in a runtime session'), and the 'like a keyboard interrupt' analogy clarifies the action. It is distinguishable from sibling tools like colab_stop_training by scope, though it does not explicitly name any alternative.

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

Usage Guidelines3/5

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

The context of use is implied: call it when something in a runtime session is executing and needs interruption. However, it gives no explicit when-not-to-use guidance and does not contrast with colab_stop_training or colab_cancel_job, so selection among execution-control siblings is left to inference.

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

colab_stop_trainingB

Interrupt a running training job and mark it cancelled.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

TDQS

B3.1/5.0
Behavior3/5

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

The description discloses the core behavior: it interrupts a running training job and changes its state to 'cancelled'. With no annotations provided, the description carries the full burden, but it does not mention side effects, irreversibility, or error behavior; these gaps are moderate for a cancellation operation.

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

Conciseness5/5

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

The description is a single concise sentence with no filler. It front-loads the action and states the outcome efficiently, making it easy for an agent to parse quickly.

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

Completeness3/5

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

The tool is simple, with one parameter and no output schema, so the description covers the essential action. However, given the ambiguous sibling tool set, the absence of usage guidance and any detail about return values or errors makes the description merely adequate rather than complete.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the job_id parameter beyond the schema's property name. Since there is only one string parameter, its purpose is inferable, but the description adds no explicit guidance such as how to obtain the job_id or that it should correspond to a training job returned by colab_run_training.

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

Purpose4/5

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

The description uses a specific verb, 'Interrupt', with a specific resource, 'a running training job', and states the outcome, 'mark it cancelled'. However, it does not explicitly differentiate itself from sibling tools like colab_cancel_job or colab_stop_execution, relying on the phrase 'training job' to imply the distinction.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as colab_cancel_job or colab_stop_execution. It does not mention prerequisites, whether the job must be currently running, or what to do if the job has already completed.

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

colab_uninstall_packageA

Uninstall a Python package from the runtime via pip.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageYes
session_idNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. 'Uninstall' clearly identifies a destructive removal action and 'via pip' adds method context, but it does not mention side effects like dependency impact, irreversibility, or whether a runtime restart is needed.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word adds useful information: the action, the target, the environment, and the mechanism.

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

Completeness2/5

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

Given that there are two parameters, no annotations, and no output schema, the description is too sparse to fully support correct invocation. It leaves the optional session_id parameter unaddressed and does not describe what a successful or failed uninstall looks like, which an agent would need for robust handling.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only weakly maps the 'package' parameter to the phrase 'Python package'. The optional 'session_id' parameter is completely unexplained, and no guidance is given about package naming, version syntax, or how the session is targeted.

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

Purpose5/5

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

The description uses a specific action verb ('Uninstall'), a clear resource ('Python package'), and a method ('via pip'), scoped to 'the runtime'. This clearly distinguishes it from sibling package tools like colab_install_package and colab_list_packages without needing to inspect their schemas.

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

Usage Guidelines3/5

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

The description implies that this tool should be used when a package needs to be removed from the runtime, which is adequate for a straightforward operation. However, it does not explicitly state when to prefer this tool over alternatives or mention related steps such as listing packages or checking current versions first.

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

colab_update_notebookA

Replace a notebook's entire cell list.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
cellsYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It clearly conveys overwrite semantics by saying 'Replace... entire cell list', which is important behavioral context, but it does not disclose side effects, validation behavior, or what happens if a path is invalid or a cell_type is omitted.

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

Conciseness5/5

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

A single sentence with a front-loaded verb and zero filler. It says everything it chooses to say in the most economical form possible.

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

Completeness3/5

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

For a simple two-parameter update with no annotations and no output schema, this is minimally viable: an agent can guess the intent. However, the lack of any guidance about sibling tools and the absence of parameter details make it incomplete for confident autonomous selection.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds little meaning beyond the schema. 'cell list' vaguely aligns with the cells parameter, but path is not explained, and the cells object structure, source format, and optional cell_type behavior are left entirely to inference.

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

Purpose5/5

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

States a specific verb ('Replace') and resource ('a notebook's entire cell list'). The word 'entire' clearly distinguishes it from incremental cell operations like colab_add_cell or colab_edit_cell.

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

Usage Guidelines3/5

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

The behavior implies whole-list replacement, but the description does not explicitly state when to prefer this over ncremental siblings such as add/edit/delete cell, nor does it mention prerequisites like the notebook needing to exist. No alternatives are named.

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

colab_upload_fileB

Upload base64-encoded file content into the runtime's sandboxed workspace. Path is relative to the runtime's sandboxed workspace (e.g. /content/mcp_workspace).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
session_idNo
content_base64Yes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It adds that the path is workspace-relative and content is base64, but it does not disclose overwrite behavior, session_id requirements, file size limits, or what the tool returns after a successful upload.

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

Conciseness5/5

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

Two tight sentences with no filler. The main action is front-loaded, and the additional path-relative detail is directly useful.

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

Completeness3/5

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

The description adequately covers the primary action and path semantics, but for a tool with no annotations and no output schema it leaves gaps: session_id is undocumented and success/error behavior is not described. It is minimally viable but not fully complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description needs to compensate. It does clarify that path is relative to the sandboxed workspace and that content_base64 holds base64-encoded data, but session_id is not explained at all.

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

Purpose4/5

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

The description states a specific verb (upload) and resource (base64-encoded file content into the runtime's sandboxed workspace), making the core purpose clear. It does not explicitly contrast with the sibling colab_write_file, but the base64 upload framing is distinct enough.

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

Usage Guidelines2/5

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

The description provides no guidance on when to choose this tool over alternatives such as colab_write_file or colab_upload_file's sibling file operations. There are no exclusions, prerequisites, or decision criteria, leaving the agent to infer usage.

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

colab_write_fileB

Write text content to a file in the runtime's sandboxed workspace. Path is relative to the runtime's sandboxed workspace (e.g. /content/mcp_workspace).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes
session_idNo

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the file is written to the sandboxed workspace and that paths are relative, which is useful context. However, it does not mention whether the file is overwritten or appended, what happens if the path does not exist, whether the directory is created automatically, or any permission requirements. For a write operation, these are important behavioral traits not disclosed.

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

Conciseness4/5

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

The description is a single sentence that is concise and gets to the point. It is not overly verbose, but it lacks structured details like parameter explanations or usage examples that could be front-loaded. It does not waste words, but the brevity means some information is missing. Overall, it is appropriately sized for a simple tool.

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

Completeness3/5

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

For a write tool with no output schema and no annotations, the description is somewhat minimal. It covers the essential purpose and path context, but lacks information about session_id, overwrite behavior, directory creation, and error conditions. Given the complexity (3 parameters, sandboxed environment), an agent might need additional details to avoid misusing the tool. The description is adequate but not comprehensive.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the parameters. The description explains 'path' (relative to sandboxed workspace) and 'content' (text content), but does not explain 'session_id' at all. Since 'session_id' is a parameter that likely selects the runtime session, its absence in the description is a gap. The parameter names are not self-explanatory enough without documentation.

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

Purpose4/5

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

The description states a specific verb ('write') and resource ('text content to a file'), and specifies the location (sandboxed workspace) with an example path. It distinguishes from siblings like colab_read_file and colab_upload_file by clarifying it writes text content, not binary uploads. However, it doesn't explicitly name a sibling to differentiate from, but the purpose is clear.

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

Usage Guidelines3/5

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

The description implies when to use it: when you want to write text content to a file in the runtime workspacechesheetbs. It mentions the relative path convention, which serves as a usage hint. However, it does not explicitly state when not to use it or mention alternatives (e.g., when to use colab_upload_file for binary files). No exclusions are provided.

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

Tool Schema Changelog

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

  1. 40 tool updatesv0.1.0
    • First observedcolab_add_cell
    • First observedcolab_cancel_job
    • First observedcolab_create_directory
    • First observedcolab_create_notebook
    • First observedcolab_create_session
    • First observedcolab_delete_cell
    • First observedcolab_delete_file
    • First observedcolab_download_file
    • First observedcolab_edit_cell
    • First observedcolab_evaluate_model
    • First observedcolab_execute_cell
    • First observedcolab_execute_code
    • First observedcolab_execute_notebook
    • First observedcolab_export_model
    • First observedcolab_export_notebook
    • First observedcolab_get_artifacts
    • First observedcolab_get_cpu
    • First observedcolab_get_disk
    • First observedcolab_get_gpu
    • First observedcolab_get_job
    • First observedcolab_get_logs
    • First observedcolab_get_memory
    • First observedcolab_get_notebook
    • First observedcolab_get_package_version
    • First observedcolab_get_runtime
    • First observedcolab_install_package
    • First observedcolab_list_files
    • First observedcolab_list_jobs
    • First observedcolab_list_packages
    • First observedcolab_move_file
    • First observedcolab_read_file
    • First observedcolab_restart_runtime
    • First observedcolab_run_training
    • First observedcolab_save_model
    • First observedcolab_stop_execution
    • First observedcolab_stop_training
    • First observedcolab_uninstall_package
    • First observedcolab_update_notebook
    • First observedcolab_upload_file
    • First observedcolab_write_file

TDQS

B3.2/5.0

Scored across 40 tools

Disambiguation4/5

Most tools follow a clear resource-action split (notebook, file, package, runtime, job), so an agent can usually pick the right one. However, cancel_job, stop_training, and stop_execution overlap in purpose, and save_model/export_model are difficult to distinguish without reading deeply.

Naming Consistency5/5

All tools use the colab_ prefix with verb_noun snake_case, making the API highly predictable. Even large groups like colab_get_gpu/cpu/memory/disk follow a uniform pattern.

Tool Count2/5

Forty tools is a large surface for a single MCP server, falling into the 'too heavy' range. Even though each tool is individually meaningful, the set bundles notebook, file, package, runtime, and job-management responsibilities that could be separate servers.

Completeness4/5

The toolset covers notebook CRUD/cell editing/execution, file management, package management, runtime introspection, and training-job lifecycle. Minor gaps exist—no dedicated notebook delete/list or cell retrieval-by-index—but file tools and execute options provide workarounds.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Local-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.
    59
    8
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP-compatible AI assistants to run Python code on Google Colab GPU/TPU runtimes, supporting accelerators like T4, A100, H100, with background execution and Google Drive integration.
    10
    3
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    MCP 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.
    3
    9
    MIT