Skip to main content
Glama
ahmed-coding

Gravitas-Core-MCP

by ahmed-coding

Gravitas-Core-MCP

Version: 0.1.0
Role: Core System Blueprint / Autonomous AI Control Plane
Target Platforms: VS Code (Cline / Claude Dev), Cursor, Windsurf, Claude Desktop

Production-grade, autonomous Model Context Protocol (MCP) server that elevates AI models from stateless code generators into persistent, self-verifying software engineers.

Features

  • Persistent memory — SQLite-backed task ledger, context snapshots, canonical state, failure memory, tool usage patterns

  • Cognitive control — Deterministic task state machine (PLANNING → CODING → EXECUTING → VERIFYING → COMPLETED / FAILED_RETRY / ROLLBACK), retry policies, rollback on repeated failures

  • Terminal engine — Shell execution with timeout, cwd isolation, allowlist/denylist, background process management

  • Browser engine — Playwright-based navigation, DOM snapshot, screenshots, console error streaming

  • Project intelligence — Recursive structure analysis with noise filtering (.git, node_modules, build artifacts)

  • Model handover — Auto-generated Model Resume Package (goal, task, constraints, failures, safe/do-not-touch files) for model swap, editor restart, or crash recovery

Related MCP server: trw-mcp

Requirements

  • Python 3.10+

  • UV (Astral) for install/run

  • Browser: Uses existing Chrome or Edge on your machine when available — no playwright install required. If you have neither, run playwright install chromium once.

Installation

No local install needed — run directly from GitHub (see Use it from GitHub below):

uvx run git+https://github.com/ahmed-coding/Gravitas-Core.git

Or install from PyPI:

# Install and run via uvx (no global install)
uvx Gravitas-Core-MCP

Or install into a project:

uv add Gravitas-Core-MCP
# Then run: uv run Gravitas-Core-MCP

Browser tools: If you already have Chrome or Edge installed, nothing else is needed. Otherwise, run once: uv run playwright install chromium.

Use it from GitHub (direct configuration)

Run the server directly from this repository with no local installation — UV fetches the repo and runs it. Repository: ahmed-coding/Gravitas-Core.

The repo includes a GitHub Action (.github/workflows/ci.yml) that runs tests and verifies the server starts; you can see it in the Actions tab after push.

Run from GitHub with uvx

uvx run git+https://github.com/ahmed-coding/Gravitas-Core.git

Or pin a branch/tag:

uvx run "git+https://github.com/ahmed-coding/Gravitas-Core.git@main"
uvx run "git+https://github.com/ahmed-coding/Gravitas-Core.git@v1.1.0"

MCP client config (GitHub direct)

Requires UV to be installed and uvx in your PATH. If you see spawn uvx ENOENT, use the localhost config below instead (no uv/uvx needed).

Cursor — e.g. ~/.cursor/mcp.json or .cursor/mcp.json:

{
  "mcpServers": {
    "gravitas-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ahmed-coding/Gravitas-Core.git",
        "Gravitas-Core-MCP"
      ]
    }
  }
}

With a specific ref (branch or tag):

{
  "mcpServers": {
    "gravitas-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ahmed-coding/Gravitas-Core.git@main",
         "Gravitas-Core-MCP"
      ]
    }
  }
}

Cloned repo (run from local path):

{
  "mcpServers": {
    "gravitas-mcp": {
      "command": "/path/to/Gravitas-Core/.venv/bin/python",
      "args": ["-m", "gravitas_mcp.server"]
    }
  }
}

(Create the venv first: cd /path/to/Gravitas-Core && uv venv && uv sync, then use .venv/bin/python in command.)

Run from localhost (local clone)

Use the server from a clone on your machine so you can develop and test without GitHub.

1. Clone and install (one time)

git clone https://github.com/ahmed-coding/Gravitas-Core.git
cd Gravitas-Core
uv sync

(If you don’t have UV: pip install uv or use python -m venv .venv && .venv/bin/pip install -e . and then use .venv/bin/python in the configs below.)

2. Run the server in a terminal (optional)

cd /path/to/Gravitas-Core
uv run python -m gravitas_mcp.server

OR with uvicorn

cd /path/to/Gravitas-Core
uv run python -m  gravitas_mcp.mcp_webapp

The server uses stdio; your MCP client (Cursor, etc.) will start it automatically when configured.

3. MCP config for localhost

Option A — Use this repo as the Cursor project (recommended)
Open the Gravitas-Core folder in Cursor. The project already includes .cursor/mcp.json so the gravitas MCP server runs from your local clone (no GitHub needed).

Option B — Use from any project (user-level config)
Copy this into ~/.cursor/mcp.json and replace YOUR_PATH with the full path to your clone (e.g. /home/ahmed/Desktop/Gravitas-MCP-Core or C:\Users\You\Gravitas-Core):

{
  "mcpServers": {
    "gravitas-mcp": {
      "command": "YOUR_PATH/.venv/bin/python",
      "args": ["-m", "gravitas_mcp.server"]
    }
  }
}

On Windows use YOUR_PATH\\.venv\\Scripts\\python.exe and "args": ["-m", "gravitas_mcp.server"].

Option C — Use uv with project path (no venv path)
If Cursor runs the command with a fixed cwd, you can use:

{
  "mcpServers": {
    "gravitas-mcp": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/Gravitas-Core", "python", "-m", "gravitas_mcp.server"]
    }
  }
}

Replace /path/to/Gravitas-Core with your actual clone path.

Troubleshooting

Error

Fix

spawn uvx ENOENT

Cursor can’t find uvx. Either install UV and ensure uvx is in your PATH, or use localhost: open this repo in Cursor (so it uses the project’s .cursor/mcp.json) and run python3 -m venv .venv && .venv/bin/pip install -e . in the project folder. The project config uses the venv’s Python, so no uv needed.

Server not starting

Ensure .venv exists: from the project root run python3 -m venv .venv then .venv/bin/pip install -e . (or uv sync if you have uv).

MCP client configuration

Blackbox / Cursor (user-level config)

Add to ~/.config/Code/User/globalStorage/blackboxapp.blackboxagent/settings/blackbox_mcp_settings.json:

{
  "mcpServers": {
    "gravitas-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ahmed-coding/Gravitas-Core.git",
        "Gravitas-Core-MCP"
      ]
    }
  }
}

With a specific ref (branch or tag):

{
  "mcpServers": {
    "gravitas-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ahmed-coding/Gravitas-Core.git@v1.1.0",
        "Gravitas-Core-MCP"
      ]
    }
  }
}

From local clone:

{
  "mcpServers": {
    "gravitas-mcp": {
      "command": "/path/to/Gravitas-Core/.venv/bin/python",
      "args": ["-m", "gravitas_mcp.server"],
      "env": {
        "PYTHONPATH": "/path/to/Gravitas-Core"
      },
      "type": "stdio"
    }
  }
}

Cursor (project-level config)

Add to .cursor/mcp.json or .vscode/mcp.json:

{
  "mcpServers": {
    "gravitas-mcp": {
      "command": "uvx",
      "args": ["Gravitas-Core-MCP"]
    }
  }
}

Repository structure

Gravitas-Core-MCP/
├── gravitas_mcp/
│   ├── __init__.py
│   ├── server.py      # MCP entrypoint, tool wiring
│   ├── memory.py      # SQLite persistence, task ledger, state APIs
│   ├── controller.py  # State machine, retry/rollback
│   ├── terminal.py    # Subprocess execution, allowlist/denylist
│   ├── browser.py     # Playwright automation
│   └── project_intel.py # Structure analysis, noise filtering
├── pyproject.toml
├── README.md
├── LICENSE
└── .gitignore

Tool contract

All tools return deterministic JSON:

{
  "status": "success | failure",
  "observations": {},
  "errors": [],
  "next_recommended_action": ""
}

Mandatory tools (PRD)

Tool

Description

get_last_state

Last known state (snapshot + active task)

get_canonical_state

Last verified immutable state (rollback/recovery)

record_failure

Record failed strategy/command

resume_task

Load task context for resumption

controller_create_task

Create task, state PLANNING

controller_transition

Move task to PLANNING/CODING/EXECUTING/VERIFYING/FAILED_RETRY/ROLLBACK/COMPLETED

controller_record_step_failure

Record step failure (may trigger rollback)

terminal_execute

Run shell command with timeout

browser_navigate / browser_snapshot / browser_screenshot

UI verification

project_get_map

Project structure with noise filtering

get_model_resume_package

Model handover package

Brain database

State is stored in .gravitas_brain.db in the project root (or cwd). Optional: add .gravitas_brain.db to .gitignore if you do not want to commit it.

License

MIT — Local-first, user-sovereign, safe by default.

Available Tools

21 tools
browser_get_console_errorsA

Return collected JS console errors since last navigate.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses the behavioral trait of collecting errors since the last navigate, implying a reset on navigation. Without annotations, this carries the burden of transparency; it effectively communicates that this is a read operation with no destructive side effects.

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

Conciseness5/5

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

The description is a single, concise sentence that conveys the tool's purpose without any unnecessary words or details, earning its place efficiently.

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 tool with no parameters and a simple output (collected JS console errors), the description is adequate. It does not detail the return format or error types, but this is acceptable given the tool's low complexity and lack of output schema.

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

Parameters4/5

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

With zero parameters and schema description coverage at 100%, the baseline is 4. The description does not need to add parameter specifics as there are none, and it accurately reflects the tool's simplicity.

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

Purpose5/5

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

The description clearly states the tool returns collected JS console errors since the last navigate, with a specific verb ('Return') and resource ('JS console errors'), and it distinguishes from sibling browser tools like browser_hover and browser_screenshot by focusing on console errors.

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 implicitly indicates usage after a navigation by specifying 'since last navigate.' It provides clear context but does not explicitly mention when not to use it or alternatives, though the tool's purpose is straightforward with no parameters.

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

browser_hoverB

Hover over an element by CSS selector.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYesCSS selector for element

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It states the action but does not disclose side effects (e.g., triggering JavaScript events, potential errors, or state changes). Minimal behavioral insight.

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?

Single sentence, no fluff, efficient and to the point.

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

Completeness3/5

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

Simple tool with one parameter, but lacks behavioral context (e.g., error handling, element visibility requirements). Minimally adequate for a basic operation.

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 100% with parameter 'selector' described. Description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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 (hover) and the resource (element by CSS selector). It distinguishes from sibling tools like browser_navigate and browser_screenshot which perform different actions.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. Missing prerequisites (e.g., page must be loaded), behavior on missing elements, and comparison to other browser tools.

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

browser_navigateC

Navigate to URL (Playwright).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
wait_untilNo

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It only mentions 'Playwright' but fails to explain key behaviors like whether it waits for full page load, handles redirects, or errors. The wait_until parameter in the schema hints at waiting, but the description is silent.

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

Conciseness2/5

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

While the description is short (4 words), it is under-specified. Conciseness should not come at the expense of necessary detail. There is no structure or front-loading of key information beyond the basic action.

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

Completeness1/5

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

Given low schema coverage, no output schema, and no annotations, the description must compensate. It fails to provide enough context for an AI agent to correctly invoke the tool, lacking details on behavior, parameter usage, and return values.

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%, meaning the JSON schema does not describe parameters. The description adds no meaning beyond the schema; it does not explain the 'url' format or valid values for 'wait_until'. The agent gets no clarity on how to use these parameters.

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

Purpose5/5

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

The description clearly states the verb 'Navigate' and the resource 'URL', which is a specific action. It distinguishes from sibling tools like browser_hover or browser_screenshot, as navigation is a distinct browser action.

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 use this tool versus alternatives. It does not mention prerequisites, limitations, or when not to use it (e.g., if page is already loaded).

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

browser_screenshotB

Take screenshot; optional path to save file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo

TDQS

B3/5.0
Behavior2/5

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

No annotations provided, so the description must convey behavioral traits. It only mentions taking a screenshot and an optional save path, but fails to disclose whether the action is read-only, whether it affects the browser state, or any file system implications (e.g., overwrite, format). Minimal transparency.

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

Conciseness4/5

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

The description is very concise, using two short fragments. It is front-loaded with the core action, but the structure could be improved by separating into a complete sentence.

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

Completeness2/5

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

Given the simplicity of the tool (one optional param, no output schema), the description is incomplete. It does not specify what happens when no path is provided (e.g., returns base64 data), nor does it mention the return value or any side effects, leaving gaps for the agent.

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

Parameters4/5

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

The schema has 0% description coverage, and the description adds meaning by stating 'optional path to save file', which explains the purpose of the 'path' parameter. This adds value beyond the schema alone.

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 'Take screenshot', indicating a specific verb and resource (screenshot of the browser). It is straightforward but does not differentiate from sibling tool 'browser_snapshot', missing a chance to clarify 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?

No guidance on when to use this tool vs alternatives like 'browser_snapshot' or other browser tools. The description lacks context for appropriate usage.

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

browser_snapshotB

Capture DOM accessibility tree and console errors.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

The description lacks behavioral disclosure beyond the basic action. It does not state if the tool is destructive, whether it requires specific permissions, or what side effects occur. With no annotations, the description carries full burden but 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 concise sentence with no wasted words. It is appropriately sized for the tool's simplicity.

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

Completeness2/5

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

Given the absence of an output schema and annotations, the description is incomplete. It does not explain what the tool returns (e.g., format of the accessibility tree, console errors as strings/objects). This is critical for the agent to interpret results.

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?

There are no parameters, and schema description coverage is 100% (trivial). The description does not add any parameter-specific meaning, but baseline for zero-parameter tools is 4, which 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 states the tool captures the DOM accessibility tree and console errors, which distinguishes it from siblings like browser_screenshot (visual) and browser_get_console_errors (errors only). However, it does not explicitly differentiate from these siblings, so a 5 is not warranted.

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 provided on when to use this tool versus alternatives. There are no indications of prerequisites, context, or when not to use it, which is a significant gap given the context signals and sibling tools.

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

controller_create_taskC

Create a new task and set state to PLANNING.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesTask goal
task_idNoOptional task ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose all behavioral traits. It only notes that state is set to 'PLANNING', but omits important details such as side effects, required permissions, whether the task_id parameter can override existing IDs, or what happens if goal is empty. This is insufficient for safe usage.

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

Conciseness4/5

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

The description is a single sentence with no wasted words. It is appropriately short for a simple creation tool, though it could benefit from a brief note about the task_id parameter's 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?

Given the lack of output schema and the tool's role in task lifecycle management, the description is incomplete. It does not explain what constitutes a 'task', how state transitions work, or what the response looks like. Sibling tools like controller_get_state hint at a broader context that is not addressed.

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 100%, so the schema already describes the two parameters ('goal' and 'optional task_id'). The description adds no extra meaning beyond the schema, maintaining the baseline score. However, it does not clarify the relationship between parameters or any constraints.

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 action ('Create a new task') and a specific detail ('set state to PLANNING'). It distinguishes from sibling tools like controller_get_state or controller_record_step_failure, but could explicitly mention that this tool is for initiating tasks rather than modifying existing ones.

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 usage guidance is provided. The description does not mention when to use this tool versus alternatives (e.g., controller_transition or resume_task), nor does it specify prerequisites or conditions for safe invocation.

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

controller_get_stateC

Return current task state and policy info.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes

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 should disclose behavioral traits like side effects or error handling. It only states it returns state and policy info, omitting details on whether it is read-only, what happens on invalid task_id, or any latency/rate limits.

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

Conciseness3/5

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

The description is a short single sentence, which is concise but lacks necessary details. It is front-loaded with the verb 'Return', but the brevity sacrifices informative content.

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

Completeness2/5

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

Given the absence of an output schema and annotations, the description should explain what 'task state' and 'policy info' encompass. It does not, leaving the agent with incomplete understanding of the tool's output.

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 does not mention the task_id parameter. It fails to add any meaning beyond the raw schema, leaving the agent without context on how to use the 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 clearly states 'Return current task state and policy info' with a specific verb and resource. However, it doesn't differentiate from sibling tools like get_canonical_state or get_last_state, which might have overlapping purposes.

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 provided on when to use this tool versus alternatives such as get_canonical_state or get_last_state. The description is too minimal to help an agent decide.

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

controller_record_step_failureB

Record a step failure; may trigger FAILED_RETRY or ROLLBACK.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
task_idYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral weight. It discloses the possible downstream transitions (FAILED_RETRY or ROLLBACK), which is valuable. However, it omits other important traits like idempotency, required permissions, or effect on task state beyond the trigger.

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 fluff. While it could be more structured, it efficiently conveys the core action and a key side effect.

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 two simple string parameters and no output schema, the description is minimal but covers the essential purpose and a critical behavior trigger. However, it lacks sufficient detail for an agent to fully understand invocation context (e.g., when step failure occurs, how reason is used).

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 description provides no explanation of the parameters (reason, task_id) despite 0% schema coverage. An agent has no semantic context for what values are appropriate for 'reason' or how 'task_id' relates to a step.

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

Purpose5/5

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

The description clearly states the tool's purpose: recording a step failure, with the specific side effect of possibly triggering FAILED_RETRY or ROLLBACK. It differentiates from sibling tools like record_failure by being step-specific and mentioning state transitions.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives (e.g., record_failure). It only implies usage for step failure recording, leaving ambiguity about context selection.

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

controller_transitionC

Transition task to a new state (PLANNING, CODING, EXECUTING, VERIFYING, FAILED_RETRY, ROLLBACK, COMPLETED).

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
new_stateYes

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 fully disclose behavior. It only states the action without detailing effects, side effects, permissions, or error handling. Does it validate transitions? What happens if task doesn't exist?

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

Conciseness4/5

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

A single sentence with clear action and list of states. No wasted words, but could be more structured with bullet points.

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

Completeness2/5

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

Given no annotations or output schema, the description is incomplete for a mutation tool. It does not explain return value, error conditions, or transition logic (e.g., what states are reachable from current state).

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

Parameters2/5

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

Schema description coverage is 0%. The description only lists possible states for new_state but does not explain task_id or provide constraints like valid state transitions. Parameter names are self-explanatory but description adds minimal value.

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

Purpose5/5

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

The description clearly states the tool's action: 'Transition task to a new state' and lists the valid states. It distinguishes from sibling tools like controller_create_task and controller_get_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?

No guidance on when to use this tool versus alternatives. Does not mention prerequisites, valid transitions, or when not to use.

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

get_canonical_stateA

Return the last verified, immutable working state for rollback/recovery.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It clearly states the tool returns an immutable state, indicating a safe read operation. However, it does not disclose potential behavioral traits such as latency or error conditions.

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 with no wasted words. It is front-loaded with the action and result, and every word earns its place.

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

Completeness4/5

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

Given no output schema and no annotations, the description adequately covers the tool's purpose and return value for a simple retrieval. However, it could have elaborated on the structure or contents of the state for better completeness.

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

Parameters4/5

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

The tool has no parameters, so the schema coverage is 100% vacuously. With 0 parameters, the baseline is 4, and the description adds no parameter info since none exist.

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 ('Return') and resource ('last verified, immutable working state') with a clear purpose ('for rollback/recovery'). It distinguishes from siblings like 'get_last_state' by emphasizing 'verified' and 'immutable', making its role unique.

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 rollback/recovery but does not explicitly state when to use this tool vs alternatives like 'get_last_state' or 'memory_save_snapshot'. No exclusions or prerequisites are provided.

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

get_last_stateA

Return the last known state (most recent snapshot + active task). Authoritative memory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It indicates the tool returns data ('Return...') and implies it is read-only via 'Authoritative memory' (source of truth). No contradictions or hidden side effects are suggested, but it does not explicitly state idempotency or non-destructiveness.

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, well-formed sentence that efficiently conveys purpose and content. No superfluous words.

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

Completeness5/5

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

Given the tool has no parameters and no output schema, the description sufficiently explains what is returned (snapshot + active task) and its authoritative nature. No additional context is necessary.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%. The description adds no parameter details because none are needed. Baseline is appropriate.

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

Purpose5/5

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

The description clearly states the tool returns the last known state with specifics: 'most recent snapshot + active task' and labels it 'Authoritative memory.' This distinguishes it from sibling tools like controller_get_state which may not specify recency or authority.

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 does not explicitly state when to use this tool versus alternatives like controller_get_state or memory_save_snapshot. While 'last known state' implies it's for the latest information, no exclusions or context are provided.

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

get_model_resume_packageB

Generate Model Resume Package for model swap/editor restart/crash recovery: goal, task, constraints, failures, safe/do-not-touch files.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description alone must convey behavioral traits. It states the tool generates a package but does not disclose whether it is a read-only operation, modifies state, or requires specific permissions. The mention of 'safe/do-not-touch files' hints at outputs but lacks explicit behavioral detail.

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 front-loads the purpose and use cases. The colon-delimited list of components is efficient, though the sentence is somewhat dense. It could be split for clarity, but overall it is concise and avoids redundancy.

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

Completeness2/5

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

Given the low complexity (one parameter, no output schema), the description should explain the return value and prerequisites. It does not describe what the generated package contains in terms of format or how to use the task_id. The lack of output schema amplifies this gap.

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

Parameters1/5

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

The input schema has one parameter (task_id) with 0% schema description coverage. The description does not mention task_id, explain its purpose, format, or how to obtain it. This is a critical gap for a single-parameter tool.

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

Purpose5/5

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

The description clearly states the tool generates a 'Model Resume Package' for specific scenarios (swap/restart/crash recovery) and lists components (goal, task, constraints, failures, files). This is a specific verb+resource, and it distinguishes from sibling tools like 'resume_task' by naming the use cases.

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

Usage Guidelines4/5

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

The description explicitly specifies when to use the tool: 'for model swap/editor restart/crash recovery'. This provides clear context, though it does not mention when not to use or suggest alternatives, missing some guidance.

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

memory_save_snapshotC

Save a context snapshot for current task (internal use).

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
project_mapYes
snapshot_idYes
do_not_touchYes
safe_to_editYes

TDQS

C2.4/5.0
Behavior2/5

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

Without annotations, the description carries full burden for behavioral disclosure. It only states 'save a context snapshot' but does not reveal side effects (e.g., overwriting behavior), dependencies, or idempotency. Minimal transparency is provided.

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

Conciseness3/5

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

The description is a single sentence, very concise. However, it is so brief that it omits necessary detail, crossing from concise into underspecified. It is front-loaded but at the expense of completeness.

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

Completeness2/5

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

Given the tool's complexity (5 required params, nested objects, no output schema), the description is far too minimal. It lacks information about parameter semantics, return values, and how it interacts with other memory tools. The input schema is also undocumented, making the tool difficult to use 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?

Schema description coverage is 0% (no parameter descriptions), and the tool description adds no meaning to the five required parameters (snapshot_id, task_id, project_map, safe_to_edit, do_not_touch). The description fails to explain their roles or constraints, leaving the agent uninformed about critical inputs.

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 tool saves a context snapshot for the current task, specifying 'internal use' which hints at system usage. However, it does not differentiate from sibling tools like memory_set_canonical or get_canonical_state, which may have overlapping purposes.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The phrase 'internal use' is vague and does not provide clear usage context or exclusions. There is no mention of scenarios where this tool should not be used.

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

memory_set_canonicalC

Set the canonical (immutable) state to a snapshot (after verification).

ParametersJSON Schema
NameRequiredDescriptionDefault
snapshot_idYes

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 must disclose behavior. It mentions setting an 'immutable' state, implying finality, but fails to explain what happens to the previous canonical state, if the operation is reversible, or any side effects. The term 'set' contradicts 'immutable' without clarification.

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 with minimal waste. However, it could benefit from additional context without becoming verbose.

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

Completeness2/5

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

The tool is simple but part of a workflow with siblings like 'memory_save_snapshot' and 'get_canonical_state'. The description lacks prerequisites (e.g., the snapshot must exist and be verified) and does not explain the role of this tool in the broader context, leaving gaps for a new user.

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

Parameters2/5

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

With 0% schema description coverage, the parameter 'snapshot_id' is entirely undocumented. The description adds only that it refers to a 'snapshot', but does not specify its origin, format, or how to obtain it, leaving the agent guessing.

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 'Set' and the resource 'canonical (immutable) state', with an implied workflow step 'after verification'. It distinguishes from siblings like 'get_canonical_state' by indicating mutation, but does not explicitly contrast with 'memory_save_snapshot' or other state-changing tools.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like 'memory_save_snapshot'. The phrase 'after verification' hints at a prerequisite but does not elaborate on conditions or scenarios.

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

project_get_mapC

Recursive project structure with noise filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNo
max_entriesNo
project_rootNo

TDQS

C2/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 mentions recursion and noise filtering but does not explain side effects, data scope, or whether it is read-only. Insufficient for a tool with no annotations.

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

Conciseness2/5

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

Extremely short (6 words), but this under-specification is not conciseness; it omits critical information. The description does not earn its place as it conveys little value.

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

Completeness1/5

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

Given 3 parameters with no output schema, the description is insufficient. It does not explain return format, filtering behavior, or parameter constraints, leaving an agent uninformed about how to use the tool effectively.

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 adds no meaning to parameters. 'max_depth', 'max_entries', and 'project_root' are named but not explained in context. The tool fails to compensate for the lack of schema descriptions.

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

Purpose3/5

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

The description states it retrieves a recursive project structure with noise filtering, which gives a general idea. However, 'noise filtering' is ambiguous and doesn't specify what noise is. It is not a tautology, but lacks precision for clear purpose.

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

Usage Guidelines2/5

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

No guidance on when or when not to use this tool versus alternatives. Siblings are diverse, but the description does not distinguish usage context or prerequisites.

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

record_failureC

Record a failed strategy/command to prevent repetition.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYesFailure reason
contextYesContext (e.g. task_id, command)

TDQS

C2.9/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 traits, but it only states the action without mentioning side effects, required permissions, or impacts on system state. Inadequate for a record-type 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 a single sentence with no unnecessary words, efficiently conveying 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?

Given the complexity of two parameters (including a nested object), no output schema, and missing annotations, the description is too minimal to fully inform an agent about the tool's behavior and return values.

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 100%, so the baseline is 3. The description adds no additional meaning beyond the schema's parameter descriptions.

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 tool records a failed strategy/command to prevent repetition, specifying the verb and resource. However, it does not differentiate itself from the sibling tool 'controller_record_step_failure', which may serve a similar purpose.

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 provided on when to use this tool versus alternatives like 'controller_record_step_failure'. The description lacks context for usage decisions.

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

resume_taskB

Load task and its context for resumption (model handover/restart).

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask ID

TDQS

B3.2/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 mentions 'load' but does not disclose whether the tool is read-only, destructive, requires permissions, or has side effects. This is insufficient for a tool with no annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for the tool's simplicity.

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 no output schema and no annotations. While the description explains the purpose, it omits details on return values, error behavior, or prerequisites (e.g., task must exist). This leaves the agent underinformed for reliable invocation.

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

Parameters3/5

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

Schema coverage is 100% (task_id described simply as 'Task ID'). The description adds context about loading 'context' but does not elaborate on task_id format or constraints. With high schema coverage, a 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 states the tool loads a task and its context for resumption, with a specific verb ('load') and scope (task and context). It distinguishes from siblings like controller_create_task (create) and get_model_resume_package (get package), but does not explicitly differentiate from all related tools.

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

Usage Guidelines3/5

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

The description implies usage during model handover/restart, providing clear context. However, it offers no explicit guidance on when not to use this tool or alternatives (e.g., get_model_resume_package).

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

terminal_executeB

Execute a shell command with timeout and cwd. Returns stdout, stderr, exit_code.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
commandYes
timeout_secNo

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 must cover behavioral traits. It states the return values (stdout, stderr, exit_code) and mentions timeout, but omits side effects, security implications, or blocking 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 very concise with a single sentence that front-loads the core action. It could be slightly more structured (e.g., listing parameters), but it wastes no 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?

Given the complexity of a shell execution tool (3 parameters, no output schema), the description adequately covers return values but fails to explain error handling, environment details, or cancellation behavior. It is minimally 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?

With 0% schema description coverage, the description adds value by explaining that cwd is current working directory and timeout_sec is timeout. However, the 'command' parameter lacks any additional meaning beyond its name.

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

Purpose5/5

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

The description clearly states the verb 'Execute', the resource 'shell command', and includes key features like timeout and cwd. It distinguishes the tool from sibling terminal tools (e.g., terminal_start_background) by implying synchronous one-off execution.

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 (e.g., background execution, browser tools). It gives no context for when not to use it or what prerequisites exist.

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

terminal_list_backgroundA

List active background process ids.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 bears full burden. It states a read-only action but omits details like output format (just IDs?), error behavior, or performance implications. Adequate but minimal.

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?

Single sentence with no wasted words. Front-loaded with the key action and resource.

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 zero-parameter tool, the description covers the core purpose. However, it does not mention output format, error conditions, or relation to sibling tools, which could aid completeness.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. Baseline score of 4 applies; no additional parameter information needed.

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

Purpose5/5

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

The description clearly states the tool lists active background process IDs. It distinguishes from siblings like terminal_start_background and terminal_stop_background, which perform different actions.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., terminal_execute, terminal_start_background). The description assumes the agent knows when listing is appropriate.

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

terminal_start_backgroundC

Start a background process; use process_id to stop later.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
commandYes
process_idYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, so the description carries the full burden. It only says 'start a background process', but does not disclose side effects, permissions, output, or what happens to the process. Minimal behavioral context.

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

Conciseness5/5

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

The description is very short (two sentences) and front-loaded. Every word is necessary and contributes to understanding the core purpose. No wasted text.

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

Completeness2/5

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

Given the tool has 3 parameters, no output schema, and no annotations, the description is insufficient. It lacks details on how to use parameters, expected outcomes, and prerequisites. Incomplete for effective invocation.

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

Parameters2/5

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

Schema description coverage is 0%. The description does not explain any parameter (command, process_id, cwd). While parameter names are somewhat self-explanatory, the description adds no value beyond the schema, failing to compensate for the lack of 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 'Start a background process; use process_id to stop later' clearly states the action and resource (starting a background process). It distinguishes from siblings like terminal_execute by implying foreground vs background, but lacks explicit 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?

No guidance on when to use this tool vs alternatives like terminal_execute or terminal_stop_background. The only hint is the mention of process_id for stopping, but no explicit when-not or context for selection.

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

terminal_stop_backgroundC

Terminate a background process by process_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
process_idYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It lacks details about side effects, error behavior, or whether termination is forceful or graceful. 'Terminate' implies destructiveness, but no safety info is given.

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

Conciseness3/5

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

The description is very brief (one sentence) and front-loaded with key info, but it lacks structure. While concise, it sacrifices necessary detail for the tool's complexity.

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

Completeness2/5

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

Given no output schema and a destructive action, the description is incomplete. It omits return values, error handling, and impact on other processes, leaving ambiguity for an AI agent.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning beyond the schema. The schema only defines process_id as a required string; the description does not clarify expected format, how to obtain the ID, or constraints.

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

Purpose5/5

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

The description clearly states the action (terminate), the target resource (background process), and the required identifier (process_id). It effectively distinguishes from sibling tools like terminal_start_background and terminal_list_background.

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 provided on when to use this tool versus alternatives. It does not mention prerequisites, such as that the process must be currently running, or when not to use it (e.g., if the process is critical).

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 21 tool updatesv0.1.0
    • First observedbrowser_get_console_errors
    • First observedbrowser_hover
    • First observedbrowser_navigate
    • First observedbrowser_screenshot
    • First observedbrowser_snapshot
    • First observedcontroller_create_task
    • First observedcontroller_get_state
    • First observedcontroller_record_step_failure
    • First observedcontroller_transition
    • First observedget_canonical_state
    • First observedget_last_state
    • First observedget_model_resume_package
    • First observedmemory_save_snapshot
    • First observedmemory_set_canonical
    • First observedproject_get_map
    • First observedrecord_failure
    • First observedresume_task
    • First observedterminal_execute
    • First observedterminal_list_background
    • First observedterminal_start_background
    • First observedterminal_stop_background

TDQS

B3.1/5.0
Disambiguation4/5

Most tools have distinct purposes within their domains (browser, controller, terminal, state). However, `record_failure` and `controller_record_step_failure` overlap in concept, potentially causing confusion. The state retrieval tools (`get_canonical_state`, `get_last_state`, `get_model_resume_package`) are distinct but require careful reading of descriptions.

Naming Consistency4/5

Naming is consistent within domains: browser_*, controller_*, terminal_*. However, across domains, there is inconsistency: some tools use verb_noun order (e.g., `browser_get_console_errors`) while others use noun_verb (e.g., `get_canonical_state`). The pattern is mostly predictable but not uniform.

Tool Count4/5

21 tools is on the higher side but still reasonable for the server's scope, which includes browser automation, task management, terminal execution, and state persistence. Each tool has a clear role, and no tool feels redundant or out of place.

Completeness4/5

The tool set covers the core workflows: browser interaction, task lifecycle, terminal commands, and state recovery. Minor gaps exist (e.g., no file read/edit tool), but the server is focused on orchestration rather than full development, so these omissions are acceptable.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ahmed-coding/Gravitas-Core'

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