Skip to main content
Glama

AgentMesh MCP

AgentMesh MCP is an open-source, lean Model Context Protocol (MCP) gateway for coordinating coding agents around a shared project.

It provides a small public interface for:

  • durable project context, tasks, messages, and artifacts;

  • agent-to-agent coordination records;

  • bounded multimodal-analysis requests with honest provider status;

  • baseline centralized design-system checks;

  • change proposals and review requests;

  • MCP resources and reusable prompts.

The local MVP uses a JSON state file so it can run without a database. It is intentionally a coordination foundation, not a production swarm controller yet.

Current status

Version: 0.1.0 — local MVP

Implemented:

  • MCP stdio server using the official MCP TypeScript SDK v2;

  • nine small MCP tools instead of a large tool catalog;

  • two MCP resources and two reusable prompts;

  • serialized JSON metadata persistence in .agentmesh/state.json with content-addressed artifact files in .agentmesh/artifacts/;

  • compact artifact references with exact content retrieval by ID;

  • bounded list operations with opaque cursors and compact project-state resources;

  • honest multimodal provider boundary: it inspects local asset readiness but does not pretend to perform OCR without a configured provider;

  • MIT license and client configuration examples.

Not yet implemented:

  • remote Streamable HTTP transport and OAuth;

  • real-time WebSocket event delivery;

  • hosted OCR or vision-provider adapters;

  • runtime bridges that start and control Claude Code, Codex, OpenCode, or Antigravity sessions;

  • Git worktree isolation, CI gates, and merge automation;

  • multi-user database storage.

Related MCP server: samskriti-project

Requirements

  • Node.js 22 or newer

  • npm 10 or newer

Install and run

npm install
npm run build
npm start

The server communicates over stdio. MCP hosts launch it as a child process. Project metadata is written to .agentmesh/state.json and large artifact content is stored under .agentmesh/artifacts/ in the current working directory by default.

To use a different state directory:

AGENTMESH_DATA_DIR=/path/to/project-state npm start

Optional environment variables are documented in .env.example.

Connect clients

Build first so dist/index.js exists. Replace /absolute/path/agentmesh with this repository's path.

Claude Code

claude mcp add agentmesh -- node /absolute/path/agentmesh/dist/index.js

Or add a project .mcp.json:

{
  "mcpServers": {
    "agentmesh": {
      "command": "node",
      "args": ["/absolute/path/agentmesh/dist/index.js"]
    }
  }
}

Codex

Add this to the relevant Codex configuration:

[mcp_servers.agentmesh]
command = "node"
args = ["/absolute/path/agentmesh/dist/index.js"]

OpenCode

Add this to the OpenCode configuration:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "agentmesh": {
      "type": "local",
      "command": ["node", "/absolute/path/agentmesh/dist/index.js"],
      "enabled": true
    }
  }
}

Antigravity and other MCP hosts

Use the host's local MCP configuration and launch command:

node /absolute/path/agentmesh/dist/index.js

Host configuration formats vary. The server itself remains a standard stdio MCP server.

Public MCP surface

The server deliberately exposes a compact interface:

Tool

Purpose

project_context

Read compact project state without loading all artifact contents.

agent_manage

Register agents and update their shared presence.

task_manage

Create, list, and update durable tasks.

agent_message

Send, list, and acknowledge agent messages.

artifact_manage

Publish, list, and read durable artifacts by reference.

multimodal_analyze

Record bounded text or asset analysis requests.

design_check

Run baseline token and accessibility checks.

change_propose

Record a guarded change proposal.

review_request

Create a review artifact and notify a reviewer.

Resources:

  • agentmesh://project/state

  • agentmesh://project/design-system

Prompts:

  • plan-task

  • review-change

Example workflow

  1. An agent calls project_context.

  2. It creates a task with task_manage.

  3. It registers or identifies another agent through the shared project state.

  4. It sends a request with agent_message.

  5. The worker publishes its result with artifact_manage.

  6. The parent requests review with review_request.

  7. A human or future policy engine approves a change_propose result.

Large results should be published as artifacts and referenced by ID instead of being repeatedly placed in model context. Artifact publish and list operations return metadata, SHA-256 content references, and byte sizes; use artifact_manage with operation: "read" to retrieve exact content.

Development

npm run typecheck
npm run build
npm run dev

npm run dev starts the stdio server and will wait for an MCP client. Do not use it as a long-running shell command without an MCP host attached.

Benchmark

Run five reproducible local scenarios with five trials per scenario:

npm run benchmark

The benchmark drives the built server through real MCP JSON-RPC calls and covers protocol discovery, multi-agent coordination, artifact/context bounding, deterministic local analysis, and the change/review chain. It generates:

  • benchmarks/results/benchmark-results.json

  • benchmarks/results/benchmark-report.md

  • benchmarks/results/benchmark-report.html

  • benchmarks/results/latency-by-scenario.svg

  • benchmarks/results/response-size-by-scenario.svg

  • benchmarks/results/correctness-by-scenario.svg

Increase repetitions with BENCHMARK_ITERATIONS=10 npm run benchmark. The current benchmark intentionally does not claim hosted OCR, vision-model accuracy, remote HTTP, OAuth, or real coding-agent runtime coverage.

Optimization and durability controls

The local store uses atomic temporary-file replacement, content-addressed artifact blobs, compact JSON output, bounded project/context projections, opaque cursor pagination for list operations, and one-write review creation. Artifact content is never included in project context or list responses. For stronger power-loss durability, enable:

AGENTMESH_DURABLE_WRITES=1 npm start

That mode syncs each temporary state file before replacement and is slower by design. The default mode protects against partial JSON files while minimizing latency. Cross-record references are validated before writes, and invalid tool operations return explicit MCP error results.

Project structure

src/index.ts       MCP tools, resources, prompts, and server bootstrap
src/store.ts       Serialized JSON project state and domain mutations
src/types.ts       Shared domain contracts
src/design.ts      Baseline design-system checks
src/multimodal.ts  Provider-neutral multimodal boundary
examples/          Client configuration examples
docs/              Architecture and roadmap

Security note

This MVP is designed for trusted local development. It does not yet provide remote authentication, multi-user isolation, workspace allowlists, or real code modification. Do not expose it to a network or give it sensitive project data until those controls are implemented.

License

MIT. See LICENSE.

Available Tools

9 tools
agent_manageC

Register an agent runtime or update its presence in the shared project.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
roleNo
statusNo
agentIdNo
runtimeNo
operationYes
capabilitiesNo

TDQS

C2.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It does not disclose whether re-registering overwrites prior state, what permissions are required, whether presence is ephemeral or persisted, or how the three operations differ behaviorally. Only 'shared project' adds any context beyond the name.

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

Conciseness3/5

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

It is a single, front-loaded sentence with no padding, so it is concise. But it is under-specified rather than tight, omitting one of the three operation modes, so conciseness comes at the cost of usefulness.

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 7 params, no annotations, no output schema, and 0% schema coverage, yet the description addresses none of the parameter or behavioral details. For a multi-operation management tool it is materially incomplete.

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?

Seven parameters with 0% schema description coverage, and the description explains none of them. Fields like name, role, capabilities, runtime, and agentId are entirely undocumented, and the description does not clarify how operation values map to which other parameters are required.

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 names a verb pair (Register/update) and resource (agent runtime / presence in shared project), which gives a usable sense of purpose. However, the operation enum exposes three modes (register, status, list) and the description only accounts for two, leaving the 'list' capability unexplained. It also does not differentiate this tool from siblings like agent_message or task_manage.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no pointer to an alternative tool. The phrase 'shared project' hints at scope but the agent is left to infer when registration or presence updates are appropriate versus messaging or task tools.

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

agent_messageC

Send, list, or acknowledge durable messages between project agents.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
typeNo
taskIdNo
replyToNo
messageIdNo
operationYes
toAgentIdNo
fromAgentIdNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Durable' is a useful hint about persistence, but nothing is said about whether acknowledge is idempotent, whether delivery is guaranteed, permission requirements, or what happens to a message after acknowledgement.

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 front-loaded sentence covering the operations and the resource, with no wasted words. It is efficient, though the brevity contributes to the gaps seen in other dimensions rather than being purely a virtue.

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

Completeness2/5

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

With 8 parameters, no output schema, no annotations, and 0% schema description coverage, the description is far too thin for the tool's complexity. An agent cannot tell from it which parameters are required for which operation (e.g., messageId for acknowledge, replyTo/body for reply).

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% across 8 parameters, so the schema documents none of them and the description must compensate. The description only echoes the operation values (send/list/acknowledge) and says nothing about body, type, taskId, replyTo, messageId, toAgentId, or fromAgentId, leaving most parameters unexplained.

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 names a specific verb set (send/list/acknowledge) and a specific resource (durable messages between project agents), and the three verbs map cleanly onto the operation enum. It does not, however, distinguish this tool from siblings like review_request or task_manage, which also handle agent-to-agent coordination.

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 choose this tool over alternatives such as review_request, nor on when to pick send vs. list vs. acknowledge. Usage is only implied by the operation names, leaving the agent to infer routing conditions from the enum alone.

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

artifact_manageC

Publish, list, or read durable project artifacts by reference.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
titleNo
taskIdNo
contentNo
metadataNo
createdByNounknown-agent
operationYes
artifactIdNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: 'durable' and 'by reference' imply persistence and artifactId-based lookup, but nothing about whether publish mutates state, requires content/kind, overwrites existing artifacts, needs auth, or what a response contains. Too thin for a tool whose operation enum includes a write.

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 single sentence is front-loaded and wastes no words, but for an 8-parameter multi-operation tool this is under-specification rather than true conciseness. There is no structure separating the publish/list/read modes or their distinct parameter needs.

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 8 parameters (including a nested metadata object), two enums, a required operation, no output schema, and no annotations, the description is far too sparse to let an agent invoke any of the three modes correctly. It should at minimum state which parameters apply to which operation.

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

Parameters2/5

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

Eight parameters at 0% schema description coverage, and the description explains none of them. Only 'by reference' loosely gestures at artifactId, and the verbs loosely map to the operation enum; kind, taskId, metadata, createdBy, content, and title are left entirely unexplained.

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 names concrete verbs (publish, list, read) and a concrete resource (durable project artifacts) with a scoping phrase ('by reference'), so an agent knows the tool's domain. It does not differentiate itself from siblings like project_context or change_propose, which overlap in the artifact/knowledge space.

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 three verbs hint at modes, but there is no guidance on when to choose this over project_context, change_propose, or review_request, nor which operation each task maps to. No prerequisites, no exclusions, no alternatives named.

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

change_proposeC

Record a proposed code or workspace change for later review and approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
riskNomedium
filesNo
titleYes
taskIdNo
summaryYes
createdByNounknown-agent

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 carries the full behavioral burden. It usefully implies the change is not applied immediately ('for later review and approval'), but says nothing about permissions, whether reviewers are notified, whether the proposal is editable afterward, or what the call returns.

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?

A single front-loaded sentence with no waste, which is good. It is under-specified rather than over-long, so conciseness is fine but the brevity is not compensating for the gaps elsewhere.

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

Completeness2/5

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

For a six-parameter mutation-ish tool with no annotations, no output schema, and zero parameter documentation, this description is not complete enough. An agent cannot know the required fields, the enum semantics, or the downstream lifecycle from this text alone.

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?

All six parameters (title, summary, risk, files, taskId, createdBy) have 0% schema description coverage and the description explains none of them. The agent gets no guidance on what 'files' expects, whether 'taskId' links to task_manage, the meaning of the risk enum, or the default of createdBy.

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

Purpose4/5

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

The description states a specific verb and resource: 'Record a proposed code or workspace change.' An agent knows this creates a proposal artifact rather than applying a change. However, it does not distinguish itself from the close sibling review_request, which an agent may conflate with this tool.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as review_request despite that tool being an obvious sibling. The phrase 'for later review and approval' hints at the workflow stage but stops short of telling the agent when to pick this tool over review_request or artifact_manage.

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

design_checkC

Run baseline centralized design-system and accessibility checks against a UI summary and optional tokens.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdNo
tokensNo
createdByNounknown-agent
uiSummaryYes
accessibilityNotesNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether the check is read-only, what the output contains, whether it needs a taskId or createdBy to be meaningful, or any side effects. Only 'baseline' and 'centralized' add context.

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, front-loaded sentence with no filler — the verb and resource lead. It is efficient, though brevity here may under-serve 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?

For a 5-parameter tool with no annotations and no output schema, the description should explain the checks performed, the role of each parameter, and what comes back. It covers only two parameters and gives no result or safety context, leaving meaningful gaps.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters. The description mentions the required uiSummary and the optional tokens, but leaves taskId, createdBy, and accessibilityNotes entirely unexplained in both schema and description, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb ('Run') and a concrete resource ('baseline centralized design-system and accessibility checks') scoped to inputs ('UI summary and optional tokens'). It is distinguishable from siblings like multimodal_analyze or review_request, though it does not explicitly contrast itself with them.

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?

'Baseline centralized' hints at the check's position relative to other tooling, but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent must infer whether this belongs before change_propose/review_request or replaces them.

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

multimodal_analyzeC

Create a bounded multimodal analysis record for text or a local asset. This MVP reports provider readiness and never pretends provider-required work is complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYes
modeYes
taskIdNo
contentYes
createdByNounknown-agent

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose one genuinely useful trait: this is an MVP that 'reports provider readiness' and 'never pretends provider-required work is complete', warning the agent not to expect real analysis output. It still says nothing about side effects, permissions, idempotency, or what the created record looks like.

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?

Two tight sentences with no filler and the core behavior statement front-loaded. It is dense with undefined terms like 'bounded', but it is not padded.

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?

A five-parameter creation tool with no output schema, no annotations, and zero schema description coverage needs far more than two sentences. Return values, how 'provider readiness' is surfaced, and the meaning of taskId/createdBy are all absent.

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

Parameters2/5

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

Schema description coverage is 0% across five parameters, so the description must compensate and largely fails. Only 'mode' is reflected (text vs. local asset); goal, content, taskId, and createdBy are never explained, including the required-vs-optional distinction or the default for createdBy.

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?

It names a specific verb ('Create') and resource ('multimodal analysis record') and scopes it to 'text or a local asset', which maps to the mode enum. But 'bounded multimodal analysis record' is jargon that does not tell an agent what is actually produced or persisted, so the purpose is only partially clear.

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

Usage Guidelines2/5

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

The description offers no when-to-use context, no prerequisites, and never mentions any of the eight sibling tools (design_check, review_request, artifact_manage, etc.) that might be the right choice instead. The agent must infer selection from the name alone.

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

project_contextA

Read a compact project snapshot: active agents, tasks, unread messages, artifacts, and decisions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. 'Read' and 'compact' do convey that this is a non-mutating, summarized call, which is useful signal. It does not confirm read-only status explicitly, state freshness or scope limits of the snapshot, or note that a compact view may omit detail.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the verb and resource lead and the content list is packed into the same clause. Nothing could be removed without losing information.

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 description's enumeration of the returned domains effectively serves as the return-value description, which is reasonable for a zero-parameter read tool. The only real gap is the absence of any behavioral or scoping note, which matters more given there are no annotations.

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 takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate, and the enumerated contents help the agent understand what the call returns without parameters.

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?

States a specific verb ('Read') and resource ('project snapshot') and enumerates what the snapshot contains (agents, tasks, messages, artifacts, decisions), so the agent knows exactly what it gets. It does not, however, differentiate itself from siblings like task_manage or agent_message, e.g. by stating that this is the aggregate read versus their per-domain operations.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no alternative tool is named. The agent can infer it is an orientation call made before acting, but the description never says so, nor does it distinguish this from the domain-specific siblings.

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

review_requestC

Create a review artifact and notify a reviewer agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYes
artifactIdYes
requestedByYes
reviewerAgentIdNo

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 carries the full burden. It discloses two actions (create artifact, notify reviewer) but omits how the notification is delivered, what happens if reviewerAgentId is omitted, permission requirements, and whether the artifact creation is reversible.

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 front-loaded sentence with no filler or repetition. It is appropriately sized for conciseness, though the extreme brevity leaves important content unaddressed elsewhere.

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?

For a four-parameter mutation tool with no annotations and no output schema, the description is far too thin. It supplies almost no information about parameters, side effects, or expected outcomes needed to invoke it correctly.

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

Parameters1/5

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

Schema description coverage is 0% across four parameters, and the description mentions none of them by name. 'review artifact' and 'reviewer agent' loosely hint at artifactId and reviewerAgentId, but question and requestedBy are entirely undocumented.

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?

States a specific verb ('Create') and resource ('review artifact') plus a second action ('notify a reviewer agent'). It does not explicitly differentiate from siblings like artifact_manage or agent_message, but the combined review-oriented intent is clear.

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

Usage 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 such as artifact_manage or agent_message. The context is only implied by the name and description; no exclusions or preconditions are stated.

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

task_manageC

Create, list, claim, update, or complete durable project tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
statusNo
taskIdNo
priorityNo
createdByNounknown-agent
operationYes
assigneeIdNo
descriptionNo
dependenciesNo
parentTaskIdNo

TDQS

C2.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden and largely fails it. 'Durable' hints at persistence but the description never states side effects of create/update, whether tasks are shared or scoped to an agent, permission requirements, or what a claim/complete workflow involves. For a mutating multi-operation tool this is a significant gap.

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?

A single short sentence is well front-loaded and free of padding, but it is under-specified rather than genuinely concise. The terseness comes at the cost of the information an agent needs.

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?

With 10 parameters, three enums, zero schema descriptions, no annotations, and no output schema, the description needs to carry substantial weight and instead delivers one clause. An agent cannot determine operation-specific parameter requirements or the task lifecycle from it.

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% across 10 parameters, and the description adds no parameter meaning whatsoever. It says nothing about which fields apply to which operation, what taskId vs parentTaskId vs dependencies do, or the role of status/priority enums. The description does not compensate for the coverage gap.

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 names a specific resource (durable project tasks) and a set of verbs, so the general purpose is legible. However, two of the listed verbs ('claim', 'complete') are not valid values of the operation enum (create/list/update), so an agent reading only the description would form a wrong mental model of the tool's capabilities. Combined with no differentiation from the eight sibling tools, this is minimum-viable clarity with a real inaccuracy.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives such as project_context, review_request, or artifact_manage. No prerequisites, no context about which operation to pick for a given intent. Only the verb list implies usage.

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 updatesv0.1.0
    • First observedagent_manage
    • First observedagent_message
    • First observedartifact_manage
    • First observedchange_propose
    • First observeddesign_check
    • First observedmultimodal_analyze
    • First observedproject_context
    • First observedreview_request
    • First observedtask_manage

TDQS

C2.9/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have clearly distinct domain+action targets. There is some adjacency between change_propose/review_request and review_request/artifact_manage, and between project_context and the individual list operations, but the descriptions make intended use clear.

Naming Consistency4/5

All names use snake_case and mostly follow an entity_action pattern such as task_manage, agent_manage, artifact_manage, and change_propose. project_context and agent_message deviate slightly with entity_noun forms, and multimodal_analyze uses a qualifier_action form, but the overall convention is readable and predictable.

Tool Count5/5

Nine tools is well within the ideal 3–15 range for an agent collaboration server. Each tool maps to a core domain capability without obvious redundancy.

Completeness3/5

Core create/list/update/read flows for agents, tasks, messages, and artifacts are present. However, there is no explicit approve/reject or review-decision operation despite change_propose and review_request implying a review lifecycle, and no delete/archive operations.

Related MCP Connectors

Related MCP Servers