AgentMesh MCP
AgentMesh MCP is a local stdio MCP gateway that coordinates multiple coding agents around shared project state (JSON file + content-addressed artifacts).
project_context— read a compact snapshot of active agents, tasks, unread messages, artifacts, and decisions without loading artifact contents.agent_manage— register agents, update presence/status (online, idle, busy, offline), and list agents.task_manage— create, list, and update durable tasks with statuses (backlog → done/cancelled), priority, assignee, dependencies, and parent tasks.agent_message— send, list, and acknowledge durable agent-to-agent messages (message, request, reply, status, review), optionally tied to a task or thread.artifact_manage— publish, list, or read artifacts by ID (note, analysis, OCR, design-review, change-proposal, review), keeping large content out of model context.multimodal_analyze— record bounded text or local-asset analysis requests, reporting real provider readiness instead of faking OCR/vision results.design_check— run baseline design-token and accessibility checks against a UI summary.change_propose— record a guarded code/workspace change proposal with risk level and affected files for later approval.review_request— create a review artifact and notify a reviewer agent with a question.Resources —
agentmesh://project/stateandagentmesh://project/design-systemfor direct state/design-system reads.Prompts — reusable
plan-taskandreview-changeprompts.Coordination workflow — context → task → message → artifact → review → approved change, with bounded lists, opaque cursors, and SHA-256 artifact references.
Not yet available: remote HTTP/OAuth, WebSockets, hosted OCR/vision, runtime agent bridges, Git worktree isolation, CI/merge automation, and multi-user storage — treat it as trusted-local-development only.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AgentMesh MCPcreate a task for the login refactor and message the worker agent"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.jsonwith 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 startThe 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 startOptional 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.jsOr 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.jsHost configuration formats vary. The server itself remains a standard stdio MCP server.
Public MCP surface
The server deliberately exposes a compact interface:
Tool | Purpose |
| Read compact project state without loading all artifact contents. |
| Register agents and update their shared presence. |
| Create, list, and update durable tasks. |
| Send, list, and acknowledge agent messages. |
| Publish, list, and read durable artifacts by reference. |
| Record bounded text or asset analysis requests. |
| Run baseline token and accessibility checks. |
| Record a guarded change proposal. |
| Create a review artifact and notify a reviewer. |
Resources:
agentmesh://project/stateagentmesh://project/design-system
Prompts:
plan-taskreview-change
Example workflow
An agent calls
project_context.It creates a task with
task_manage.It registers or identifies another agent through the shared project state.
It sends a request with
agent_message.The worker publishes its result with
artifact_manage.The parent requests review with
review_request.A human or future policy engine approves a
change_proposeresult.
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 devnpm 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 benchmarkThe 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.jsonbenchmarks/results/benchmark-report.mdbenchmarks/results/benchmark-report.htmlbenchmarks/results/latency-by-scenario.svgbenchmarks/results/response-size-by-scenario.svgbenchmarks/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 startThat 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 roadmapSecurity 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 toolsagent_manageC
Register an agent runtime or update its presence in the shared project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| role | No | ||
| status | No | ||
| agentId | No | ||
| runtime | No | ||
| operation | Yes | ||
| capabilities | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| type | No | ||
| taskId | No | ||
| replyTo | No | ||
| messageId | No | ||
| operation | Yes | ||
| toAgentId | No | ||
| fromAgentId | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| title | No | ||
| taskId | No | ||
| content | No | ||
| metadata | No | ||
| createdBy | No | unknown-agent | |
| operation | Yes | ||
| artifactId | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| risk | No | medium | |
| files | No | ||
| title | Yes | ||
| taskId | No | ||
| summary | Yes | ||
| createdBy | No | unknown-agent |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | No | ||
| tokens | No | ||
| createdBy | No | unknown-agent | |
| uiSummary | Yes | ||
| accessibilityNotes | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | ||
| mode | Yes | ||
| taskId | No | ||
| content | Yes | ||
| createdBy | No | unknown-agent |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | ||
| artifactId | Yes | ||
| requestedBy | Yes | ||
| reviewerAgentId | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| status | No | ||
| taskId | No | ||
| priority | No | ||
| createdBy | No | unknown-agent | |
| operation | Yes | ||
| assigneeId | No | ||
| description | No | ||
| dependencies | No | ||
| parentTaskId | No |
TDQS
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.
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.
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.
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.
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.
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.
9 tool updates
v0.1.0- First observed
agent_manage - First observed
agent_message - First observed
artifact_manage - First observed
change_propose - First observed
design_check - First observed
multimodal_analyze - First observed
project_context - First observed
review_request - First observed
task_manage
TDQS
Scored across 9 tools
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.
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.
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.
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
Share one project context across ChatGPT, Claude, Telegram and any MCP client.
The project brain for AI coding agents — memory, decisions, sprints, knowledge base via MCP.
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMulti-project execution, memory, and collaboration platform for humans and AI agents, providing MCP tools for agents to read and write project state.2MIT
- AlicenseAqualityBmaintenanceA local MCP server that enables multiple AI coding tools to share structured project state (decisions, tasks, bugs) so they coordinate without re-explaining.5MIT
- AlicenseAqualityAmaintenanceA local-first MCP server that snapshots project working state into a structured context object, enabling agents to share and resume sessions seamlessly without leaving your machine.54Apache 2.0
- AlicenseNot gradedqualityAmaintenanceLocal-first MCP server that provides project context, verification gates, and structured tools for coding agents to discover knowledge, run diagnostics, and execute allowlisted commands within a repository.24 npmMIT