Skip to main content
Glama
chapmanjw

Rutherford MCP Server

by chapmanjw

delegate

Assign a coding task to an ACP agent and get its normalized result, with configurable model, safety mode, session resume, and fallback agents.

Instructions

Delegate a task to one ACP agent and return its normalized result.

cli is an agent id (see capabilities); model is optional (the agent's default otherwise). safety_mode is read_only | propose | write | yolo; when omitted, the configured default_safety_mode applies (read_only out of the box). write and yolo also need a trusted workspace (trust_workspace=true or a configured allowlist). direct_workspace_mutation=true asks for a write/yolo agent to edit working_dir itself, with live terminal access there, instead of an isolated worktree/temp copy — no diff is captured and nothing is applied back, so the run leaves no record of what it changed. Asking is not enough: the operator must have set allow_direct_workspace_mutation in config, working_dir must be explicit and on the configured trusted_workspaces allowlist (trust_workspace=true does NOT qualify), and it is refused inside a delegation chain. propose cannot use it at all (INVALID_INPUT). files lists paths to put in scope. role names a persona (see list_roles) whose system prompt is prepended to prompt. effort (low | medium | high | xhigh | max) asks the agent to spend more reasoning where it has a knob (codex via an advertised model[tier] id or a confirmed reasoning_effort config option; cursor via the model id; cline via --thinking; junie via env). max is accepted and clamped to the agent's ceiling where it has one. A reported no-op for an agent with none. Omitted, the configured default_effort (per-agent or global) applies. fallback is an ordered list of alternate targets (cli / cli:model strings or {cli, model} objects) tried when the primary fails on a re-execution-safe failure (a spawn/handshake failure that never ran the prompt); a benched alternate is skipped and fallback_chain records the path. A write/yolo delegation never falls back. allow_model_fallback (default true) first retries the same agent on its configured fallback model on a model-unavailable failure, where it has one. persist keeps this run as a durable job under <jobs_dir>/<run_id>/ (state.json + answer / diff artifacts); None follows default_persistence (ephemeral out of the box), true / false force it. session_id resumes a prior agent session: pass the session_id from an earlier delegate result and the agent reloads that conversation (ACP session/load) instead of starting fresh, so a follow-up turn continues it; agents that do not persist their own sessions fail RESUME_FAILED. mode="async" runs the turn as a background job and returns a job_id (poll with job_status / job_result); mode="sync" awaits it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cliYes
modeNosync
roleNo
filesNo
modelNo
effortNo
promptYes
persistNo
fallbackNo
timeout_sNo
session_idNo
safety_modeNo
working_dirNo
trust_workspaceNo
external_trackingNo
allow_model_fallbackNo
direct_workspace_mutationNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changedv3.2.0
    • addedInput schema / properties / direct_workspace_mutation
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
  2. Changed3 schema fields changedv3.0.2
    • addedInput schema / properties / allow_model_fallback
      Added value: +{
      +  "default": true,
      +  "type": "boolean"
      +}
    • changedInput schema / properties / fallback / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {},
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / include_raw
      Removed value: -{
      -  "default": false,
      -  "type": "boolean"
      -}
  3. Changed7 schema fields changedv2.0.0
    • addedInput schema / properties / effort
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedInput schema / properties / external_tracking
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedInput schema / properties / fallback
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedInput schema / properties / persist
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedInput schema / properties / safety_mode / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / safety_mode / default
      Previous value: -"read_only"New value: +null
    • removedInput schema / properties / safety_mode / type
      Removed value: -"string"
  4. First observedv0.1.1

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly. It discloses side effects (direct_workspace_mutation captures no diff and leaves no record), failure modes (RESUME_FAILED, INVALID_INPUT), fallback semantics, persistence behavior, safety_mode defaults, and the async job pattern. This is far beyond what the schema conveys.

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 dense but every sentence carries meaningful parameter or behavioral semantics, and the core purpose is front-loaded. However, it is written as one long unstructured paragraph with nested conditions, which reduces scannability; bulleted parameter breakdowns would improve comprehension.

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 17-parameter tool with no annotations, this is unusually complete: defaults, safety prerequisites, failure modes, fallback rules, persistence, session resume, and workspace-mutation caveats are all covered. It is not perfect because timeout_s and external_tracking remain undocumented in prose and there is no worked example, but the existing output schema covers return shape and the behavioral gaps are minor.

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

Parameters5/5

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

Schema description coverage is 0%, so the description is the only parameter documentation. It explains the meaning and constraints of almost every parameter: cli, model, safety_mode, trust_workspace, working_dir, direct_workspace_mutation, files, role, effort, fallback, allow_model_fallback, persist, session_id, and mode. Only timeout_s and external_tracking are not explicitly described, but their names and defaults make them reasonably inferable.

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 first sentence states a specific action, resource, and output: 'Delegate a task to one ACP agent and return its normalized result.' The word 'one' also distinguishes it from multi-agent siblings like consensus, debate, and plan, so an agent can tell what this tool is for.

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

Usage Guidelines4/5

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

The description gives strong contextual guidance: single-agent delegation, when write/yolo modes require a trusted workspace, when direct_workspace_mutation is refused, when fallback is skipped, and when async mode should be used. It does not explicitly name alternative sibling tools, but the 'one ACP agent' phrasing and sibling list make the intended usage clear.

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

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/chapmanjw/rutherford-mcp-server'

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