Skip to main content
Glama

spillway-mcp — 3-Tier Hybrid Inference Waterfall MCP Server

Node.js >= 18 MCP Protocol Zero Dependencies License: Apache 2.0

1. Executive Summary

spillway-mcp is a zero-dependency Node.js Model Context Protocol (MCP) server that connects Claude Code (Opus / Fable / Sonnet) to a 3-Tier Hybrid Inference Waterfall:

  1. Tier 0 (Apex Orchestrator): Claude Code (Opus / Fable / Sonnet) handles high-level architectural decisions, surgical multi-line Edit patches, and final user synthesis.

  2. Tier 1 & 2 (Cloud Subagent Governor — Google Antigravity agy): Routes wide-context exploration, disjoint-directory swarms, and deep multi-file reasoning across Gemini 3.8 Flash (1x–2x weight) and Gemini 4 Argon (4x–6x weight) with deterministic 5-hour/weekly quota governance and automatic 429 step-down.

  3. Tier 3 (Local Consumer GPU Context Scrubber — Ollama / llama-server): Intercepts high-volume file reads, verbose test/build logs, and leaf-node boilerplate generation on a local GPU (0x cloud quota burn), returning <300 token forensic <file>:<line> digests so raw file bloat and passing test noise never enter cloud context windows.

In production workflows, this spillway architecture reduces frontier cloud token consumption by 40–60% while eliminating mid-session context rot and stale-memory hallucinations.


Related MCP server: multi-ai-hub

2. Architecture & Data Flow

+-----------------------------------------------------------------------------------+
|                        TIER 0: FRONTIER ORCHESTRATOR                              |
|                 Claude Code (Opus / Fable / Sonnet Session)                       |
|   Receives `ZERO-TRUST MEMORY` & routing rules via MCP `initialize.instructions`  |
+-----------------------------------------+-----------------------------------------+
                                          |
                                          | JSON-RPC 2.0 over stdio
                                          v
+-----------------------------------------------------------------------------------+
|                     SPILLWAY MCP SERVER (`server/index.js`)                       |
|  - Server-side disk reader (raw files & verbose logs never cross MCP arguments)   |
|  - Single-process execution queues (AGY_MAX_CONCURRENCY=1, LOCAL_GPU_CONCURRENCY=1)|
|  - Secret/binary lockout (.env*, id_rsa, first-4KB \0 null-byte detection)        |
+-------------------+-------------------------------------------+-------------------+
                    |                                           |
     [Context Scrubbing & Leaf Tasks]            [Cross-Module Analysis & Swarms]
     `local_file_scout`                          `agy_delegate_research`
     `local_exec_and_triage`                     `agy_spawn_swarm` (disjoint paths)
     `local_draft_leaf_code`                     `agy_delegate_edit` / `followup`
                    |                                           |
                    v                                           v
+---------------------------------------+   +---------------------------------------+
|     TIER 3: LOCAL GPU WORKER (0x)     |   |   TIER 1 & 2: GEMINI CLOUD GOVERNOR   |
|  Local GPU 8-24GB (`127.0.0.1:11434/8080`)|   |     Google Antigravity CLI (`agy`)    |
|  - Probes Ollama `/api/ps` (hot VRAM) |   |  - `argon-high` (6x) -> `argon-med`   |
|  - 1-based line numbers + 50/50 slice |   |    -> `argon-low` -> `flash-high`     |
|  - Forensic `SCOUT_SYSTEM_PROMPT`     |   |    -> `flash-medium` -> `flash-low`   |
|  - Empty/truncated overwrite guard    |   |  - 80% session context auto-compaction|
+-------------------+-------------------+   +-------------------+-------------------+
                    |                                           ^
                    +----- Automatic Zero-Error Spillover ------+
                      (If local GPU is offline / gaming mode
                       or payload exceeds VRAM ceiling)

3. Key Engineering Problems Solved

A. Context Pollution & Cloud Token Burn ("Context Rot")

When a frontier orchestrator (Opus / Fable / Sonnet) reads five 800-line source files (~16,000 tokens) or runs pytest / npm test producing 2,500 lines of passing test output (~25,000 tokens), those raw tokens remain in the conversation history for every subsequent turn.

  • How spillway-mcp solves it: local_file_scout and local_exec_and_triage read files and execute test runners on the MCP server side. The local GPU extracts only the requested <file>:L<line> signatures or failing stack traces (<300 tokens), keeping 95%+ of raw noise out of the cloud context window.

B. Zero-Trust Disk Verification (Eliminating Stale-Memory Hallucinations)

In long-running coding sessions (15+ turns), frontier LLMs (Opus / Fable / Sonnet) suffer from recency/memory bias—answering architectural questions from stale turns rather than re-verifying the disk, or skipping Read calls to save context.

  • How spillway-mcp solves it:

    1. Triple-Anchored ZERO-TRUST MEMORY Rule: Injected at Turn 0 via MCP initialize.instructions, reinforced in tool schema descriptions, and anchored at the bottom of every tool output in the [AGY GOVERNOR TELEMETRY] footer.

    2. Forensic SCOUT_SYSTEM_PROMPT: Instructs the local GPU to report only verbatim signatures with 1-based line numbers (src/auth.ts:L42-L58), or emit the deterministic sentinel "NOT_FOUND_ON_DISK: [symbol/query]" if absent.

C. Consumer GPU Safeguards (12 GB VRAM Hard Limits)

Running a local LLM on a multipurpose workstation requires strict hardware safeguards:

  1. Ollama /api/ps vs. /v1/models Trap Guard: On Ollama (:11434), GET /v1/models lists every downloaded model on disk, which can trigger a 15-second cold load of an oversized model. The router probes GET /api/ps first to use the model already hot in VRAM and passes "keep_alive": "30m".

  2. Empty-Output & Truncation Overwrite Guard: In local_draft_leaf_code, if the local model returns <15 characters, conversational filler, an unclosed markdown code fence (```), or finish_reason === "length", the server aborts the disk write, leaves target_file untouched, and escalates to gemini-3.8-flash-high.

  3. Windows Process-Tree Reaping (taskkill /T /F): Timed-out test runners in local_exec_and_triage kill the entire process tree on Windows so orphaned python.exe or node.exe workers never leak RAM/VRAM.

  4. 50-50 Head/Tail Slicing with Preserved Line Numbers: Files exceeding the VRAM context budget (80,000 chars on 12 GB VRAM) are numbered first (1: ...) and sliced 50% head / 50% tail so imports at the top and exports at the bottom retain exact line numbers.

D. Deterministic Quota & Rate-Limit Governance

  • Tracks rolling 5-hour and weekly weighted burn budgets in config/state-ledger.json (auto-initialized from config/state-ledger.example.json).

  • Parses 429 RESOURCE_EXHAUSTED cooldown timers (Resets in 1h20m30s) from agy logs, locks the exhausted tier until its reset timestamp, and transparently steps down the fallback chain (argon-high -> argon-medium -> argon-low -> flash-high -> flash-medium -> flash-low).

E. Non-Invasive Security & Least-Privilege Defaults

  • Zero Side Effects on stdio Startup: Starting the MCP server never modifies CLAUDE.md, AGENTS.md, .git/config, or .claude/settings.local.json.

  • Least-Privilege Bootstrap: Running --bootstrap never sets enableAllProjectMcpServers: true and pre-approves only the 4 read-only tools (agy_status, agy_delegate_research, agy_spawn_swarm, local_file_scout).

  • Safe Triage Command Allowlist: local_exec_and_triage blocks shell chaining operators (&&, ;, |) and restricts execution to allow-listed test, typecheck, and lint runners.


4. Exposed MCP Tools (9 Tools)

Tool Name

Tier

Quota Burn

Purpose

local_file_scout

Tier 3 (Local GPU -> Flash Fallback)

0x

Forensic <file>:L<line> signature & import extractor (<300 tokens).

local_exec_and_triage

Tier 3 (Local GPU -> Flash Fallback)

0x

Runs allow-listed test/build commands; returns <=40 lines directly or scrubs >40 lines on GPU.

local_draft_leaf_code

Tier 3 (Local GPU -> Flash Fallback)

0x

Drafts boilerplate/unit tests to disk with truncation guard + git diff --stat.

agy_delegate_research

Tier 1/2 (Gemini Flash / Argon)

1x–6x

Read-only codebase investigation (--mode=plan) with headless git allow-list rules.

agy_spawn_swarm

Tier 1 (Gemini Flash Low/Med)

1x/task

Disjoint-directory subagent swarm with path-collision validation.

agy_delegate_edit

Tier 2 (Gemini Argon / Flash)

2x–6x

Scoped multi-file modifications (--mode=accept-edits) with optional IDE --diff review.

agy_session_followup

Tier 1/2 (Session Resume)

1x–6x

Resumes cached conversation_id and auto-compacts at 80% context usage.

agy_configure_workspace

Utility

0x

Auto-detects .venv / node_modules/.bin and configures optional Antigravity IDE HUD sync.

agy_status

Utility

0x

Reports live GPU VRAM probe, cloud quota timers, queue state, and model discovery.


5. Quick Start Guide

Step 1: Clone & Run the Sandboxed Smoke Test

git clone https://github.com/Secret-art-stack/spillway-mcp.git
cd spillway-mcp
npm test

(npm test runs node server/smoke-test.js inside a disposable os.tmpdir() workspace and verifies all offline safeguards, permission rules, and MCP stdio framing).

Step 2: Configure Local GPU Inference (Ollama or llama-server)

Pick your hardware preset in config/model-matrix.json (8gb_vram, 12gb_vram, or 24gb_vram_or_mac_unified). For a 12 GB VRAM GPU with Ollama:

# Enable Flash Attention, 8-bit quantized KV cache, and 16K context window
export OLLAMA_FLASH_ATTENTION=1
export OLLAMA_KV_CACHE_TYPE=q8_0
export OLLAMA_CONTEXT_LENGTH=16384

# Pull and warm the default coding model
ollama pull qwen2.5-coder:14b

Or with llama.cpp (llama-server) on port 8080:

llama-server -m qwen2.5-coder-14b-instruct-q4_k_m.gguf \
  --port 8080 --ctx-size 16384 --cache-type-k q8_0 --cache-type-v q8_0 -fa -ngl 99

Tip: If running heavy desktop/IDE apps alongside the GPU on a 12 GB card (~6.5–7 GB free VRAM), use a 9B/12B model like qwen3.5:9b or gemma4:12b-q4_K_M (~5.5–6.5 GB) so weights + KV cache stay 100% in VRAM without PCIe spillover.

Step 3: Register in Claude Code (.mcp.json)

Copy .mcp.example.json to .mcp.json in your project root (or run node server/index.js --bootstrap with user confirmation):

{
  "mcpServers": {
    "agy-subagent": {
      "command": "node",
      "args": ["./spillway-mcp/server/index.js"],
      "timeout": 600000,
      "env": {
        "AGY_NO_SELF_BOOTSTRAP": "1",
        "AGY_GIT_REPORT_ONLY": "1",
        "AGY_DENY_SKIP_PERMISSIONS": "1",
        "LOCAL_GPU_PROFILE": "12gb_vram",
        "LOCAL_LLM_BASE_URL": "http://127.0.0.1:11434/v1",
        "LOCAL_OLLAMA_MODEL": "qwen2.5-coder:14b"
      }
    }
  }
}

6. Repository Structure

spillway-mcp/
├── server/
│   ├── index.js               # Zero-dependency MCP server & hybrid routing engine
│   └── smoke-test.js          # Sandboxed test suite (runs in os.tmpdir())
├── config/
│   ├── model-matrix.json      # Tiered routing & 8GB / 12GB / 24GB hardware presets
│   ├── state-ledger.example.json
│   └── ide-sync.example.json
├── docs/
│   └── ROUTING_GUIDE.md       # Optional @import guide for CLAUDE.md
├── .mcp.example.json          # Example MCP registration for Claude Code
├── .gitignore                 # Ignores live state-ledger.json, ide-sync.json, .env, logs
├── LICENSE                    # Apache License 2.0
├── package.json               # Clean metadata + `"test": "node server/smoke-test.js"`
└── README.md                  # Architectural documentation

7. License

Licensed under the Apache License, Version 2.0.

Available Tools

9 tools
agy_configure_workspaceA
Idempotent

Update workspace environment configuration and Antigravity IDE Visual HUD settings. Auto-detects project toolchains (.venv, node_modules/.bin), registers monorepo directories (--add-dir), injects environment variables, optionally syncs .vscode/settings.json, and attaches or launches the Antigravity IDE window. WHEN TO USE: Only when configuring custom virtualenv/monorepo paths or toggling IDE Visual HUD attachment. DO NOT USE FOR: Read-only status or quota checks (use agy_status instead). RETURNS: JSON object { ide_window_attached, opened_ide_window, workspace_environment } plus telemetry footer.

NameRequiredDescriptionDefault
cwdNoOptional workspace root directory path.
add_dirsNoAdditional directories to include in the agy workspace via --add-dir (e.g. ["../shared-types"]).
attach_ideNoSet true if this workspace is already open in Antigravity IDE to enable follow_files / visual_review_gate; set false to prevent --reuse-window from touching another project window.
follow_filesNoEnable or disable active editor file:line jumping.
env_overridesNoKey-value string environment variables (e.g. {"NODE_ENV": "test"}) injected into every subagent run.
open_ide_windowNoIf true, launches Antigravity IDE pointed specifically at this workspace folder and marks ide_window_attached=true.
vscode_settingsNoOptional key-value settings to merge non-destructively into .vscode/settings.json for Antigravity IDE.
extra_path_entriesNoAdditional PATH directories (e.g. custom toolchain or virtualenv bin folders) injected into every subagent execution.
python_interpreterNoExplicit Python interpreter path to sync into .vscode/settings.json.
visual_review_gateNoEnable or disable inline --diff tabs on delegated edits.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real side-effect context beyond that: it mutates .vscode/settings.json, can launch or attach an IDE window, and injects env vars into every subagent run. It stops short of saying whether launching the IDE window is reversible or what happens on conflicting settings, but that gap is minor given annotation coverage.

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?

Front-loaded with the verb and resource, then structured into WHEN TO USE, DO NOT USE FOR, and RETURNS blocks. The opening sentence is long but every clause maps to a real capability; nothing is filler, though it could be split for easier scanning.

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

Completeness5/5

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

For a 10-parameter, all-optional tool with nested objects and no output schema, the description covers what the tool does, when to call it, what not to call it for, and explicitly inflates the return shape ({ ide_window_attached, opened_ide_window, workspace_environment }). Nothing an agent needs to invoke this correctly is missing.

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 100%, so the baseline is 3. The description still earns extra credit by explaining the mechanics behind the parameters: auto-detected toolchains, the --add-dir mechanism, and that env/extra_path values propagate to every subagent execution — semantics the schema does not state.

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 opening sentence names a specific verb (update) and a concrete resource (workspace environment configuration + IDE Visual HUD settings), then enumerates the actual operations: toolchain auto-detection, --add-dir registration, env var injection, .vscode/settings.json sync, and IDE window attach/launch. This is clearly distinguishable from mutation siblings like agy_spawn_swarm or agy_delegate_edit, which operate on agents rather than workspace config.

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

Usage Guidelines5/5

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

Explicit WHEN TO USE (custom virtualenv/monorepo paths, toggling HUD attachment) and DO NOT USE FOR (read-only status/quota checks, with `agy_status` named as the alternative). The routing condition is unambiguous, so an agent can pick between this and agy_status without inspecting either schema.

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

agy_delegate_editA

Delegate complex multi-file code modifications or cross-module refactoring to Antigravity (agy) in --mode=accept-edits. WHEN TO USE: Coordinated edits across multiple existing files requiring Gemini Argon/Flash reasoning. DO NOT USE FOR: Generating a single standalone boilerplate, DTO, schema, or unit test file (use local_draft_leaf_code instead at 0x quota), read-only analysis (use agy_delegate_research), or running test suites (use local_exec_and_triage). RETURNS: Edit summary, optional IDE visual diff confirmation, and telemetry footer.

NameRequiredDescriptionDefault
cwdNoOptional working directory path.
tierNoGemini model tier to execute the edit (defaults to argon-medium).argon-medium
promptYesClear multi-file editing instructions and target file scope for Antigravity.
allow_shellNoIf false (default), runs with --mode=accept-edits (file edits only). If true, requests --dangerously-skip-permissions (refused unless AGY_ALLOW_SKIP_PERMISSIONS=1 is configured).
target_filesNoOptional list of target file paths being edited so the Visual HUD can snapshot and open inline diffs (--diff) in Antigravity IDE.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-destructive, non-idempotent. The description adds real value beyond that: the default --mode=accept-edits file-edit-only behavior, the escalation path via allow_shell gated behind AGY_ALLOW_SKIP_PERMISSIONS=1, and what is returned (edit summary, IDE diff confirmation, telemetry footer). It doesn't cover failure behavior or whether edits are revertible, keeping it below a 5.

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

Conciseness5/5

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

Three labeled blocks (action, WHEN TO USE, DO NOT USE FOR, RETURNS) with the core action front-loaded. Dense but every sentence carries routing or behavioral information; no filler.

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?

No output schema exists, and the description compensates by listing return contents. For a mutation tool with five params this is largely sufficient, though it omits error/failure handling and any note on whether accepted edits are recoverable.

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% and the property descriptions already explain cwd, tier defaults, prompt scope, allow_shell gating, and target_files' HUD/diff purpose. The description adds little parameter-level detail beyond echoing the accept-edits mode. Baseline 3 is appropriate when the schema carries the load.

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+resource (delegate multi-file code modifications / cross-module refactoring) to a named executor in a named mode. It explicitly contrasts itself with `local_draft_leaf_code`, `agy_delegate_research`, and `local_exec_and_triage`, so an agent can route without opening a schema.

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

Usage Guidelines5/5

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

Has an explicit WHEN TO USE condition (coordinated edits across multiple existing files needing Gemini Argon/Flash reasoning) and a DO NOT USE FOR block naming three alternatives with their own scoping conditions. Exclusions and alternatives are both spelled out.

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

agy_delegate_researchA
Read-onlyIdempotent

Delegate deep read-only codebase research, cross-module architectural analysis, bug root-cause tracing, or security verification to Google Antigravity CLI (agy) using verified Gemini 3.8 Flash or Gemini 4 Argon models in --mode=plan. WHEN TO USE: Complex multi-file reasoning or architectural audits across 5–30+ files after initial scouting. DO NOT USE FOR: Simple signature, import, or line-number extraction on known files (use local_file_scout instead at 0x quota) or parallel disjoint directory scans (use agy_spawn_swarm instead). RETURNS: Markdown analysis with : citations and telemetry footer.

NameRequiredDescriptionDefault
cwdNoOptional working directory path (defaults to workspace root).
tierYesGemini routing tier: flash-low/flash-medium (1x triage), flash-high (2x module summary), argon-low/argon-medium (4x cross-module reasoning), argon-high (6x apex architecture/security).flash-medium
promptYesDetailed research or analysis prompt for Antigravity. Name the specific files to inspect.
files_to_followNoOptional list of <file>:<line> targets (e.g. ["src/index.ts:42"]) to jump to in the Antigravity IDE HUD.
html_artifact_nameNoOptional filename (e.g. "arch-overview.html") to instruct agy to write a self-contained visual HTML report.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false, so the safety burden is largely covered. The description supplements this with the return shape (Markdown with <file>:<line> citations and a telemetry footer) and a quota signal ('0x quota' for the local alternative, implying agy calls consume quota). It stops short of stating cost/latency expectations per tier or any auth prerequisites.

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?

Dense but fully front-loaded: purpose first, then WHEN TO USE, DO NOT USE FOR, and RETURNS as labeled clauses. Every clause carries routing or behavioral information; nothing is filler.

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?

No output schema exists, and the description compensates by describing the return format (Markdown analysis with file:line citations plus telemetry footer). Combined with explicit routing guidance and full schema coverage, an agent has what it needs to call it correctly; only cost/quota-consumption per tier and expected latency are left unstated.

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%, so all five parameters are already documented in-schema, and the description adds essentially nothing about individual parameters beyond corroborating flash/argon model naming for the `tier` enum. Baseline 3 applies when the schema carries the parameter burden.

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?

Names a specific verb (delegate) and a concrete resource (deep read-only codebase research, architectural analysis, root-cause tracing, security verification) plus the target executor (Google Antigravity CLI in --mode=plan). The scope ('complex multi-file reasoning... 5–30+ files') distinguishes it cleanly from the shallow-scouting and swarm siblings.

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

Usage Guidelines5/5

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

Explicit WHEN TO USE ('complex multi-file reasoning or architectural audits across 5–30+ files after initial scouting') and explicit DO NOT USE FOR with named alternatives: `local_file_scout` for signature/import/line-number extraction and `agy_spawn_swarm` for parallel disjoint directory scans. Both exclusions name a concrete sibling from the available set.

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

agy_session_followupA

Resume an existing Antigravity conversation ID (--conversation ) so previously loaded files remain in context cache, automatically compacting the session if context usage exceeds 80%. WHEN TO USE: Multi-turn follow-up questions on an existing Session ID returned by a prior agy_delegate_research or agy_delegate_edit call. DO NOT USE FOR: Starting a brand-new research task without a prior session (use agy_delegate_research instead). RETURNS: Follow-up response, optional compaction notice, and updated session telemetry.

NameRequiredDescriptionDefault
cwdNoOptional working directory path.
modeNoExecution mode for the follow-up turn (defaults to plan).plan
tierNoOptional model tier override (defaults to the session model).
promptYesFollow-up instructions or question for the cached session.
conversation_idYesThe agy conversation_id UUID from a previous tool call telemetry footer (or "latest" to resume the most recent session).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the mutation profile is covered. The description adds genuine behavioral context beyond that: files stay in the context cache and the session auto-compacts above 80% usage, which the agent could not infer from structured fields. It stops short of describing permission/auth requirements or what a compaction notice implies operationally.

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

Conciseness5/5

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

Three front-loaded blocks — purpose, WHEN/DO NOT USE, RETURNS — with no filler sentences. The cache and compaction details are folded into the opening sentence rather than padding a separate section.

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?

Although no output schema exists, the RETURNS section enumerates the follow-up response, optional compaction notice, and updated telemetry. Combined with the WHEN/NOT routing and cache behavior, an agent has everything needed to select and invoke this correctly.

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% and every parameter is already documented, including the enum values for mode and tier. The description only echoes the conversation_id syntax ('--conversation <id>') and adds nothing about mode, tier, or cwd semantics, so it sits at the baseline where the schema does the heavy lifting.

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 opens with a specific verb and resource ('Resume an existing Antigravity conversation ID') and immediately adds the mechanism (--conversation <id>) plus the cache-preservation rationale, so the agent knows exactly what the tool does that a fresh call would not.

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

Usage Guidelines5/5

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

It provides an explicit WHEN TO USE clause bound to a prior `agy_delegate_research`/`agy_delegate_edit` session ID, and an explicit DO NOT USE FOR clause routing brand-new tasks to `agy_delegate_research`. Both the trigger condition and the named alternative are stated, leaving nothing to inference.

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

agy_spawn_swarmA
Read-onlyIdempotent

Dispatch multiple read-only Antigravity subagents using gemini-3.8-flash-low or gemini-3.8-flash-medium across strictly disjoint directory partitions. WHEN TO USE: Exploring multiple independent subsystems or directories in a single turn. DO NOT USE FOR: Single-directory research (use agy_delegate_research), single-file signature extraction (use local_file_scout), or overlapping directory paths (rejected by partition validator). RETURNS: Aggregated markdown report per subagent task plus telemetry footer.

NameRequiredDescriptionDefault
cwdNoOptional workspace root directory path.
tasksYesArray of subagent tasks with strictly non-overlapping directory globs.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is carried. The description still adds value beyond that: the disjoint-partition validator will reject overlaps, subagents are read-only, the model tiers used, and the return shape (aggregated markdown plus telemetry footer) which matters because there is no output schema. It does not quantify limits such as max task count or failure handling.

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 dense paragraph with front-loaded purpose followed by labelled WHEN TO USE, DO NOT USE FOR, and RETURNS clauses. Every sentence carries an actionable constraint; no filler.

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 output schema and 100% schema coverage, the description covers purpose, exclusions, partitioning constraint, and return shape. The one ambiguity left is when to prefer the flash-medium tier over the default flash-low, which the description names but does not differentiate.

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 both the cwd and the nested task fields (id, tier, paths, prompt) are already documented with examples and constraints. The description only restates the disjoint-path rule and the tier names; it adds no format or syntax detail beyond the schema, so the baseline 3 applies.

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 (dispatch read-only subagents) plus the defining constraint: strictly disjoint directory partitions and specified model tiers. This is immediately distinguishable from agy_delegate_research and local_file_scout, which the description names as alternatives.

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

Usage Guidelines5/5

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

Explicit WHEN TO USE (multiple independent subsystems/directories in one turn) and DO NOT USE FOR with the exact sibling to use instead for each excluded case, including that overlapping paths are rejected by the validator. Nothing 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.

agy_statusA
Read-onlyIdempotent

Inspect current system health, Gemini 5-hour/weekly quota windows, Local GPU VRAM availability (/api/ps), process queue state, active session context remaining, and Git worktree pre-flight status in read-only mode. WHEN TO USE: Checking whether the Local GPU worker or Gemini Argon/Flash tiers are online and inspecting token savings. DO NOT USE FOR: Modifying workspace settings or attaching the IDE (use agy_configure_workspace instead). RETURNS: JSON status report { agy_process_queue, local_gpu_queue, local_gpu_probe, local_gpu_telemetry, model_quotas, sessions } plus telemetry footer.

NameRequiredDescriptionDefault
refresh_modelsNoIf true, runs `agy models` to probe for newly released Gemini models (defaults to false for instant response).

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the 'read-only mode' statement is partly redundant. However, the description adds genuine context annotations do not carry: the specific probe endpoint (`/api/ps`), that the response includes a telemetry footer, and the shape of the report. It stops short of noting that `refresh_models` makes the call slow, which is the main behavioral gotcha.

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?

Front-loads the resource list, then uses labeled WHEN TO USE / DO NOT USE FOR / RETURNS blocks, so structure is easy to scan. The capability sentence is long and dense with parenthetical detail, but every clause maps to a distinct probed subsystem rather than filler.

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?

No output schema exists, and the description compensates by enumerating the returned JSON keys (`agy_process_queue`, `local_gpu_queue`, `local_gpu_probe`, `local_gpu_telemetry`, `model_quotas`, `sessions`). Combined with the exclusions, an agent has everything needed to decide to call it and interpret the result.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter `refresh_models` is documented in the schema with its default and the `agy models` probe side effect. The description adds no parameter guidance beyond what the schema provides, so baseline 3 applies.

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 ('Inspect') plus an enumerated set of concrete resources: system health, Gemini quota windows, Local GPU VRAM via `/api/ps`, process queue, session context, and Git worktree pre-flight. An agent can distinguish this diagnostic tool from siblings like `agy_configure_workspace` or `local_exec_and_triage` without opening any schema.

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

Usage Guidelines5/5

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

Contains explicit WHEN TO USE ('checking whether the Local GPU worker or Gemini Argon/Flash tiers are online and inspecting token savings') and DO NOT USE FOR ('Modifying workspace settings or attaching the IDE') with a named alternative (`agy_configure_workspace`). Both the positive trigger and the exclusion route the agent unambiguously.

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

local_draft_leaf_codeA

Draft standalone leaf-node boilerplate, unit test files, DTOs, or schemas on disk using the Local GPU LLM (0x cloud quota). Reads reference_files on the server side, validates that the drafted code is >=15 chars with closed markdown fences and no truncation placeholders before writing target_file (automatically aborting disk write and escalating to agy_delegate_edit flash-high if invalid or offline). WHEN TO USE: Creating or updating a single self-contained leaf file (unit tests, schemas, types, boilerplate). DO NOT USE FOR: Complex multi-file refactoring or cross-module architectural edits (use agy_delegate_edit instead). RETURNS: Write confirmation, byte/line counts, and git diff --stat summary.

NameRequiredDescriptionDefault
cwdNoOptional working directory path (defaults to workspace root).
specYesDetailed specification of the leaf code, boilerplate, schema, or unit test cases to generate.
target_fileYesRelative or absolute path to the single leaf file to create or update on disk.
reference_filesYesList of existing file paths to read from disk on the server side as style, type, and import references.

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing validation gates (>=15 chars, closed markdown fences, no truncation placeholders), the automatic abort of the disk write, the offline fallback to agy_delegate_edit, and the server-side reading of reference_files. annotations only supply generic hints (readOnly=false, destructive=false, not idempotent), so this added detail is exactly the value the description should provide.

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?

Front-loaded with the action sentence, then clearly delineated WHEN TO USE / DO NOT USE FOR / RETURNS blocks. Dense but every clause carries operational information; nothing is redundant with the schema or annotations.

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

Completeness5/5

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

For a single-file write tool with 4 params and no output schema, the description covers the return payload (write confirmation, byte/line counts, git diff --stat), failure handling, and escalation. Nothing an agent needs to call it safely is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it clarifies that reference_files are read server-side as style/type/import references and that target_file is written automatically only after validation passes. It doesn't clarify cwd semantics or overwrite behavior for an existing target_file, which keeps it from a 5.

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 ('Draft') plus concrete artifact types (leaf-node boilerplate, unit tests, DTOs, schemas) and the execution backend (Local GPU LLM). It explicitly names the sibling it is not (agy_delegate_edit for multi-file work), so an agent can separate it from its siblings without opening a schema.

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

Usage Guidelines5/5

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

Contains explicit WHEN TO USE ('single self-contained leaf file') and DO NOT USE FOR ('complex multi-file refactoring or cross-module architectural edits') with the correct alternative named. The escalation path to agy_delegate_edit flash-high on failure is also spelled out.

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

local_exec_and_triageA
Read-only

Execute allow-listed test, build, typecheck, or lint commands (pytest, npm test, npx tsc, cargo check, go test) in a managed subprocess with Windows process-tree kill protection (taskkill /T /F) and scrub verbose output on the Local GPU (0x cloud quota). WHEN TO USE: Running any test suite, compiler check, or linter that may produce >40 lines of noisy output. DO NOT USE FOR: Chained shell commands (&&, ;, | are blocked) or file edits. RETURNS: Full output directly if <=40 lines; otherwise a Local GPU-scrubbed digest containing only exit code, failing test names, <file>:<line> locations, and isolated stack traces.

NameRequiredDescriptionDefault
commandYesSingle allow-listed test/build/lint command line without chaining operators (e.g. "pytest", "npm test", "npx tsc --noEmit", "cargo check").
timeout_msNoOptional subprocess timeout in milliseconds (default 120000).
working_dirYesWorking directory path for command execution.

TDQS

A4.5/5.0
Behavior4/5

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

Goes well past the annotations by disclosing process-tree kill protection via `taskkill /T /F`, the 40-line output threshold, and what the scrubbed digest actually contains (exit code, failing test names, file:line, isolated stack traces). It does not contradict readOnlyHint/destructiveHint=false, since running tests and linters is a non-mutating read of the codebase. Minor gap: no note on whether the subprocess inherits env or has network access, which matters given openWorldHint=false.

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?

Front-loaded with the action and the concrete command set, then cleanly segmented into WHEN TO USE, DO NOT USE FOR, and RETURNS. Dense but every clause carries operational information; there is no filler.

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?

With no output schema, the RETURNS section is essential and present, explaining both the pass-through case and the digest format. Combined with the safety mechanism and the exclusion list, an agent has everything needed to call this correctly against a 3-parameter, non-idempotent execution 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 100%, so command, timeout_ms, and working_dir are already documented in structured fields. The description reinforces the allow-list and no-chaining rule for `command`, but adds no syntax or format detail the schema lacks, and says nothing about timeout semantics beyond the schema's default/max. Baseline 3 applies.

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 (execute) plus the exact resource class (allow-listed test/build/typecheck/lint commands) and enumerates concrete examples (pytest, npm test, npx tsc, cargo check, go test). Nothing overlaps with siblings like local_file_scout or local_draft_leaf_code, so an agent can route on the first clause alone.

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

Usage Guidelines5/5

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

Has an explicit WHEN TO USE clause (>40 lines of noisy output from tests/compilers/linters) and an explicit DO NOT USE FOR clause (chained shell operators, file edits). Both the selection condition and the exclusion are spelled out rather than inferred.

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

local_file_scoutA
Read-onlyIdempotent

ZERO-TRUST MEMORY TOOL: Read repository files directly from disk on the server side and use the Local GPU LLM (0x cloud quota) as a strict forensic disk-evidence extractor. Outputs verbatim signatures, imports, and logic with exact 1-based <file>:L<line> citations (<300 tokens), or "NOT_FOUND_ON_DISK: [symbol/query]" if absent (automatically escalating to Gemini 3.8 Flash if the local GPU is offline). WHEN TO USE: Always call before raw Read on unfamiliar/large files (>150 lines) or whenever verifying disk state before answering or editing. DO NOT USE FOR: Multi-directory architectural synthesis across 10+ files (use agy_delegate_research after scouting). RETURNS: Concise markdown bullet digest with <file>:L<line> citations and telemetry footer.

NameRequiredDescriptionDefault
cwdNoOptional working directory path (defaults to workspace root).
queryYesSpecific symbols, function signatures, imports, or behavior to extract from the numbered files.
file_pathsYesList of relative or absolute file paths to inspect on disk (skips binary files and `.env*` secrets).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, yet the description still adds real behavior: zero cloud quota consumption, a hard <300 token output cap, a NOT_FOUND_ON_DISK sentinel for missing symbols, and automatic escalation to a cloud model when the local GPU is offline. The remaining gap is the vague 'telemetry footer' it promises without explaining.

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?

Structured as WHEN TO USE / DO NOT USE FOR / RETURNS with the core identifier front-loaded, and nearly every clause carries operational information. It loses a point for shouting caps and branding ('ZERO-TRUST MEMORY TOOL', '0x cloud quota') that adds emphasis rather than new meaning.

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?

There is no output schema, so the RETURNS section properly compensates with the digest format, citation style, and the failure sentinel. Minor omissions remain: behavior with multiple file_paths, and what happens when a path itself does not exist versus when a symbol is absent.

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%, so the schema already documents cwd, query, and file_paths fully — baseline 3 applies. The description only marginally extends this, tying 'query' to the NOT_FOUND_ON_DISK sentinel and reiterating the file-type exclusions that the schema already states.

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 concrete verb and resource ('Read repository files directly from disk') plus the processing model (local GPU LLM as forensic extractor) and the exact output shape ('verbatim signatures, imports, and logic with exact 1-based <file>:L<line> citations'). It also names its boundary against the sibling 'agy_delegate_research', so an agent can distinguish it without opening any schema.

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

Usage Guidelines5/5

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

Explicit WHEN TO USE ('always call before raw Read on unfamiliar/large files (>150 lines) or whenever verifying disk state') and explicit DO NOT USE FOR ('multi-directory architectural synthesis across 10+ files (use agy_delegate_research after scouting)'). Both the positive trigger and the hand-off alternative are named, leaving nothing to inference.

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

Tool Schema Changelog

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

  1. 9 tool updatesv1.2.1
    • Changedagy_configure_workspace12 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / attach_ide / default
        Added value: +false
      • changedInput schema / properties / attach_ide / description
        Previous value: -"Set true if the user already has this workspace open in Antigravity IDE and wants follow_files / visual_review_gate active; set false to prevent --reuse-window from touching another project window."New value: +"Set true if this workspace is already open in Antigravity IDE to enable follow_files / visual_review_gate; set false to prevent --reuse-window from touching another project window."
      • changedInput schema / properties / cwd / description
        Previous value: -"Optional workspace root directory."New value: +"Optional workspace root directory path."
      • addedInput schema / properties / env_overrides / additionalProperties
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / env_overrides / description
        Previous value: -"Key-value environment variables injected into every agy subagent run."New value: +"Key-value string environment variables (e.g. {\"NODE_ENV\": \"test\"}) injected into every subagent run."
      • changedInput schema / properties / extra_path_entries / description
        Previous value: -"Additional PATH directories (e.g. custom toolchain or virtualenv bin folders) injected into every agy subagent execution."New value: +"Additional PATH directories (e.g. custom toolchain or virtualenv bin folders) injected into every subagent execution."
      • addedInput schema / properties / follow_files / default
        Added value: +true
      • addedInput schema / properties / open_ide_window / default
        Added value: +false
      • addedInput schema / properties / visual_review_gate / default
        Added value: +true
      • addedInput schema / properties / vscode_settings / additionalProperties
        Added value: +{
        +  "type": [
        +    "string",
        +    "number",
        +    "boolean"
        +  ]
        +}
      • addedInput schema / required
        Added value: +[]
    • Changedagy_delegate_edit6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / allow_shell / default
        Added value: +false
      • changedInput schema / properties / cwd / description
        Previous value: -"Optional working directory."New value: +"Optional working directory path."
      • changedInput schema / properties / prompt / description
        Previous value: -"Clear editing instructions and scope for Antigravity."New value: +"Clear multi-file editing instructions and target file scope for Antigravity."
      • addedInput schema / properties / prompt / minLength
        Added value: +1
      • addedInput schema / properties / tier / default
        Added value: +"argon-medium"
    • Changedagy_delegate_research8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / cwd / description
        Previous value: -"Optional working directory (defaults to workspace root)."New value: +"Optional working directory path (defaults to workspace root)."
      • changedInput schema / properties / files_to_follow / description
        Previous value: -"Optional list of file:line targets to jump to in the Antigravity IDE HUD."New value: +"Optional list of <file>:<line> targets (e.g. [\"src/index.ts:42\"]) to jump to in the Antigravity IDE HUD."
      • changedInput schema / properties / html_artifact_name / description
        Previous value: -"Optional filename (e.g. \"arch-overview.html\") to instruct agy to write a visual diagram/report into %USERPROFILE%\\.gemini\\antigravity\\html_artifacts\\."New value: +"Optional filename (e.g. \"arch-overview.html\") to instruct agy to write a self-contained visual HTML report."
      • changedInput schema / properties / prompt / description
        Previous value: -"Detailed research or analysis prompt for Antigravity."New value: +"Detailed research or analysis prompt for Antigravity. Name the specific files to inspect."
      • addedInput schema / properties / prompt / minLength
        Added value: +1
      • addedInput schema / properties / tier / default
        Added value: +"flash-medium"
      • changedInput schema / properties / tier / description
        Previous value: -"Gemini routing tier: flash-low/flash-medium (Tier 1 triage), flash-high (Tier 2 heavy summary), argon-low/argon-medium (Tier 3 deep reasoning), argon-high (Tier 4 apex architecture/security)."New value: +"Gemini routing tier: flash-low/flash-medium (1x triage), flash-high (2x module summary), argon-low/argon-medium (4x cross-module reasoning), argon-high (6x apex architecture/security)."
    • Changedagy_session_followup7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / conversation_id / description
        Previous value: -"The agy conversation_id to resume (or \"latest\" to resume the most recent session)."New value: +"The agy conversation_id UUID from a previous tool call telemetry footer (or \"latest\" to resume the most recent session)."
      • addedInput schema / properties / conversation_id / minLength
        Added value: +1
      • changedInput schema / properties / cwd / description
        Previous value: -"Optional working directory."New value: +"Optional working directory path."
      • addedInput schema / properties / mode / default
        Added value: +"plan"
      • changedInput schema / properties / prompt / description
        Previous value: -"Follow-up instructions or question."New value: +"Follow-up instructions or question for the cached session."
      • addedInput schema / properties / prompt / minLength
        Added value: +1
    • Changedagy_spawn_swarm12 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / cwd / description
        Previous value: -"Optional workspace root directory."New value: +"Optional workspace root directory path."
      • changedInput schema / properties / tasks / description
        Previous value: -"Array of parallel subagent tasks with disjoint path partitions."New value: +"Array of subagent tasks with strictly non-overlapping directory globs."
      • addedInput schema / properties / tasks / items / additionalProperties
        Added value: +false
      • changedInput schema / properties / tasks / items / properties / id / description
        Previous value: -"Unique task identifier."New value: +"Unique task identifier (e.g. \"auth-worker\")."
      • addedInput schema / properties / tasks / items / properties / id / minLength
        Added value: +1
      • addedInput schema / properties / tasks / items / properties / paths / minItems
        Added value: +1
      • changedInput schema / properties / tasks / items / properties / prompt / description
        Previous value: -"Task instructions for this subagent."New value: +"Read-only research instructions for this subagent partition."
      • addedInput schema / properties / tasks / items / properties / prompt / minLength
        Added value: +1
      • addedInput schema / properties / tasks / items / properties / tier / default
        Added value: +"flash-low"
      • changedInput schema / properties / tasks / items / properties / tier / description
        Previous value: -"Swarm tier (defaults to flash-low)."New value: +"Swarm model tier (defaults to flash-low)."
      • addedInput schema / properties / tasks / minItems
        Added value: +1
    • Changedagy_status4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / refresh_models / default
        Added value: +false
      • changedInput schema / properties / refresh_models / description
        Previous value: -"If true, runs `agy models` to check for newly released Gemini models."New value: +"If true, runs `agy models` to probe for newly released Gemini models (defaults to false for instant response)."
      • addedInput schema / required
        Added value: +[]
    • Changedlocal_draft_leaf_code7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / cwd / description
        Previous value: -"Optional working directory (defaults to workspace root)."New value: +"Optional working directory path (defaults to workspace root)."
      • changedInput schema / properties / reference_files / description
        Previous value: -"List of existing file paths to read from disk as style/type/import references."New value: +"List of existing file paths to read from disk on the server side as style, type, and import references."
      • changedInput schema / properties / spec / description
        Previous value: -"Detailed specification of the leaf code, boilerplate, schema, or test cases to generate."New value: +"Detailed specification of the leaf code, boilerplate, schema, or unit test cases to generate."
      • addedInput schema / properties / spec / minLength
        Added value: +1
      • changedInput schema / properties / target_file / description
        Previous value: -"Path to the file to create or update on disk."New value: +"Relative or absolute path to the single leaf file to create or update on disk."
      • addedInput schema / properties / target_file / minLength
        Added value: +1
    • Changedlocal_exec_and_triage8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / command / description
        Previous value: -"Command line to execute (e.g. \"pytest\", \"npm test\", \"npx tsc --noEmit\", \"cargo check\")."New value: +"Single allow-listed test/build/lint command line without chaining operators (e.g. \"pytest\", \"npm test\", \"npx tsc --noEmit\", \"cargo check\")."
      • addedInput schema / properties / command / minLength
        Added value: +1
      • addedInput schema / properties / timeout_ms / default
        Added value: +120000
      • addedInput schema / properties / timeout_ms / maximum
        Added value: +600000
      • addedInput schema / properties / timeout_ms / minimum
        Added value: +500
      • changedInput schema / properties / working_dir / description
        Previous value: -"Working directory for command execution (defaults to workspace root)."New value: +"Working directory path for command execution."
      • addedInput schema / properties / working_dir / minLength
        Added value: +1
    • Changedlocal_file_scout6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / cwd / description
        Previous value: -"Optional working directory (defaults to workspace root)."New value: +"Optional working directory path (defaults to workspace root)."
      • changedInput schema / properties / file_paths / description
        Previous value: -"List of relative or absolute file paths to inspect on disk."New value: +"List of relative or absolute file paths to inspect on disk (skips binary files and `.env*` secrets)."
      • addedInput schema / properties / file_paths / minItems
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Specific symbols, control flow, signatures, or architectural questions to extract from the files."New value: +"Specific symbols, function signatures, imports, or behavior to extract from the numbered files."
      • addedInput schema / properties / query / minLength
        Added value: +1
  2. 9 tool updatesv0.1.0
    • First observedagy_configure_workspace
    • First observedagy_delegate_edit
    • First observedagy_delegate_research
    • First observedagy_session_followup
    • First observedagy_spawn_swarm
    • First observedagy_status
    • First observedlocal_draft_leaf_code
    • First observedlocal_exec_and_triage
    • First observedlocal_file_scout

TDQS

A4.4/5.0

Scored across 9 tools

Disambiguation4/5

The descriptions include explicit routing guidance with 'WHEN TO USE' and 'DO NOT USE FOR' clauses, so boundaries between research, scouting, editing, drafting, and execution are mostly clear. There is still inherent conceptual overlap between agy_delegate_research/local_file_scout and agy_delegate_edit/local_draft_leaf_code, but the workflow distinctions make misselection unlikely.

Naming Consistency4/5

All tools use snake_case with consistent agy_ and local_ prefixes that reflect execution tier. The action portion varies between verb-led (delegate_research, spawn_swarm, configure_workspace) and noun-led (status, session_followup, file_scout), so it is not a perfect verb_noun pattern, but it remains predictable and readable.

Tool Count5/5

Nine tools is well-scoped for a coding orchestration server. Each tool maps to a distinct orchestration responsibility: research, swarm dispatch, editing, session continuation, configuration, status, disk scouting, execution, and leaf-file drafting.

Completeness4/5

The surface covers the core lifecycle of delegated research, editing, follow-up, local scouting, drafting, execution, status, and configuration. Minor gaps remain around explicit session cancellation/cleanup or quota reset, but agents can work around them using status and follow-up tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    One MCP that turns Claude Code into your whole dev stack by swallowing other MCP servers, delegating to Codex & Gemini on your CLI subscriptions, remembering projects in a searchable knowledge graph, and carrying setup across sessions — secret-free by design.
    23
    4
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Provides an MCP endpoint that lets clients like Google Antigravity and Claude Desktop dispatch LLM tasks to local GPU models with automatic hardware-adaptive routing and cloud fallback, enabling near-zero token cost execution.
    3
    4
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents and MCP clients to dispatch queries to the most suitable model among 70+ LLMs by scoring intent, budget, cost, and latency, returning structured routing decisions with execution telemetry. It runs as a zero-dependency Python MCP server that plugs into Claude Desktop, Cursor, and other MCP-compatible clients.
    8
    -