CPG-Radio
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., "@CPG-Radiopoll thread 'handoff' for messages since my last ack"
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.
CPG-Radio
A fork of the CPG server that adds non-blocking peer messaging and a durable task-lease layer on top of the Cognitive Planning Graph.
The base server is memory with no bus: it models a completed fan-out run (WORKFLOW → WORKER → STRUCTURED_RESULT) but gives no agent a way to tell another anything while work is in flight. AgentRadio-style message buses are the converse — a bus with no memory, whose threads evaporate at the end of a run.
CPG-Radio adds the bus, and every message is also a typed, provenance-linked, FTS + embedding-searchable graph node. Passive awareness that stays queryable after the run and across sessions.
Section references below (DESIGN §x, SPEC §y) point at internal design documents that are not published; they are kept as provenance markers on the code comments that cite them.
What's new
Messaging (DESIGN §6.1)
Tool | What it does |
| Open a THREAD node — a named channel for one topic or handoff. Validates any |
| Post a MESSAGE to a thread as the calling agent. Creates the node, |
| Read messages newer than a cursor, oldest first, excluding your own. Read-only — it does not advance any cursor. |
| The only writer of the caller's cursor. Idempotent and forward-only; a replayed or stale ack cannot re-deliver processed messages. |
| Block up to 30 s for a message mentioning you (or broadcasting to |
Session identity (§6.2)
Tool | What it does |
| Bind this connection to an existing active session and declare your agent id. Returns a |
Task leases (§6.3)
Tool | What it does |
| Atomically take the lease on a TASK. Succeeds when it is unowned, expired, or already yours. Losing the race returns |
| Extend your lease. |
| Give the lease up with a terminal status (or |
| Stamp |
| Close your own WORKER as |
Tips
Tool | What it does |
| Store a short project TIP ( |
| List tips by usefulness and recency, or search them through the existing hybrid FTS + embedding path with a usefulness boost. Superseded tips are hidden by default. |
| Give one idempotent usefulness vote per agent. |
join_session and plan_session surface up to five top project tips on arrival.
Pass the returned binding_token on later identity-bearing calls. A connection
that has carried more than one agent identity rejects tokenless identity-bearing
calls, preventing a sibling join from redirecting messages, acknowledgements,
leases, worker completion, or result authorship.
Ordinary cpg_query calls exclude TIP nodes unless node_types explicitly
includes TIP, keeping operational advice separate from normal graph recall.
Swarm coordination plane
Area | Tools and guarantees |
Authenticated campaigns |
|
Information barriers | Campaign threads enforce |
Synchronization |
|
Resource coordination |
|
Reliable delivery |
|
Atomic lifecycle |
|
Independent work |
|
Governance and health | Campaign command tips are quarantined until |
Staleness |
|
Legacy session threads remain open. Migrate a crew by creating a campaign,
issuing each stable agent a membership token through a trusted channel, having
each call join_campaign, then creating campaign or participant threads.
Planning or joining another session clears the connection's old campaign grant.
Message and TIP text are always data; no body invokes a tool or changes control
state, regardless of its authority label.
Reaper (§6.4) — a background task, not a tool. Every 60 s it returns expired
task leases to planned (bumping the generation and telling the linked thread),
CAS-expires overdue barriers and shared/exclusive resource leases with dedicated
audit events, fails WORKERs with no heartbeat for an hour, and marks a WORKFLOW
whose workers have all terminated as blocked. Expired coordination records are
retained, and resource fencing generations remain monotonic when reclaimed. It
never auto-completed anything: completion is a claim about results, and only an
agent may make it. A coordinator can explicitly reconcile blocked to completed
after it has collected the terminal results.
Everything else from the base server — cpg_think, record_fact,
record_belief, plan_session, update_task, replan, start_workflow,
update_workflow, register_worker, record_structured_result,
import_fable_trace, record_execution, reflect, resolve_contradiction,
and the three cpg://session/* resources — keeps its existing contract.
cpg_query, get_nodes, and record_structured_result now receive caller
context so access and authorship can be enforced.
The agent protocol
A crew is not a new entity: it is one session_id that several agents joined.
Because nodes stay session-scoped, cpg_query's existing
session_scope: current | project | all gives crew-scoped and cross-crew recall
for free.
join_session → claim_task → work → poll / ack → release_taskjoin_session(session_id, agent_id)— orplan_session(..., agent_id=..., archive_previous=False)if you are the one opening the session. Identity is bound here. Keep the returnedbinding_tokenand pass it to later identity-bearing tools. No later tool takes anagent_idargument.claim_task(task_id)— take the lease before touching the work. Keep the returnedlease_generation; every later mutation needs it.claimed: falsejust means someone else got there first — pick another task.Work. Call
renew_leaseif you will exceed the lease (default 900 s, clamped to[60, 7200]), andworker_heartbeatif you registered a worker.poll_messages/ack_messagesbetween work steps. Poll is read-only, so ack only what you have actually processed; a crash between the two re-delivers rather than loses. Post your own findings withsend_message, mentioning the agents who need them.release_task(task_id, lease_generation, status)—done,done_pending_verification,failed,blocked, orplannedto hand it back.
If you crash instead, the reaper does step 5 for you within a minute.
Parameter names are singular by design: after_seq, max_results,
lease_seconds, lease_generation. There are no aliases.
Running it
CPG-Radio runs on port 8773 with its own DB and project id, deliberately distinct from the live CPG server on 8766:
scripts/run-cpg-radio-httpThat script pins CPG_PORT=8773, CPG_PROJECT_ID=cpg-radio, and
CPG_DB_PATH=~/.cpg-radio/radio.db. Health check:
curl -s http://127.0.0.1:8773/ # {"service": "cpg-radio", ...}MCP requests go to http://127.0.0.1:8773/mcp.
A development checkout refuses to start on the reserved legacy endpoint.
Port 8766, or a db_path under ~/.cpg/ or ~/.local/state/codex-mcp/, is
rejected at startup with LiveDeploymentError — the guard exists so a working
copy can never attach to an already-installed server's database. An installed
deployment that genuinely owns that endpoint may set
CPG_ALLOW_LEGACY_ENDPOINT=1; the spawn gate then requires the complete
canonical identity (loopback bind, the canonical project id, SQLite, and the
canonical DB path) and refuses mixtures of development and canonical settings.
Installed launchers should also set CPG_SPAWN_TOKEN_PATH,
CPG_WORKER_LOG_DIR, and CPG_SUBAGENT_MCP_CONFIG to their own state paths.
Configuration
Variable | Meaning | Default |
|
| inferred |
| PostgreSQL connection string | — |
| SQLite path |
|
| project / session namespace |
|
|
|
|
| HTTP bind |
|
| HTTP MCP path |
|
| reaper tick; |
|
| heartbeat age that fails a WORKER |
|
Schema version is 3. create_schema upgrades a v2 DB in place (the new
tables are IF NOT EXISTS and the new payload fields are all optional, so there
is no data migration) and refuses to start against a DB recording a newer
version than the binary.
Development
.venv/bin/python -m pytest -q
# Optional: only against an isolated disposable PostgreSQL database
CPG_TEST_POSTGRES_URL=postgresql://... \
.venv/bin/python -m pytest tests/integration/test_coordination_postgres.py -qEnd-to-end smoke test — in-process, no network, no server, throwaway DB:
.venv/bin/python scripts/smoke-radio.pyIt walks the full protocol (two agents join one session, one claims a task and posts a finding mentioning the other, the other polls and acks, the lease expires, the reaper hands the task back) and prints PASS/FAIL per step, exiting nonzero on the first failure.
Notes
Single process owns the DB. The reaper assumes it. Multi-process deployment still needs leader election, TLS/service identity, and Postgres notification ownership. Coordination objects are backend-neutral; this does not pretend a multi-host control plane is safe yet.
wait_for_mentionis poll-backed at 500 ms on both backends. There is noLISTEN/NOTIFY:get_db()opens and closes a connection per call, so aLISTENwould never become active before the wait begins. Cursor polling is the primary path regardless;wait_for_mentionis latency sugar.Message bodies are capped at 16 KiB and rejected, never truncated. Larger findings go through
record_structured_resultwith the message carrying arefspointer.kind="status"andkind="system"messages skip embedding, so a chatty bus does not run the model on every ping.finding,question,answer,claim, andhandoffare embedded — those are the ones worth recalling later.kind="system"is server-only and rejected fromsend_message.Embedding search degrades gracefully when the model or vector backend is unavailable; SQLite uses
sqlite-vec, PostgreSQL usespgvector.
Available Tools
59 toolsack_deliveryC
Record an idempotent required-delivery acknowledgement.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses idempotency, a meaningful behavioral trait, but with no annotations it carries the full burden. It omits other behavioral aspects like side effects, authentication needs, or what the acknowledgement actually does, leaving significant gaps.
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, terse sentence with no filler. It is front-loaded with the key trait (idempotent) and the action. However, the extreme brevity edges toward under-specification, so it is concise but not overly structured.
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 only 2 parameters, no output schema, no annotations, and a large sibling set, the description is too sparse to let an agent determine proper usage. It lacks any context about the required-delivery mechanism or when the acknowledgement is needed.
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 50% (binding_token is described, message_id is not). The tool description adds no parameter explanation, so it fails to compensate for the undocumented message_id and adds no value beyond the schema.
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 clear action ('Record an idempotent required-delivery acknowledgement'), specifying a verb and resource. The qualifier 'required-delivery' gives it specificity beyond generic ack tools, but it does not explicitly differentiate from siblings like ack_messages.
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 is given on when to use this tool versus alternatives such as ack_messages or ack_thread. The description lacks any context about delivery requirements, prerequisites, or conditions that would select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ack_messagesA
Advance the calling agent's cursor to ack_seq. Forward-only: a lower value is ignored, so a replayed ack cannot re-deliver processed messages.
| Name | Required | Description | Default |
|---|---|---|---|
| ack_seq | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It reveals the key forward-only trait, that lower values are ignored, and the replay safety property: a replayed ack cannot re-deliver processed messages. This is meaningful behavioral context beyond the schema, though it does not mention response shape or potential errors.
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 description is two tight sentences with no filler. The primary action is front-loaded, and the important forward-only behavior is stated immediately after. Every sentence contributes useful 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?
For a simple two-parameter ack tool with no output schema, the description covers the essential behavior and edge-case semantics. It omits return value details, but the core usage and replay behavior are sufficiently described for an agent 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 coverage is 50%; binding_token is described in the schema, but ack_seq is not. The description adds meaning to ack_seq by framing it as the cursor position, and the forward-only note clarifies its semantics. It does not elaborate on binding_token beyond the schema, so the description only partially compensates for the low schema coverage.
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 uses a specific verb and resource: 'Advance the calling agent's cursor to ack_seq.' This clearly identifies what the tool does and distinguishes it from sibling ack tools like ack_thread and ack_delivery, which target different resources. The forward-only note reinforces its unique role.
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 states the core operation and the forward-only constraint, implying it should be used after messages are processed. However, it does not explicitly say when to use this tool versus poll_messages or other ack-related siblings, nor does it mention any exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ack_threadB
Advance a per-thread subscription cursor without hiding other threads.
| Name | Required | Description | Default |
|---|---|---|---|
| ack_seq | Yes | ||
| thread_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses one meaningful trait—the operation will not hide other threads—but does not explain what happens to messages in the current thread, idempotency, ordering, or side effects. Some behavioral context, but clear gaps.
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 description is a single tightly worded sentence with no filler; the constraint 'without hiding other threads' earns its place. It is concise, though the brevity comes at the cost of omitted behavioral and parameter details.
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 3-parameter tool with no output schema and no annotations, this description is incomplete: an agent cannot determine when to use it, what ack_seq means, or what result to expect. It provides only the most basic operation and a single constraint.
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 coverage is only 33%, but the description adds no parameter-level detail. 'ack_seq' and 'thread_id' are left to be inferred from the tool's name and the phrase 'cursor', and binding_token is documented only in the schema. The description does not clarify whether ack_seq is inclusive, exclusive, required to be monotonically increasing, or what effect it has.
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 action ('Advance') on a specific resource ('per-thread subscription cursor') and includes a distinguishing qualifier ('without hiding other threads'). It is clear enough to separate from sibling ack_messages/ack_delivery, though it doesn't name 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?
The phrase 'per-thread subscription cursor' implies the tool is for advancing a cursor for one thread's subscription, but there is no explicit when-to-use or when-not-to-use guidance and no mention of alternatives. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arrive_barrierB
Atomically arrive at a barrier using its observed version.
| Name | Required | Description | Default |
|---|---|---|---|
| barrier_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| expected_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the primary source of behavioral information. It discloses that the operation is atomic and version-checked, but it does not explain what happens on version mismatch, whether arrival blocks, or what side effects occur.
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 entire description is a single dense sentence with no filler. 'Atomically' is front-loaded and every remaining word adds meaning.
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 concurrency-sensitive tool with no annotations and no output schema, this description is too incomplete. It lacks failure semantics, return behavior, relationship to create_barrier, and guidance on how to obtain the expected version.
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?
With only 33% schema description coverage, the description partially compensates by explaining that expected_version is an observed version and connecting the tool to a barrier resource. However, binding_token is not mentioned at all, leaving its purpose under-specified.
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 clearly specifies the verb ('arrive'), the resource ('barrier'), and a key condition ('using its observed version'). It is distinct from sibling create_barrier, though the term 'arrive' is domain jargon that may not be immediately obvious.
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 gives no explicit guidance on when to use this tool versus alternatives such as create_barrier or wait_for_signal. It implies the need to have observed a version, but does not state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_workerB
Cancel a spawned worker. Idempotent. Authorised for the root spawn_token, or a child_token belonging to one of the target's ancestors.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| worker_id | Yes | ||
| child_token | No | ||
| spawn_token | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does add meaningful behavioral context: the operation is idempotent and restricted to specific token relationships. However, it does not disclose whether cancellation is terminal, what side effects occur, or what errors or results to expect, leaving coverage partial.
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?
Three short sentences, each earning its place: one identifies the operation, one states idempotency, and one specifies the authorization scope. There is no filler or redundancy.
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 5-parameter tool with no output schema and no annotations requires more context than this. The token-authorization note helps, but the description omits required parameter semantics, return behavior, cancellation effects, and error conditions, making reliable invocation uncertain.
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 only 20%, so the description must compensate. It clarifies spawn_token as the root authorization and child_token as an ancestor-linked token, but the required worker_id and the reason parameter remain undocumented in both schema and prose.
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 ('Cancel') and resource ('a spawned worker'), so an agent can clearly tell what the tool does. It does not explicitly distinguish it from sibling lifecycle tools such as complete_worker, but the core action is unambiguous.
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 gives no guidance on when to use cancel_worker versus alternatives like complete_worker, release_task, or other worker-management tools. The idempotency note and authorization condition are useful invocation constraints, but they do not address usage selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_resourceC
Claim a shared or exclusive named resource lease.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | exclusive | |
| campaign_id | Yes | ||
| resource_key | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| lease_seconds | No | ||
| expected_generation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavior beyond the schema. It only states the action without disclosing side effects (e.g., blocking, failure on contention), requirements (e.g., binding_token, expected_generation), or the meaning of lease_seconds. The description does not explain the return value or error scenarios, making behavior opaque.
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 description is a single, efficient sentence that front-loads the verb and key distinguishing features. It is appropriately compact. However, given the tool's complexity (6 parameters, no output schema), the brevity is borderline; still, the structure itself is well-formed.
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 six parameters and no output schema, yet the description omits the purpose of most parameters, the expected return (e.g., a lease token), and the relationship to sibling lease/renew/release tools. Although sibling tool names hint at a lifecycle, the description does not tie the pieces together, leaving the definition incomplete for an agent.
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 only 17% (one of six parameters has a description). The description only clarifies 'mode' (shared/exclusive) but does not explain lease_seconds, expected_generation, binding_token, or resource_key. It does not compensate for the low schema coverage, leaving most parameters semantically unclear.
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 the specific verb 'Claim' with the resource type 'named resource lease' and the key dimension 'shared or exclusive'. This clearly distinguishes it from siblings like claim_task (tasks vs resources) and renew_resource/release_resource (lifecycle actions). The purpose is unambiguous.
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 gives no explicit guidance on when to use claim_resource versus alternatives. It does not mention that this is the initial acquisition step in a lease lifecycle, nor does it advise using renew_resource for extensions or release_resource for cleanup. The lack of when/when-not conditions leaves the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_taskA
Atomically take the lease on a TASK. Succeeds only if the task is unowned, its lease expired, or the caller already owns it. Pass the lease_generation you observed; a stale one loses the race.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| lease_seconds | No | Lease length; clamped to [60, 7200]. | |
| lease_generation | No | Generation you observed. Omit to claim against the current one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It conveys atomicity, the conditional success outcomes, and the handling of a stale lease. This goes beyond a simple 'claims' statement and gives the agent actionable behavioral details, though it does not mention error messages or side effects like lease duration behavior.
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?
Three tightly written sentences; every phrase packs information. The core action, success conditions, and parameter guidance are front-loaded with no redundancy or filler.
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 small suite of 4 parameters and no return schema, the description covers the essential behavior and the key failure race. It does omit prerequisites (e.g., identity binding) and the response payload, but the tool's complexity is low, so these gaps are minor.
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 coverage is 75%, so the schema already describes binding_token, lease_seconds, and lease_generation. The description adds value to lease_generation by explaining the race condition ('a stale one loses the race'), but it does not clarify task_id or the other parameters further. This is a modest complement to the schema.
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?
Description states a specific action 'atomically take the lease on a TASK' and defines success conditions, making it distinct from claim_resource (resource vs. task), renew_lease, and release_task. The ambiguity is resolved directly by naming 'TASK' and the ownership semantics.
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 implies when to use the tool (when a task is unowned or lease expired) but does not explicitly contrast it with sibling tools like renew_lease or release_task. It provides clear usage context for the success conditions, yet lacks explicit 'instead of X' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_threadA
Close a thread under opener or campaign-coordinator authority.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose an important authorization requirement and a mutating state change. It does not reveal side effects on subscribers or messages, reversibility, or failure behavior, leaving transparency partial.
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 core action and the key authorization constraint appear immediately.
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 simple mutation with no annotations or output schema, it covers purpose and authorization but omits postconditions, return/error behavior, and interactions with related thread tools. It is minimally viable but not complete.
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?
binding_token is already well documented in the schema, and thread_id is evident from the word 'thread'. The description adds no parameter-specific format or context details, but the required parameter remains understandable.
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?
Directly states the action ('Close') and the resource ('a thread'), and adds the authorization scope. This clearly distinguishes it from lifecycle siblings like create_thread, poll_thread, and ack_thread.
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 authority constraint ('under opener or campaign-coordinator authority') gives useful context for who may call it, and the verb implies the lifecycle moment. However, it does not explicitly name alternatives or state when not to use it, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_watchB
Close the caller's own watch registration (idempotent).
| Name | Required | Description | Default |
|---|---|---|---|
| watch_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses idempotency and the caller-scope restriction, but it does not describe side effects, identity requirements, error behavior, or what closing actually entails beyond the obvious mutation.
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 description is a single front-loaded, efficient sentence. Every word earns its place, and the idempotency caveat is neatly parenthesized without disrupting readability.
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 simple two-parameter tool, the description plus schema is basically callable, but it lacks important context about shared-connection identity and does not state effects, errors, or return behavior. The relevant siblings like plan_session and join_session make the identity question non-trivial.
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 only 50%, with watch_id lacking a description, and the tool description adds no parameter-level meaning. It does not explain how watch_id is obtained or when binding_token is needed, so it fails to compensate for the schema 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 uses a specific verb ('Close') and a clear resource ('the caller's own watch registration'), making the operation unambiguous. It also adds distinguishing scope ('caller's own') and behavior ('idempotent'), which helps separate it from sibling tools like register_watch.
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 when-to-use guidance is provided, and no alternatives or exclusions are mentioned. 'Caller's own' conveys scope but not the conditions under which an agent should choose this tool over siblings like register_watch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commit_resultA
Commit a SHA-256 digest before independent workers reveal results.
| Name | Required | Description | Default |
|---|---|---|---|
| commitment | Yes | ||
| campaign_id | Yes | ||
| workflow_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| sharing_policy | No | blinded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It communicates that the tool commits a digest rather than revealing results, but it does not disclose whether the commitment is durable, irreversible, tied to an identity, or what side effects or response an agent should expect.
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 description is a single, front-loaded sentence that immediately names the action and object. The timing clause adds the only essential context without filler.
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 tool with 5 parameters, no output schema, and no annotations, the description is too sparse. It leaves unclear how campaign_id and workflow_id are used, what sharing_policy means, whether binding_token is required in practice, and what the tool returns after a successful commit.
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 only 20%, so the description needs to compensate, but it only adds meaning for the commitment parameter by describing it as a SHA-256 digest. It says nothing about campaign_id, workflow_id, binding_token, or sharing_policy; values like 'blinded' and 'embargoed' remain 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 uses a specific verb ('Commit') and a specific resource ('SHA-256 digest') and clearly places it in time ('before independent workers reveal results'). This distinguishes it from reveal_result and other result-recording tools even though no sibling is named.
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 gives a clear temporal usage context: call this before independent workers reveal results. It does not explicitly name reveal_result as the paired alternative or list when not to use it, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_assignmentA
Atomically record a result, release the task, close the worker, and post a handoff.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | ||
| task_id | Yes | ||
| thread_id | Yes | ||
| result_data | No | ||
| result_kind | No | report | |
| workflow_id | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| result_status | No | accepted | |
| idempotency_key | Yes | ||
| lease_generation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It clearly discloses the major side effects: recording a result, releasing the task, closing the worker, and posting a handoff, and it qualifies the operation as atomic. It does not cover idempotency or lease-failure semantics, but it is unusually explicit about the tool's mutating and terminal behavior.
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?
One dense, front-loaded sentence communicates the atomic operation and its four effects without filler. Every word earns its place.
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?
This tool has 10 parameters, 5 required, 2 enums, no output schema, and no annotations. A single sentence does not provide enough context for an agent to construct a correct invocation, especially around lease_generation, idempotency_key, binding_token, and how result_kind/result_status interact with the assignment lifecycle.
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 only 10%, so the description must compensate, but it does not explain the key parameters: idempotency_key, lease_generation, result_kind, result_status, binding_token, or thread_id. It gives only high-level context around 'task' and 'result' rather than adding concrete semantic detail to the large parameter surface.
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 compound action: atomically record a result, release the task, close the worker, and post a handoff. This clearly identifies complete_assignment as the all-in-one finalization tool and distinguishes it from one-off siblings like release_task, complete_worker, and record_structured_result.
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 guidance about when to use this tool versus alternatives such as release_task, commit_result, or complete_worker. Since many siblings perform overlapping partial operations, an agent is left to infer that complete_assignment is the atomic composite, with no explicit when-to-use or when-not-to-use signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_workerA
Close the calling agent's own WORKER node with a terminal status. Call this when your delegated work is finished — otherwise the reaper stamps the worker 'failed' once it has been silent for the stale window. Identity-bound: you may only complete a worker you own. Never overwrites an existing terminal status, and refuses a live spawn-managed worker.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Recorded in the WORKER_COMPLETED event. | |
| status | No | The outcome you are claiming about your own run. | completed |
| worker_id | No | Defaults to the caller's bound worker. | |
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
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 well. It discloses identity binding, no-overwrite semantics for terminal status, refusal of live spawn-managed workers, and the reaper failure behavior. These are meaningful behavioral constraints beyond the raw schema.
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?
Three sentences, each earning its place: definition, usage trigger with consequence, and safety constraints. Information is front-loaded and there is no redundant wording.
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?
Despite having no output schema or annotations, the description is complete enough for correct invocation. It covers when to call, prerequisites (own worker), edge cases (existing terminal status, live spawn-managed worker), and the failure mode if not called. Nothing critical is missing.
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 100%, so the baseline is 3. The description adds general context about terminal status and identity but does not add significant parameter-level meaning beyond what the schema already documents for note, status, worker_id, and binding_token.
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 uses a specific verb ('Close'), identifies the exact resource ('the calling agent's own WORKER node'), and states the outcome ('with a terminal status'). It clearly differentiates from siblings like worker_heartbeat or cancel_worker by focusing on terminal completion of the caller's own worker.
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?
It explicitly says when to call it: when delegated work is finished, and provides a strong consequence of not calling it ('the reaper stamps the worker failed'). It does not explicitly name alternatives or exclusion conditions, but the identity and live-worker refusals imply when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpg_queryA
Hybrid FTS + embedding retrieval over the CPG graph. Use for structured lookups (node_type/domain filters) or open-ended recall (natural language questions). A complete 32-hex node id is resolved directly. Returns ranked node dicts.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Filter FACT/BELIEF by domain. | |
| question | Yes | Keyword or natural language query. | |
| node_types | No | Filter to specific node types. | |
| max_results | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| session_scope | No | current | |
| governance_states | No | Filter by governance state. Default: confirmed+verified+active. |
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 disclose that this is a retrieval operation ('over the CPG graph', 'Returns ranked node dicts') and that a complete node ID short-circuits retrieval. It discloses no side effects, but for a read-only query tool this is largely sufficient. Not remarkable, but solid.
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?
Three crisp sentences. Each earns its place: the first establishes the core mechanism, the second covers usage modes, and the third specifies the special-case behavior. No fluff, no repetition.
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 tool with 7 parameters AIDS and no output schema, the description covers the essential usage modes fundamental to correct invocation: what it retrieves over, what kinds of queries it accepts, that filters exist, and what the return shape is. It does not detail ranking semantics or result structure, but the mention of 'ranked node dicts' plus the parameter descriptions is sufficient for an agent to make a reasonable call.
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 coverage is 71%, with several params described. The description adds real value: 'Hybrid FTS + embedding retrieval' explains what question does, 'node_type/domain filters' maps to node_types/domain params, and 'complete 32-hex node id is resolved directly' clarifies an alternative question behavior. This goes beyond what the schema alone tells an agent.
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 opens with a specific, compound verb phrase: 'Hybrid FTS + embedding retrieval over the CPG graph.' It then enumerates concrete use modes (structured lookups, open-ended recall, direct node-ID resolution). This is far beyond a tautology; however, it does not explicitly contrast with sibling tools like get_nodes, so it stops short of a perfect score.
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 gives explicit guidance on when to use the tool ('Use for structured lookups' or 'open-ended recall') and calls out the special case for complete node IDs. It does not mention exclusions or explicitly route to an alternative, but the actionable use cases are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpg_thinkA
Ephemeral reasoning scratchpad. Optionally promote to an OBSERVATION node when the thought captures directly perceived data (tool output, file read, etc). Use promote_to='observation' with obs_type to persist. Predictions and hypotheses go through record_belief, not here.
| Name | Required | Description | Default |
|---|---|---|---|
| thought | Yes | Reasoning text (ephemeral unless promoted). | |
| obs_type | No | Required when promote_to='observation'. | |
| promote_to | No | Promote to OBSERVATION node. | |
| source_tool | No | Tool that produced the observed output. |
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 disclosure burden. It transparently states the ephemeral nature, the promotion mechanism that persists to an OBSERVATION node, and the requirement to pair obs_type with promotion. It does not address return behavior, but the core persistence semantics, side effects, and conditionality are disclosed.
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?
Three sentences total, with the core role ('ephemeral reasoning scratchpad') front-loaded, followed by the promotion condition and the routing rule. Every sentence contributes a distinct piece of information with zero filler.
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 description gives agents the essential operational context: ephemeral scope, promotion when needed, and explicit alternative routing. The only notable omission is what the tool returns or what an OBSERVATION node means downstream, but given the 100% schema coverage and the strong usage routing, the agent has enough 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 100%, so baseline is 3. The description adds meaningful parameter semantics by clarifying that promote_to_=observation with obs_type is the persistence condition, and qualifying which content qualifies (directly perceived data) versus content that belongs in record_belief. This goes beyond what the schema states about the 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?
The description opens with 'Ephemeral reasoning scratchpad', stating a specific role and resource immediately. It further distinguishes the tool from record_belief by explicitly stating that predictions and hypotheses go through record_belief, not here.
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 gives explicit conditions for persisting: 'Use promote_to=\'observation\' with obs_type to persist' and when to do so ('when the thought captures directly perceived data (tool output, file read, etc)'). It also gives direct when-not instructions by routing predictions and hypotheses to record_belief, leaving no ambiguity about the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_barrierC
Create a quorum barrier for an explicit campaign phase.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| phase | No | ||
| quorum | No | ||
| campaign_id | Yes | ||
| deadline_at | No | ||
| participants | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure, but it only states that something is created. It does not mention side effects, whether creation requires authorization, whether it blocks, what happens to configured participants, or what the return value is.
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 description is a single front-loaded sentence with no filler or redundancy. It is efficient, though the brevity comes at the cost of useful behavioral and parameter detail.
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 tool with seven parameters, no output schema, and no annotations, an 11-word description is materially incomplete: an agent cannot infer the required call shape, return value, or lifecycle placement. It is not a pure tautology, so it earns slightly above the floor.
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 description weakly maps to 'quorum' and 'phase', but it adds no meaning for campaign_id, name, deadline_at, participants, or binding_token. Since schema description coverage is only 14%, the description does not compensate for the mostly undocumented 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?
The description uses a specific verb-resource pair ('Create a quorum barrier') and scopes it to 'an explicit campaign phase,' which is enough for an agent to distinguish it from nearby siblings like arrive_barrier. It does not explicitly name alternatives, so it stops just short of full differentiation.
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 guidance on when to create a barrier versus use related tools such as arrive_barrier or plan_session, nor any mention of prerequisites or sequencing. The phrase 'for an explicit campaign phase' only implies a context; it does not say when-not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_campaignC
Create a durable coordination campaign and owner membership capability.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| description | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| default_sharing_policy | No | full |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only says the campaign is 'durable' and that an owner membership is created. It does not explain side effects, persistence semantics, token requirements, sharing policy consequences, or what happens to the caller after creation. This is too thin for a mutating tool with no annotation safety signals.
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 description is a single sentence and not bloated, but it is so terse that it sacrifices useful content. It is front-loaded with the core action, yet the wording is cryptic ('owner membership capability') and does not earn its place as a complete orientation. This is under-specification rather than effective conciseness.
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 four parameters, no output schema, no annotations, and a low schema description coverage, the description is far too incomplete. It does not explain how to use the parameters, what the return value is, what ownership means, or how this relates to the many campaign/thread/member sibling tools. An agent would struggle to invoke this correctly without additional external knowledge.
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 only 25%, so the description should compensate by explaining non-obvious parameters like binding_token and default_sharing_policy, but it does not mention any parameters at all. The schema itself documents only binding_token, leaving name, description, and default_sharing_policy semantics largely unexplained. The description adds no parameter-level value.
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 action ('Create') and a concrete resource ('durable coordination campaign'), and adds that it creates 'owner membership capability.' This is more than a tautology and gives an agent a basic idea of what the tool does. However, the phrase 'owner membership capability' is imprecise, and the description doesn't explicitly differentiate this from sibling creation tools like create_thread or start_workflow.
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 guidance about when to use this tool versus join_campaign, invite_member, or other campaign-related tools. The description does not state what scenarios call for creating a campaign, nor does it mention any exclusions or prerequisites. The agent must infer usage solely from the tool name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_threadB
Open a THREAD node: a named channel other agents in this session can post to. Use one thread per topic or handoff, not one per message.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| purpose | No | ||
| task_ids | No | ||
| visibility | No | session | |
| access_mode | No | open | |
| campaign_id | No | ||
| workflow_id | No | ||
| participants | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| sharing_policy | No | full |
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 reveals that a thread is a named channel other agents can post to, but it does not explain whether duplicate topics are allowed, what opening an existing thread does, what side effects occur, what permissions apply, or what the response contains.
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 description is front-loaded, unambiguous, and contains no filler. Both sentences earn their place, though the brevity leaves important operational details uncovered.
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 10 parameters, three enums, no annotations, and no output schema, the description is far from complete. It provides a concept and one usage rule but not enough information for an agent to correctly set access_mode, visibility, sharing_policy, or understand identity requirements like binding_token.
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 only 10%, so the description must compensate, but it mentions no parameters at all. The agent is left to infer the meaning of visibility, access_mode, sharing_policy, task_ids, participants, and other fields from the raw schema.
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: 'Open a THREAD node: a named channel other agents in this session can post to.' It also differentiates from message-level tools via 'not one per message,' so an agent can distinguish create_thread from send_message and thread-interaction siblings.
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?
'Use one thread per topic or handoff, not one per message' gives explicit context and a clear exclusion for when not to create a thread. It does not name a specific alternative tool, but the guidance is concrete enough to route an agent's decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop_tipA
Drop a short practical TIP for other agents. TIPs are project-scoped, deduplicated by normalized text, and remain separate from FACT/BELIEF governance.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | craft | |
| tags | No | Normalized to unique lowercase kebab-case strings. | |
| text | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| evidence_refs | No | Grounding nodes. Campaign command tips remain quarantined until moderation. | |
| supersedes_id | No | Older TIP this replaces. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tip_id | Yes | |
| deduped | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden, and it does disclose meaningful behavior: project scoping, deduplication by normalized text, and separation from FACT/BELIEF governance. It does not mention duplicate-handling failure modes or whether the operation is idempotent, but the most important behavioral traits are present.
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 description is a single front-loaded sentence with no filler. It states the primary action first, then packs scope and governance details efficiently.
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 tool with no annotations, the description covers scope and governance but leaves several call-critical aspects to the schema, such as identity requirements and evidence_refs quarantine behavior. The presence of an output schema reduces the need to describe return values.
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 67%, so most parameters already have descriptions. The tool description adds only 'short practical' context for text and does not clarify the ambiguous kind enum values or binding_token semantics beyond what the schema states.
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 the resource ('short practical TIP'), the action ('Drop'), and its distinguishing traits: project-scoped, deduplicated by normalized text, and separate from FACT/BELIEF governance. This clearly differentiates it from sibling tools like record_fact and record_belief.
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 gives contextual guidance by noting TIPs are separate from FACT/BELIEF governance, implying this tool is for practical tips rather than facts or beliefs. However, it never explicitly states when to prefer drop_tip over related siblings like tips, tip_useful, or moderate_tip, nor gives exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nodesA
Fetch whole nodes by id — the by-id counterpart to cpg_query's ranked search. Returns each node's full payload (e.g. a STRUCTURED_RESULT's complete data), not a truncated match. Use when you hold specific ids — such as the result ids a crew posted to a thread — and need the recorded detail, not a summary. Scoped to your session by default; session_scope='project' reads across the project.
| Name | Required | Description | Default |
|---|---|---|---|
| node_ids | Yes | Node ids to fetch. Ids not in scope come back under 'missing'. | |
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| session_scope | No | current |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does add real behavior: it returns the complete payload rather than a truncated match, and it discloses session scoping defaults ('Scoped to your session by default; session_scope='project' reads across the project'). It stops short of explicitly confirming it is read-only and says nothing about errors or rate limits, but 'Fetch' plus the scoping detail cover the key expectations.
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?
Four short sentences, each carrying distinct information: what it fetches, the contrast with summaries, the when-to-use, and scoping behavior. Front-loaded with the action and resource, with no filler or repetition of schema fields.
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 simple read-by-id tool with no output schema, the description gives enough to call it successfully: ids are needed, results are full payloads, and scope behavior is explained. It could be slightly more complete by noting how to obtain/create node ids beyond the posted-results example, but the schema and sibling names fill most 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 coverage is 67%, with node_ids and binding_token already described; the description adds value by explaining that node_ids fetch 'whole' nodes with full payload and by giving session_scope its meaning ('current' vs 'project' scope). It does not add anything about binding_token, but the schema description for that parameter is already sufficient.
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?
Opens with a specific verb+resource ('Fetch whole nodes by id') and immediately differentiates itself from the sibling cpg_query ('by-id counterpart to cpg_query's ranked search'). The 'not a truncated match' contrast reinforces that this is the detail retrieval tool, not the search 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?
Explicitly states when to use it: 'Use when you hold specific ids' and 'need the recorded detail, not a summary', with a concrete example (result ids a crew posted to a thread). It names cpg_query as the alternative for ranked search, so an agent can route between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_fable_traceA
Read-only importer for Claude/Fable JSONL traces or workflow result JSON. Use when analyzing prior Fable sessions or preserving an external multi-agent workflow in CPG. It creates a WORKFLOW, WORKER nodes, trace events, and when present aggregate coverage/surviving/refuted STRUCTURED_RESULT nodes. It never executes commands from the trace. By default it filters JSONL imports to claude-fable rows when present and skips Opus/Sonnet rows.
| Name | Required | Description | Default |
|---|---|---|---|
| max_events | No | ||
| trace_path | Yes | ||
| workflow_name | No | ||
| include_non_fable | 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 clearly states the tool never executes commands from the trace, describes the nodes it creates, and discloses the default JSONL filtering behavior that skips Opus/Sonnet rows. This is strong, safety-relevant transparency for an importer.
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 description is two dense sentences with no filler. It front-loads the core purpose, then adds use cases, side effects, and default behavior, each earning its place.
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 description covers purpose, safety, and default filtering well, but it omits return value behavior and leaves key parameter semantics unexplained. With no output schema, the agent is left unsure what the importer returns on success, which matters for follow-up actions.
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%, so the description must compensate for all four parameters, but it does not. It indirectly clarifies include_non_fable through the default filtering note, but trace_path, workflow_name, and max_events receive no semantic explanation beyond their names and schema defaults.
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 opens with a precise verb and resource: 'Read-only importer for Claude/Fable JSONL traces or workflow result JSON.' It further specifies what the tool creates (WORKFLOW, WORKER nodes, trace events, STRUCTURED_RESULT nodes), making it clearly distinguishable from sibling write/record tools like record_execution or start_workflow.
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 gives explicit usage context: 'Use when analyzing prior Fable sessions or preserving an external multi-agent workflow in CPG.' It does not name alternatives or state when-not-to-use, but the use cases are concrete enough to guide selection among the listed siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_memberC
Issue a revocable, role-scoped campaign membership capability.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | member | |
| agent_id | Yes | ||
| expires_at | No | ||
| campaign_id | Yes | ||
| capabilities | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It conveys that the membership is revocable and role-scoped, but says nothing about required preconditions (e.g., existing campaign, identity binding token), side effects (e.g., creation of a record, notification), or error conditions. The binding_token field is not described in the main description, only in the schema.
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 focused sentence with no filler or repetition. Every word contributes: 'revocable' and 'role-scoped' are meaningful constraints, and the verb is precise.
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 6 parameters, no output schema, and no annotations, yet the description addresses none of the operational details an agent must know to call it correctly. There is no mention of what the response is, what the parameters require, or what side effects result. The one-liner is insufficient for a tool of this complexity.
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 only 17% (only binding_token is described). The phrase 'role-scoped' gives partial meaning to the role parameter, but other parameters — campaign_id, agent_id, expires_at, capabilities, and binding_token — have no semantic explanation in the description. The description does not compensate for the low schema coverage.
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 ('Issue') and resource ('campaign membership capability'), with constraint qualifiers 'revocable' and 'role-scoped' that help differentiate it from revoke_member or join_campaign. However, it does not explicitly name a sibling alternative, and 'capability' is slightly abstract, leaving a small gap.
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 gives no guidance on when to use invite_member versus alternatives such as join_campaign or create_campaign. The qualifier 'revocable' implies a counterpart, but there is no explicit mention of when an agent should choose this tool over others, no prerequisites, and no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
join_campaignC
Authenticate this connection into a campaign using its membership token.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| membership_token | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing effects. 'Authenticate this connection' suggests a state-changing operation but does not explain whether membership persists, what side effects occur, or what failures are possible.
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 description is a single, focused sentence with no filler. The action and the key input mechanism are front-loaded, making it easy to parse.
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 an authentication/joining operation with no annotations and no output schema, the description is too sparse. It omits how membership tokens are obtained, whether binding_token is required, and how this differs from join_session, though the schema partially documents binding_token.
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 only 33%, and the tool description does not compensate. It mentions 'membership token' but does not explain campaign_id or clarify the relationship between binding_token and membership_token, leaving the agent to infer parameter semantics from the schema alone.
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 action ('Authenticate') and a clear resource ('this connection into a campaign'), which is informative. However, it does not distinguish join_campaign from the sibling join_session, leaving the differentiator to context.
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 gives no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like join_session, nor does it state prerequisites such as an existing invitation, campaign membership, or binding_token requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
join_sessionA
Bind this connection to an existing active session and declare the calling agent's id. Does not archive anything. Required before any other radio tool when the agent did not itself call plan_session.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes | Stable id for this agent within the crew. | |
| session_id | Yes | ||
| child_token | No | Spawned children only: the CPG_CHILD_TOKEN handed to the subagent at launch (SPEC §6). When present it supplies the session, identity, worker binding, depth, and spawn grant, and session_id/agent_id above are ignored. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tips | No | |
| bound | No | |
| agent_id | Yes | |
| worker_id | No | |
| project_id | Yes | |
| session_id | Yes | |
| grant_spawn | No | |
| spawn_depth | No | |
| binding_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full burden of behavioral disclosure, and it does add useful content: the bind is to an existing session, the tool does not archive anything, and it is a mandatory precondition for other radio tools. However, it omits equally important idempotency/failure content — what happens if the session id does not exist, whether a second call reinstates or errors, and what identity/authorization guarantees 'declare the calling agent's id' implies. The description earns a mid score by adding some behavioral context but leaves the agent to guess on boundary cases for a stateful binding operation.
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?
Three short, front-loaded sentences each serve a distinct purpose: the core operation, a negative behavioral qualifier, and the usage precondition. The only slight weaknesses are the exactly GNATC — 'Does not archive anything' does meaningful work only if the reader had expected archiving otherwise, and 'radio tool' is internal jargon — so the score stops short of top marks, but almost every word earns its place.
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 output schema removes the need to describe return values, and the description covers the cardinal points: what the tool does and why/needing when to call it. Given the tool's role in a session-lifecycle stateful binding with a spawned-child override path, the description stays incomplete on edge-behavior — repeated joins, what determines an 'active' session, invalid session_id handling, and the child-token role — meaning an agent may need to probe to discover consequences. It suffices for the standard flow but is not fully complete for its complexity.
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 67%, so the structured data already documents agent_id and child_token and the override of session_id/agent_id. The description adds meaning to the otherwise undescribed session_id by invoking 'an existing active session', which distinguishes it from a session that must be created, and ties agent_id to 'the calling agent's id'. It does not mention child_token at all, and the general statement 'declares the calling agent's id' is slightly inaccurate for the child-token path where session_id/agent_id are ignored, so the added semantic value is partial.
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 uses a specific verb+resource combination — 'bind this connection to an existing active session' — and clarifies the scope by saying 'existing active session', immediately differentiating it from session creation tools like plan_session. It also names the calling agent's identity declaration, which is a precise second behavior. This makes the tool recognizably distinct from most of the 61 sibling tools without needing to open their schemas.
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 gives an explicit invocation condition: 'Required before any other radio tool when the agent did not itself call plan_session.' It names the alternative (plan_session) as the source of the session, so the when-to-use and the when-not-to-use are both strongly derivable, and the consequence of not using it (subsequent radio tools would misapplied at this session) is implicitly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spawnedA
Read-only table of spawned workers in this session: provider, spawn_state, depth, parentage, and uptime. No token required.
| Name | Required | Description | Default |
|---|---|---|---|
| workflow_id | No | ||
| spawn_states | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure, and it does state 'read-only' and 'No token required.' However, it does not cover edge cases such as the schema-described binding_token need for reliable identity when logical agents share an MCP connection, and it says nothing about pagination, bounds, or output ordering.
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 short sentences deliver the operation, scope, output fields, and auth note with no redundant text. The important behavioral qualifiers are front-loaded.
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 simple list tool the description covers the returned fields and session scope, but without an output schema or parameter semantics it leaves basic behavior unclear, such as what an empty call returns and whether workflow_id and spawn_states are filters or outputs.
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 coverage is only 33%, so the description must compensate for the undocumented parameters. It does not explain how workflow_id and spawn_states filter the listing, which means an agent cannot correctly infer what these optional inputs do.
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 identifies a specific resource and scope ('spawned workers in this session') and frames the tool as a read-only table rather than repeating the name. Listing the output columns (provider, spawn_state, depth, parentage, uptime) helps distinguish it from write/heartbeat tools.
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 gives clear context for when the tool is appropriate: inspecting the read-only set of spawned workers in the current session. It does not explicitly name alternative tools or exclusion conditions, so it does not earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moderate_tipC
Approve or reject a quarantined campaign tip with evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| tip_id | Yes | ||
| review_state | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| evidence_refs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it only reveals that the tool approves or rejects. It does not disclose side effects, whether the action is reversible, permission requirements, idempotency, or what happens to the tip after moderation.
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 description is a single, front-loaded sentence with no filler or repetition. Every word contributes to identifying the core action and resource.
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 mutating moderation tool with four parameters, no annotations, and no output schema, this description is too sparse. It does not explain how evidence_refs is used, how binding_token factors into identity, what the response indicates, or what state the tip enters after approval or rejection.
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 only 25%, and the description adds little beyond the word 'evidence' to clarify parameters. tip_id and review_state are obvious from names and enum, but evidence_refs and binding_token are left mostly undocumented, so the description does not compensate for the schema 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 verb pair (approve/reject), a clear resource (quarantined campaign tip), and a distinguishing qualifier (with evidence). This makes the tool's purpose understandable and reasonably distinguishable from siblings like drop_tip or tip_useful, though it does not explicitly differentiate itself.
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 implies this is used in a moderation workflow for quarantined tips, but it gives no guidance on when to choose this over alternatives such as drop_tip or resolve_contradiction. It also does not explain prerequisites, such as whether evidence must already be attached or whether a claim/lease on the tip is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_sessionB
Initialise a planning session. Creates a GOAL node, registers the full task graph, resolves dependency indices, creates IMPACT predictions, and converts constraints to confirmed FACT nodes. Call once per session before executing tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | ||
| risks | No | ||
| tasks | Yes | ||
| budget | No | ||
| agent_id | No | Binds the caller's agent identity to this connection, as join_session does. | |
| confidence | No | medium | |
| assumptions | No | ||
| constraints | No | ||
| archive_previous | No | Archive this connection's previous session. Crews pass false. | |
| decision_context | No | ||
| success_criteria | No | ||
| verification_plan | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| tips | No | |
| task_ids | Yes | |
| session_id | Yes | |
| binding_token | No | |
| dependency_order | Yes | |
| impact_predictions | Yes | |
| constraint_fact_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It does reveal the main side effects—creating nodes, registering a graph, resolving dependencies, converting constraints to facts—so an agent knows it is making a persistent planning state. However, it fails to mention the destructive default of archiving previous session (via the archive_previous parameter, default true), and does not mention permissions, reversibility, or rate limits, which are important for a tool of this complexity.
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 sentences, 34 words total, are densely packed with meaningful information. It starts with the primary action, then lists the specific effects, and closes the precise usage guidance. There is no filler, no redundant restatement, and every sentence contributes to the agent's understanding.
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 the tool's high complexity (12 parameters, many nested object types, low schema coverage), this description is insufficient. It does not explain how to structure or populate the budget, risk, assumption, success_criteria, or verification_plan inputs. Even though an output schema exists, input semantics are not fully covered. The agent cannot infer the intended content of the many nested objects from the description 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?
Schema description coverage is only 17% (only agent_id and archive_previous have descriptions in the schema). The tool description explains a few core parameters—goal, tasks (through 'registers the full task graph'), constraints ('converts constraints to FACT nodes'), and dependencies ('resolves dependency indices')—but it leaves many other parameters unexplained: risks, budget, assumptions, decision_context, success_criteria, verification_plan. The description does not compensate adequately for the low schema coverage.
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 starts with a specific verb ('Initialise') and resource ('planning session'), then lists concrete actions it performs: creating a GOAL node, registering the task graph, resolving dependencies, creating impact predictions, and converting constraints to FACT nodes. This clearly conveys what the tool does and differentiates it from a generic 'start' tool, though it does not explicitly compare itself to any sibling (e.g., start_workflow).
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 gives an explicit usage instruction: 'Call once per session before executing tasks.' This tells the agent exactly when to invoke the tool and what to do before it, providing clear context. However, it does not mention any alternatives or exclusions (e.g., 'use replan instead of this for replanning'), so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_messagesA
Read messages in this session newer than a sequence number. Read-only: it does not advance the caller's cursor — call ack_messages for that.
| Name | Required | Description | Default |
|---|---|---|---|
| after_seq | No | Defaults to the caller's acked cursor. | |
| thread_id | No | Restrict to one thread. | |
| max_results | No | Capped at 50, matching cpg_query. | |
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| mentions_only | No | Only messages mentioning the caller or broadcasting to '*'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| has_more | Yes | |
| messages | Yes | |
| next_cursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It explicitly discloses read-only behavior and lack of cursor advancement, which is important. It also mentions binding_token for identity. However, it does not cover error handling, pagination behavior beyond max_results, or any side effects, so the disclosure is partial.
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 description is a single sentence plus a clarifying clause. It is front-loaded with the core purpose and distinguishes the tool without waste. Every sentence adds value.
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 an output schema exists and parameter schema coverage is full, the description is sufficient for an agent to understand the operation. It covers the key behavioral constraint (read-only) and points to the sibling for cursor advancement. It does not elaborate on error conditions or advanced use cases, but these are largely covered by the schema and a read-only operation, so it is mostly complete.
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 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter-specific meaning; it only ties after_seq to the 'newer than a sequence number' concept without extra detail. This meets the baseline but does not exceed it.
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 ('Read'), resource ('messages'), and scope ('in this session newer than a sequence number'). It explicitly contrasts with ack_messages by noting it does not advance the cursor, distinguishing it from that sibling.
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?
It clearly indicates the read-only nature and points to ack_messages for advancing the cursor, giving an explicit alternative. However, it does not state broader usage scenarios (e.g., when to poll vs. subscribe), though the contrast with ack_messages is strong and provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_threadC
Poll a thread from its independent subscription cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | ||
| max_results | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. 'Poll a thread from its independent subscription cursor' is too thin: it never states whether polling consumes messages, advances the cursor, requires an active subscription, or is safe to call repeatedly. The term 'independent subscription cursor' is unexplained.
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 short sentences with no filler; the key concept is stated up front. It sacrifices some helpful detail for brevity, but it is reasonably structured.
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 tool with no annotations and no output schema, the description leaves important operational questions unanswered: what an independent subscription cursor is, how it is obtained, whether polling is destructive, and why binding_token matters. Sibling tools like subscribe_thread/ack_thread further suggest a lifecycle that this description does not situate.
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 only 33%; only binding_token is described. The description adds almost nothing about thread_id (beyond the name) or max_results. It does not clarify that thread_id refers to the polled thread or what max_results limits, so the low coverage is not compensated.
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 the specific operation ('Poll') and a distinct resource ('a thread from its independent subscription cursor'). This distinguishes it from generic message polling, though the exact meaning of 'independent subscription cursor' is not explained. It is still more precise than a vague restatement of the tool name.
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 is given about when to use poll_thread versus siblings like poll_messages or subscribe_thread. The phrase 'independent subscription cursor' hints at a use case but never states prerequisites, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_progressB
Atomically renew a task lease, heartbeat the worker, and post progress.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| task_id | Yes | ||
| thread_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| lease_seconds | No | ||
| idempotency_key | Yes | ||
| lease_generation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose meaningful behavior: the operation is atomic and combines lease renewal, heartbeat, and progress posting. But it omits failure semantics, lease-generation conflict handling, idempotency behavior, and what happens to the worker or task on invalid input, leaving notable gaps.
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 sentence with no filler. 'Atomically' is front-loaded and immediately signals the most important behavioral constraint, and every phrase adds distinct information about the operation.
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?
This is a moderately complex state-changing tool with 7 parameters, 5 required, no annotations, and no output schema. The description does not explain return behavior, idempotency semantics, the role of binding_token, or how lease_generation failures are handled, so the agent cannot fully predict the tool's behavior.
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 only 14%, so the description must compensate for documenting parameters. It only loosely maps concepts like 'lease' and 'progress' without explaining idempotency_key, binding_token, lease_generation, lease_seconds, or body format. An agent has little help beyond field names and constraints.
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 specific actions ('renew a task lease, heartbeat the worker, and post progress') and adds the key trait 'atomically', so an agent can tell this is a combined operation rather than a plain progress update. It does not explicitly contrast sibling tools like renew_lease or worker_heartbeat, but the composite scope is clear enough.
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 word 'atomically' implies the tool should be used when lease renewal, heartbeat, and progress posting need to happen together. However, the description never names alternatives or states when this should be preferred over sibling tools like renew_lease, worker_heartbeat, or update_task, so usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protocol_healthC
Report coordination health without returning restricted message bodies.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does state one behavior: it does not return restricted message bodies, implying it filters sensitive content. However, it does not disclose other behaviors such as whether it is read-only, whether it requires any specific permissions, what it actually returns (e.g., a summary, a list of issues), or any side effects. This is insufficient for a reporting tool.
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 description is extremely concise—one short phrase. It is front-loaded in the sense that the main action is stated first, but it is under-specified. It earns a middle score because it has no fluff, but the brevity comes at the cost of critical 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?
Given the tool has 2 parameters, no output schema, and no annotations, the description must be self-sufficient. It is not: it omits what the tool returns, how the parameters influence the report, and when to use it. An agent would have to make significant guesses about how 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 only 50% (only binding_token has a description in the schema). The tool description does not mention either parameter at all. It does not explain what campaign_id is used for or how binding_token relates to the health report. Since coverage is low and the description compensates nothing, this is a major 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 says 'Report coordination health' which is a verb+resource but 'coordination health' is not a well-defined concept. It doesn't specify what aspects of health are reported (e.g., worker status, task progress, connection state). It does add a clarifying contrast ('without returning restricted message bodies') which helps but the core purpose remains vague. It is not a tautology, but it lacks specificity to distinguish from potential sibling tools.
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 guidance on when to use this tool versus alternatives. It does not mention any prerequisites, conditions, or exclusions. The description is purely a statement of what it does without any situational context. The agent is left to guess when 'reporting coordination health' is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_signalC
Create or compare-and-swap a typed, versioned coordination signal.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | No | ||
| audience | No | ||
| visibility | No | campaign | |
| campaign_id | Yes | ||
| ttl_seconds | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| evidence_refs | No | ||
| expected_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the behavioral burden. It does disclose CAS semantics and versioning, which are genuine behavioral traits beyond the name. However, it omits side effects, conflict/failure behavior, identity requirements (binding_token), and whether the signal is persisted or broadcast.
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 efficient and front-loads the action. It is concise and free of filler. It loses a point because it is so terse that it does not structure any usage or parameter context, but as a conciseness measure it is strong.
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 9-parameter mutation tool with no annotations, no output schema, and very low schema coverage, a one-sentence description is severely incomplete. It provides no return format, error semantics, parameter explanations, or guidance on when CAS applies. An agent cannot reliably invoke this tool correctly from the given definition.
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?
With only 11% schema description coverage and 9 parameters, the description needed to compensate but only hints at 'typed, versioned' (likely expected_version/value). It does not explain campaign_id, name, value, audience, visibility, ttl_seconds, evidence_refs, or binding_token, leaving the agent without semantic grounding for most 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?
The description names a concrete verb and resource: 'Create or compare-and-swap a typed, versioned coordination signal.' This clearly separates it from siblings like wait_for_signal (publish vs. wait) and indicates a write operation. It loses a point because 'compare-and-swap' is left unexplained and no concrete use case is given.
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 about when to use publish_signal versus wait_for_signal, create_barrier, or other coordination tools. The description implies a publish operation but provides no exclusions, prerequisites, or alternatives, so an agent must infer usage entirely from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_beliefA
Record an uncertain BELIEF (inference, hypothesis, assumption). Must cite supporting FACT or OBSERVATION ids. When belief_kind='assumption', also creates a linked ASSUMPTION control-plane node.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | ||
| content | Yes | ||
| risk_id | No | ||
| confidence | Yes | ||
| belief_kind | No | belief | |
| supporting_ids | No | FACT/OBSERVATION ids backing this belief. Required for belief_kind='belief' and 'hypothesis' (assumptions may omit it). | |
| expiry_condition | No | ||
| verification_target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses a key side effect: when belief_kind='assumption', it also creates a linked ASSUMPTION control-plane node. It also states the requirement to cite supporting FACT/OBSERVATION ids. It doesn't mention whether the operation is reversible or what the return value is, but the disclosed side effect is significant and useful.
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 sentences with no filler. The first sentence states the purpose and the key requirement; the second adds the conditional side effect. Every word earns its place.
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 tool with 8 parameters and no output schema, the description covers the essential behavioral context: what counts as a belief, the evidence requirement, and the assumption side effect. It doesn't explain the remaining parameters (domain, risk_id, expiry_condition, verification_target) or return behavior, but the core decision an agent needs—when to call this vs record_fact and what to provide—is present.
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 only 13%, so the description must compensate. It adds meaning by explaining the purpose of supporting_ids (backing evidence) and the special behavior of belief_kind='assumption'. It also clarifies that supporting_ids is required for belief and hypothesis but may be omitted for assumptions, which is not fully clear from the schema alone. It doesn't explain domain, risk_id, expiry_condition, or verification_target, but the core semantics are covered.
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 clearly states the tool records an uncertain BELIEF (inference, hypothesis, assumption) and distinguishes it from sibling record_fact by emphasizing uncertainty and the need to cite supporting FACT/OBSERVATION ids. It also names the specific belief_kind values and the special behavior for 'assumption'.
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 gives clear context: use this for uncertain beliefs, must cite supporting FACT/OBSERVATION ids, and notes the special case for assumption. It doesn't explicitly say 'use record_fact for certain facts' or list exclusions, but the contrast with record_fact is implicit and the required supporting_ids guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_executionB
Episodic log of a significant tool call. Creates an EXECUTION node + auto-observation, processes actual_impacts (lazy ARTIFACT creation + staleness), and stores objective_signals for reflect().
| Name | Required | Description | Default |
|---|---|---|---|
| success | Yes | ||
| task_id | Yes | ||
| tool_name | Yes | CLI-aligned: bash, read_file, write_file, grep, git, etc. | |
| unexpected | No | ||
| budget_spent | No | ||
| input_summary | Yes | ||
| actual_impacts | No | ||
| delegated_role | No | ||
| return_summary | No | ||
| delegated_model | No | ||
| outcome_summary | Yes | ||
| objective_signals | No | Optional environment-sourced signals. Recognised keys: tests_delta (int), lint_delta (int, negative = improvement), files_touched (int), predicted_files (int), impact_fidelity (float 0-1), retry_count (int), rollback_count (int). Unknown keys are ignored. | |
| parent_execution_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It discloses several effects: creating the EXECUTION node, auto-observation, lazy ARTIFACT creation, staleness processing, and storing objective_signals for reflect(). It does not mention side effects, persistence guarantees, failure behavior, or whether the operation is idempotent, so coverage is partial.
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 description is a single dense sentence with no filler. It front-loads the core purpose and packs related behaviors efficiently, though the parenthetical jargon may reduce readability for an unfamiliar agent.
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 the high parameter count, nested objects, absence of annotations, and no output schema, the description is too high-level to fully support correct invocation. It omits practical details about required field semantics, relationships among parameters, return behavior, and expectations for summaries or signals.
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 only 15%, so the description must compensate for the 13 parameters. It adds meaning for actual_impacts and objective_signals, but does not clarify required fields like task_id, input_summary, outcome_summary, success, or the delegated_* fields. This is a significant gap for a complex schema.
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 uses a specific verb and resource: it 'Creates an EXECUTION node + auto-observation' and logs a 'significant tool call.' This differentiates it from sibling record tools like record_fact and record_belief, though it does not explicitly name 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?
The phrase 'Episodic log of a significant tool call' gives an implied usage context: use this when recording a notable execution event. However, it provides no explicit when-to-use vs alternatives or exclusions, leaving this to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_factA
Record a grounded FACT. Must cite source_observation_id (from a prior cpg_think promote) or a raw source string. Facts start as 'provisional' and are upgraded by evidence. Use supersedes_id to chain replacements.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| source | No | Raw source when no OBSERVATION node exists. | |
| content | Yes | ||
| symbol_id | No | ||
| confidence | No | ||
| artifact_id | No | ||
| supersedes_id | No | FACT node id this replaces. | |
| source_observation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does useful work: it signals a write operation and explains state-transition behavior—facts start as provisional, are upgraded by evidence, and supersedes_id chains replacements. It does not mention permissions or side effects beyond creation, but the core lifecycle is clearly disclosed.
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?
Three tight sentences put the primary action first and then add only high-value context: the grounding requirement, the provisional lifecycle, and the supersede behavior. There is no filler or restatement of schema fields.
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 write tool with 8 parameters and no annotations or output schema, the description covers the critical source and replacement logic but omits the meaning of domain, confidence, symbol_id, and artifact_id, and says nothing about return values. It is sufficient for the common path but not fully complete.
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 coverage is only 25%, and the description adds meaning for source_observation_id, source, and supersedes_id by explaining their roles. However, required parameters content and domain, plus confidence, symbol_id, and artifact_id, are left to inference, so the description only partially compensates for the low schema coverage.
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 phrase 'Record a grounded FACT' names a specific verb and object, and the capitalized FACT plus 'grounded' distinguishes it from sibling record_belief. The requirement to cite a source observation or raw source string further pins down what this tool does and what it does not.
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?
It gives a clear precondition: source_observation_id must come from a prior cpg_think promote, or a raw source string must be supplied. It also explains the facts lifecycle, but it does not explicitly name record_belief or state when not to record a fact, so it stops short of a full when/when-not contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_structured_resultB
Store schema-bound worker output in a WORKFLOW. Use for findings, verifier verdicts, coverage notes, and final reports. For a verifier verdict, set result_kind='verdict', status to confirmed/plausible/refuted, and verifies_result_id to the finding/result being checked. The response returns an aggregate count by result kind and status.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| title | No | ||
| status | No | pending | |
| metadata | No | ||
| worker_id | No | ||
| confidence | No | ||
| result_kind | Yes | ||
| schema_name | No | ||
| workflow_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| result_schema | No | JSON Schema or schema descriptor used to validate data. | |
| source_trace_path | No | ||
| verifies_result_id | No | ||
| source_execution_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses only that storing occurs and that the response is an aggregate count by result kind and status. With no annotations, the description carries the full burden, but it does not state validation behavior, whether data is validated against result_schema, idempotency or replacement semantics, or workflow prerequisites.
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?
Three sentences, front-loaded with the core purpose, followed by a valuable verdict usage pattern and the response shape. No wasted words, and each sentence earns its place.
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 14 parameters, nested data, low schema coverage, no annotations, and no output schema, the description leaves important call semantics unspecified. It covers the verdict path well but not the general data/workflow/worker field semantics, so an agent cannot confidently construct a fully correct call from the 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?
Schema description coverage is only 14%, so the description must compensate for the undocumented parameters. It meaningfully explains result_kind, status, and verifies_result_id for the verdict case, but leaves data, workflow_id, confidence, metadata, source_trace_path, and source_execution_id semantically 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 action: store schema-bound worker output in a workflow, with explicit use cases (findings, verifier verdicts, coverage notes, final reports). The verdict-specific guidance further clarifies scope. It does not explicitly name sibling tools such as record_fact or record_belief, so differentiation is implicit rather than explicit.
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?
Gives explicit use contexts ('Use for findings, verifier verdicts, coverage notes, and final reports') and a concrete verdict recipe with result_kind='verdict', specific statuses, and verifies_result_id. It omits exclusions or named alternatives, but the use-case list plus result_kind enum is enough to guide basic selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reflectC
Core pedagogical loop. Provide deviation_type and optionally objective_signals; server computes ReflectiveSignals and a dual-signal SCORE. Closes the loop on patterns, beliefs, and v1.4 control-plane nodes.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| pattern_type | No | ||
| actual_outcome | Yes | ||
| deviation_type | Yes | ||
| extract_pattern | No | ||
| confidence_delta | No | ||
| expected_outcome | Yes | ||
| next_time_recipe | No | ||
| objective_signals | No | Optional environment-sourced signals. Recognised keys: tests_delta (int), lint_delta (int, negative = improvement), files_touched (int), predicted_files (int), impact_fidelity (float 0-1), retry_count (int), rollback_count (int). Unknown keys are ignored. | |
| applied_pattern_ids | No | ||
| pattern_description | No | ||
| verification_results | No | Optional closeout checks. Each item may reference an existing VERIFICATION node with verification_id, or may be an inline summary with status plus summary/command/result/evidence. Inline summaries are accepted and stored as non-blocking VERIFICATION nodes. | |
| decisions_reconsidered | No | ||
| assumptions_invalidated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the only signal about effects, but it only says the server 'computes' ReflectiveSignals and a 'dual-signal SCORE' and 'closes the loop.' It never states whether this mutates state, what side effects occur, or what the response 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?
The text is brief and avoids repetition, but it relies heavily on undefined jargon such as 'dual-signal SCORE' and 'v1.4 control-plane nodes'. Structure is reasonable for a description of this length though not maximally clear.
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 tool with 14 parameters, no annotations and no output schema, the description omits the required fields (task_id, expected_outcome, actual_outcome), does not specify side effects, and leaves key jargon unexplained. An agent cannot safely call this tool based on the description 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?
The description highlights deviation_type and objective_signals, but the schema has many fields, including required task_id, expected_outcome, and actual_outcome, plus optional fields like extract_pattern and applied_pattern_ids. With only two of ~14 parameters mentioned and no compensation for undefined fields, an agent lacks guidance for constructing a valid request.
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 identifies the resource ('pedagogical loop', patterns/beliefs/control-plane nodes) and the core action (compute ReflectiveSignals and a dual-signal SCORE), but uses domain jargon without concrete verbs like 'record' or 'update.' It does not clearly distinguish this from sibling tools such as record_structured_result or record_belief.
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 says to provide deviation_type and optionally objective_signals, but gives no guidance on when to use this tool versus alternatives, no prerequisites, and no expected preconditions. There is no explicit when/when-not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_watchC
Record which job (worker id, label, or done-file) this agent is waiting on.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| done_file | No | ||
| job_label | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| job_worker_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It only says 'Record' and gives no side effects, overwrite semantics, identity requirements, or relation to other watch tools; binding_token's role appears only in the schema, not the description.
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, easy to parse. It is concise even though it sacrifices detail.
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-param tool with no annotations and no output schema, the description is too thin: no target-combination rules, no mention of binding_token, and no indication of postconditions or how to close/replace a watch.
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?
Description names worker id, label, and done-file, adding meaning to those three params, but omits binding_token and note. With schema description coverage at only 20%, note remains entirely unexplained, so the description fails to compensate for the 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?
Description uses a specific verb ('Record') and identifies the resource ('which job this agent is waiting on') with the three target forms. It is distinguishable from close_watch and wait_for_signal, though it does not explicitly contrast 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?
No guidance on when to register a watch versus alternatives, when to call close_watch, or what prerequisites exist. The schema's 'At least one target is required' is the only constraint and appears outside the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_workerB
Register one delegated worker/agent inside a WORKFLOW. Use one worker per finder/verifier/synthesizer/executor. Include the model, agent_id, prompt, dimension, and role whenever known so later agents can audit who did what.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | executor | |
| label | Yes | ||
| model | No | ||
| prompt | No | ||
| status | No | running | |
| agent_id | No | ||
| metadata | No | ||
| dimension | No | The lane/domain this worker owns, such as tree-drift or wiki-consistency. | |
| workflow_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| coverage_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool registers a worker, but does not disclose whether it mutates state, whether it is idempotent, what happens if a worker already exists, or any side effects like creating a session or sending messages. This is a significant gap for a registration tool.
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 description is two sentences long and front-loads the core purpose. The first sentence states the verb and resource clearly. All sentences are informative without redundancy. Slightly could be improved by structuring the list of fields more succinctly, but it's efficient.
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 tool with 11 parameters, 2 required, no output schema, and 18% schema coverage, the description is insufficiently complete. It identifies the core purpose and important fields but omits behavioral implicationsholistically, such as how registration interacts with the workflow lifecycle, what the workflow_id refers to, or what the return value is. It's adequate for a basic understanding but leaves gaps for correct invocation.
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 only 18%, so the description must compensate for the many undocumented parameters. It does mention key fields (model, agent_id, prompt, dimension, role) and the purpose of binding_token indirectly via the schema description, but it doesn't explain important parameters like coverage_notes, metadata, or status. The description adds some context but not enough to fully bridge the 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 clearly states the tool registers a delegated worker/agent inside a workflow, with specific roles (finder, verifier, synthesizer, executor) and mentions including model, agent_id, prompt, dimension, and role. This distinguishes it from sibling tools like spawn_workers or complete_worker, though it doesn't explicitly name 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?
The description provides clear guidance to use one worker per finder/verifier/synthesizer/executor, and to include audit information. It doesn't explicitly state when not to use this tool or mention alternatives, but the context of 'delegated worker' within a workflow is clear enough to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_resourceB
Release the caller from a generation-checked resource lease.
| Name | Required | Description | Default |
|---|---|---|---|
| lease_id | Yes | ||
| generation | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose that the operation is generation-checked and scoped to the caller, which is meaningful. However, it doesn't mention what happens on stale generation, idempotency, or side effects of releasing.
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 conveys the core action without filler or tautology.
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 mutates resource state with no annotations and no output schema. Missing information includes failure modes (stale generation), idempotency, whether the caller must be the lease holder, and what a successful release returns.
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 coverage is only 33%: lease_id and generation have titles but no descriptions. The description adds 'generation-checked' which hints at generation's role, but it doesn't explain where lease_id/generation come from, how they relate, or what the binding_token does beyond the schema text.
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 uses a specific verb ('Release') and clearly identifies the object ('resource lease'), and 'generation-checked' adds useful distinguishing nuance. It doesn't explicitly contrast with sibling tools like renew_lease, but the action is unambiguous.
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 versus alternatives (e.g., release_task, renew_lease, cancel/abandon scenarios). The phrase 'release the caller' implies self-release, but no conditions, prerequisites, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_taskA
Give up the caller's lease on a TASK. lease_generation is required so a reaped-and-reassigned task cannot be released out from under its new owner.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Recorded in the LEASE_RELEASED event. | |
| status | No | TASK status to set on release. 'planned' is a voluntary hand-back. | planned |
| task_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| lease_generation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It does disclose the critical race-condition guard (lease_generation protects against releasing a reaped-and-reassigned task), but doesn't explain side effects, idempotency, failure behavior, or what happens to the task after release.
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 short sentences, front-loaded with the core action and then the single most important caveat. No filler or repeated schema content.
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 lease-release operation, the description plus schema covers the required identifiers and the safety guard, and status/note semantics are in the schema. It doesn't describe response/return value, but that appears acceptable given the tool's simplicity.
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 covers note, status, and binding_token well; the description adds crucial semantic context for lease_generation, which the schema leaves as a bare integer, by explaining its safety role.
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 ('Give up') plus the target ('a TASK') and the lease relationship. It clearly distinguishes the action from general task updates, though it doesn't explicitly name sibling alternatives.
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?
Clear context: the caller is releasing its own lease, and the lease_generation requirement prevents releasing a task that was reassigned. It doesn't explicitly steer the agent to alternatives like renew_lease or update_task, but the operation's scope is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renew_leaseB
Extend the caller's lease on a TASK it already owns. Fails if the lease was reaped or reassigned.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| lease_seconds | No | Lease length; clamped to [60, 7200]. | |
| lease_generation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: the operation fails if the lease was reaped or reassigned, which is valuable. However, it does not disclose whether the extension is idempotent, whether it resets the lease timer from the current time, or what happens to the old lease generation. The failure condition is useful but incomplete for a mutation tool with zero 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The core action is front-loaded, and the failure condition is a useful addition. It is appropriately sized for 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?
The tool has 4 parameters, 2 required, no output schema, and no annotations. The description explains the basic operation and one failure mode, but it does not cover the concurrency semantics of lease_generation, the clamping behavior of lease_seconds (though the schema covers that), or what the response contains. For a lease-extension tool, the missing concurrency context is a notable gap, but the description is not severely 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?
Schema description coverage is 50%, so the schema documents binding_token and lease_seconds but not task_id or lease_generation. The description adds meaning by explaining that the lease is on a TASK and that lease_generation relates to reaping/reassignment, but it does not explicitly explain that lease_generation is the current generation required for optimistic concurrency, nor does it clarify the role of task_id beyond identifying the task. It partially compensates for the schema gap but leaves the two undocumented required parameters under-explained.
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 ('Extend') and resource ('the caller's lease on a TASK'), which clearly identifies the operation. It does not explicitly differentiate from sibling tools like renew_resource or worker_heartbeat, but the resource and mechanism are distinct enough that the core purpose 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?
The description implies usage context: it is for extending a lease the caller already owns, and it names failure conditions ('Fails if the lease was reaped or reassigned'). However, it does not explicitly state when to prefer this over alternatives like renew_resource or worker_heartbeat, nor does it mention prerequisites like joining a session or claiming the task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renew_resourceC
Renew a resource lease held by the caller.
| Name | Required | Description | Default |
|---|---|---|---|
| lease_id | Yes | ||
| generation | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| lease_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the lease must be held by the caller, but gives no information about idempotency, failure modes, side effects, or authorization requirements. The description is too sparse to help an agent understand the operational behavior of the tool.
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 description is a single sentence with no filler, achieving maximum conciseness. It is appropriately sized for a simple operation and the key action is front-loaded. However, the extreme brevity results in under-specification, which slightly detracts from structural quality.
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 no annotations, no output schema, and only 25% parameter schema coverage, the description is grossly incomplete. It does not explain the required parameters, preconditions, success criteria, or any side effects. An agent cannot reliably invoke this tool correctly based on the provided information 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?
The schema description coverage is only 25% (only 'binding_token' has a description). The tool description does not mention any parameter, nor does it clarify the meaning or relationships between 'lease_id', 'generation', 'lease_seconds', and 'binding_token'. It fails to compensate for the low schema coverage, leaving the agent to guess at parameter semantics.
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 clearly states the action (renew) and the target (a resource lease held by the caller). It includes a relevant constraint (held by the caller) that adds specificity. However, it does not distinguish itself from the sibling tool 'renew_lease', which likely serves a similar purpose, so it lacks clear differentiation.
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 is provided on when to use this tool versus alternatives. The description does not mention prerequisites (e.g., having claimed the resource first) or the relationship to 'claim_resource' and 'release_resource' tools. The agent is left to infer usage context 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.
replanB
Formal replanning event. Cancels specified tasks (preserved in history), optionally adds new tasks at an incremented plan_version. Does not delete any nodes or edges.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | ||
| new_tasks | No | ||
| drop_task_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it delivers meaningful behavioral context: cancelled tasks are preserved in history, plan_version is incremented, and no nodes or edges are deleted. It does not cover reversibility or return behavior, but it clearly establishes the destructive scope.
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 description is two tight sentences, front-loaded with the tool's purpose, and every sentence conveys distinct information. No filler or redundancy.
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 no annotations and no output schema, the description is too thin to fully support correct invocation: it omits the required reason semantics, task dependency fields, and any guidance on when a formal replanning event is appropriate. The behavioral safety notes are helpful but do not make the tool self-contained.
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%, so the description needed to compensate, but it never names reason, drop_task_ids, or new_tasks. It gives some conceptual meaning via 'cancels specified tasks' and 'optionally adds new tasks', but leaves the required reason parameter 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 clearly defines the operation: a formal replanning event that cancels specified tasks and optionally adds new tasks at an incremented plan_version. It is specific and distinct from generic task editing, though it does not explicitly name or differentiate any sibling 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?
No guidance is given about when to invoke replan versus alternatives such as update_task or plan_session. The phrase 'formal replanning event' implies a use case, but there is no explicit when/when-not guidance or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_contradictionB
Resolve a queued FACT conflict from the contradictions table. Applies one of: a_supersedes_b, b_supersedes_a, both_provisional, dismissed.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| resolution | Yes | ||
| contradiction_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says the tool 'applies' a resolution. It does not disclose whether the conflict is removed, updated, marked as resolved, requires permissions, or 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?
The description is only two sentences and front-loads the main purpose. The second sentence mostly repeats values already visible in the schema enum, so it adds limited new information, but overall the structure remains tight and scannable.
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 mutation tool with no annotations and no output schema, the description is incomplete. It does not explain what 'a' and 'b' refer to, what happens after resolution, or what the return value indicates, leaving an agent to guess at the behavior and effects.
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%, so the description must compensate, but it only restates the enum values without defining what a_supersedes_b, b_supersedes_a, both_provisional, or dismissed mean. It adds minimal context for contradiction_id by calling it a 'queued FACT conflict from the contradictions table' but leaves notes and the meaning of the resolution options 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?
States a specific verb ('resolve') and a specific resource ('queued FACT conflict from the contradictions table'). The description makes the tool's domain and scope clear, distinguishing it from fact-recording and other workflow tools.
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 intended context is implied by 'queued FACT conflict' and the enumerated resolution types, but there is no explicit statement of when to use this tool versus any alternative. No competing resolution tool is mentioned, and no exclusion conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_messageB
Mark a question or request resolved by a message in the same thread.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| resolution_message_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description conveys the primary behavioral effect—marking something as resolved—and the same-thread constraint. However, with no annotations, it carries the full burden and does not disclose side effects, permission requirements, idempotency, or validation behavior.
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?
One focused sentence with no filler. The action, target, and constraint are all front-loaded, and every word earns its place.
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 no annotations, no output schema, and low schema description coverage, the description remains too sparse to fully support confident invocation. It omits usage direction, side effects, and specific parameter interplay, leaving meaningful gaps for the agent.
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 description helps map message_id to the 'question/request' and resolution_message_id to the 'message in the same thread,' adding meaning beyond the titles. Binding_token already has a supportive schema description, so overall parameter meaning is adequate but not fully explicit.
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 ('mark resolved') applied to a specific resource ('a question or request') and adds the same-thread constraint. It clearly distinguishes this from siblings like resolve_contradiction and close_thread.
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 guidance on when to use this tool versus alternatives such as resolve_contradiction, close_thread, or update_task. The same-thread phrase hints at a prerequisite, but the agent is left to infer the full decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reveal_resultC
Reveal data matching a prior commitment and record the result.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| nonce | Yes | ||
| title | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| commitment_id | Yes |
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 disclosure burden. It reveals that the action records a result, implying a side effect, but does not mention irreversibility, one-time use, nonce validation, or what happens if the data does not match the commitment.
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 description is a single compact sentence with no redundant content and places the primary action first. It is efficient, though it could be even stronger with structured guidance on the commit-reveal flow.
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 tool with 5 parameters, no annotations, and no output schema, the description is under-specified. It omits return behavior, failure modes, and prerequisite commitment state, so an agent cannot fully predict invocation consequences.
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 only 20%, and the description adds no parameter-specific detail beyond implying that 'data' must match the commitment. The nonce and commitment_id semantics are left entirely to the schema, so the description does not compensate for the low coverage.
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 ('Reveal') and resource ('data matching a prior commitment') plus a secondary action ('record the result'). It clearly differentiates from siblings like commit_result by referring to a prior commitment, though it does not name an alternative explicitly.
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 phrase 'prior commitment' implies the tool should be used after a commitment has been made, which gives a clear contextual cue. However, it does not state when to avoid this tool or mention alternatives such as commit_result, leaving usage boundaries implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_memberC
Revoke a campaign membership capability.
| Name | Required | Description | Default |
|---|---|---|---|
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| membership_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without explaining side effects, required permissions, reversibility, or what happens to the member's existing tokens or capabilities. This is a mutating operation but lacks the transparency needed for safe invocation.
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 one-sentence description is concise and front-loaded with the verb and resource, but it is so minimal that it borders on under-specification rather than disciplined brevity. It earns its place but leaves the reader wanting structural detail that close to the definition could have provided.
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 one unexplained required parameter and no output schema, yet the description omits critical context such as return values, side effects, required permissions, or how a membership is identified. In its current form it is not complete enough for an agent to invoke confidently without external knowledge.
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 only 50%; the required membership_id has no description in the schema, and the tool description does not meaningfully clarify it beyond restating that it relates to a campaign membership. The binding_token is already described in the schema, so the description adds no additional parameter-level value.
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 uses a specific verb ('Revoke') and resource ('campaign membership capability'), and it clearly differentiates itself from sibling tools like invite_member and join_campaign by indicating the inverse/removal operation. It could be more concrete about whether the member is fully removed or only loses a capability, but the intent is broadly discoverable.
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 gives no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or the relationship between revoke_member and invitation/join flows, leaving the agent to infer usage entirely from the tool name and one-line description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageA
Post a MESSAGE to a THREAD as the calling agent. Body is capped at 16 KiB; larger findings go through record_structured_result with the message carrying a refs pointer. kind='system' is server-only.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Message text, <= 16 KiB. | |
| kind | No | status | |
| refs | No | Node ids this message cites. | |
| mentions | No | Agent ids; '*' broadcasts. | |
| priority | No | normal | |
| reply_to | No | MESSAGE node id this replies to. | |
| authority | No | advisory | |
| thread_id | Yes | ||
| visibility | No | thread | |
| deadline_at | No | ||
| trust_class | No | untrusted | |
| requires_ack | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| embargo_until | No | ||
| supersedes_id | No | ||
| sharing_policy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description does state the main side effect (a message is posted to a thread as the calling agent) and two hard constraints (size cap, server-only kind). However, it does not mention whether the send is durable, how subscribers/visibility are affected, error conditions, permission requirements, or whether sending is idempotent.
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 description is compact: two sentences that state the core action immediately and surface the most critical constraints. There is no filler or repetition.
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 16 parameters, no annotations, and no output schema or error semantics, a two-sentence description is not sufficient for an agent to confidently use all capabilities. The cap and kind restriction are useful, but key behaviors around enums like authority, trust_class, and visibility remain unexplained.
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?
Given only ~2 of 16 parameters are meaningfully documented by the schema, the description adds semantic value only for body size routing and kind='system'. Fields like authority, trust_class, visibility, deadline_at, requires_ack, and refs are left largely unexplained in the description, so the agent must guess at their effect.
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 precise action ('Post a MESSAGE to a THREAD'), identifies the agent as the caller, and clearly distinguishes this from sibling tools like create_thread or record_structured_result. The intent is immediately unambiguous.
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 gives an explicit routing rule: messages over 16 KiB should go to record_structured_result with a refs pointer, and kind='system' is server-only. It does not contrast with other sibling tools or state when to prefer one kind/authority over another, but the key alternative is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spawn_workersA
Fan out to configured local providers. Creates WORKER nodes in spawn_state='requested' and returns immediately — a background supervisor performs the calls and records each answer as a STRUCTURED_RESULT. Requires exactly one of spawn_token or child_token. Caps and unknown providers come back in 'refused', never as an error.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Only false is supported; true is an error. | |
| workers | Yes | ||
| child_token | No | Server-issued worker token; only valid if minted with grant_spawn. | |
| spawn_token | No | Root capability token. Never logged or echoed. | |
| workflow_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden. It discloses the asynchronous execution model, side effect of creating WORKER nodes, and the fact that caps/unknown providers surface as 'refused' rather than errors. This is strong, though it does not cover every edge case such as idempotency or retry behavior.
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?
Three tight sentences front-load the core action and then layer critical constraints. Every sentence contributes essential information: what happens, how it happens asynchronously, and what token/error behaviors to expect.
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 no output schema and no annotations, the description plus the detailed input schema gives an agent enough to invoke the tool correctly. It explains the async result routing and token requirements, though it remains silent on the immediate return shape and how to later consume the recorded STRUCTURED_RESULTs.
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 description adds meaning around token exclusivity, which is useful because the schema does not mark the tokens as mutually exclusive. However, it does not explain the workers array structure, workflow_id role, or binding_token semantics beyond what the schema already provides, and schema coverage is moderate at 67%.
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 opens with a specific verb and target ('Fan out to configured local providers') and further clarifies it creates WORKER nodes in spawn_state='requested'. This clearly distinguishes it from sibling tools like register_worker or list_spawned by focusing on the asynchronous fan-out action.
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?
It gives clear context: this tool spawns workers asynchronously, and it states the token prerequisite ('Requires exactly one of spawn_token or child_token'). It does not explicitly name alternative tools or when-not-to-use conditions, but the behavior is specific enough that an agent can infer when to select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stale_reportA
List stale running workers, leases whose claimant is gone, a gpu.lock that disagrees with the lease, and watchers of finished jobs. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | session | |
| gpu_lock_dir | No | ||
| gpu_task_ids | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| worker_stale_s | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does state 'Read-only,' which is a useful safety signal, and it reveals that gpu.lock state is compared with lease claimants. However, it omits details like server-host file reads, permission requirements, output shape, and failure behavior; the schema's top-level note supplies some of this 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?
The description is one compact sentence plus 'Read-only,' with no filler. The four report categories are front-loaded, and every phrase contributes to the agent's understanding.
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 read-only diagnostic with no required parameters, the description plus the schema's defaults and top-level explanation are mostly sufficient for a zero-argument call. It is not fully complete because there is no output schema and no guidance on how scope or staleness thresholds change the result, but the combination is adequate for this tool's complexity.
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 only 20%, and the tool description does not compensate by explaining scope, worker_stale_s, gpu_lock_dir, gpu_task_ids, or binding_token. The input schema carries the real parameter meaning, especially in its top-level description, so the tool description itself adds little value beyond hinting that gpu.lock and leases are involved.
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 opens with the verb 'List' and names four concrete output categories: stale running workers, leases whose claimant is gone, a mismatched gpu.lock, and watchers of finished jobs. It also says 'Read-only,' which separates it from mutation-oriented sibling tools. The purpose is unmistakable and not a tautology of the tool name.
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 explains what the report contains but gives no guidance on when to choose stale_report over alternatives such as protocol_health or the worker/watch listing tools. There are no conditions, exclusions, or explicit use cases, so the agent must infer when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_workflowA
Create a first-class fan-out/fan-in WORKFLOW run. Use this when a task will delegate to multiple agents, run phases such as find→verify→synthesize, or needs schema-bound aggregation. After calling it, register each worker with register_worker and store each worker output or verifier verdict with record_structured_result. Do not use for ordinary single-thread task lists; use plan_session/update_task for those.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| phases | No | ||
| metadata | No | ||
| task_ids | No | Optional TASK ids this workflow serves. | |
| description | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
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 disclose the creating side effect and the follow-up protocol (register workers, store results), which is meaningful. However, it omits other behavioral traits an agent might need: what the call returns (a workflow id to pass to register_worker?), whether creation is idempotent, what happens on name collision, and whether it runs asynchronously.
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?
Four sentences, each with a distinct job: state the action, give the trigger conditions, give the follow-up steps, and name the alternative. No filler or repetition; the most decision-relevant information (what this tool is for) is front-loaded.
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 description covers the core protocol and routes to siblings, but given 6 parameters, no output schema, and a required `name`, important context is missing: what the workflow run returns, whether the return value must be threaded into register_worker, and what `metadata`/`description` are used for. An agent can start using it, but may guess at linkage details.
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 only 33% (task_ids and binding_token documented; name, phases, metadata, description undocumented). The description adds at most an example for `phases` ('find→verify→synthesize') and the notion of schema-bound aggregation, but does not explain `metadata`, `name` conventions, or how the required `name` is used. Thus it fails to compensate for the sparse schema.
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 uses a specific verb ('Create') and a precise resource ('first-class fan-out/fan-in WORKFLOW run'), and immediately clarifies the scope: multi-agent delegation, phased plans, and schema-bound aggregation. It also names the sibling tools it is not (plan_session/update_task), so an agent can disambiguate from the many workflow-adjacent tools in the sibling list.
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?
Explicitly lists the conditions that warrant this tool ('when a task will delegate to multiple agents, run phases such as find→verify→synthesize, or needs schema-bound aggregation') and gives a direct negative rule ('Do not use for ordinary single-thread task lists; use plan_session/update_task for those'). It also includes the required follow-up sequence with register_worker and record_structured_result, leaving no ambiguity about how to proceed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribe_threadB
Create a durable per-thread subscription cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the operation creates a durable, thread-scoped cursor, which is meaningful side-effect information. However, with no annotations, it does not explain idempotency, whether an existing subscription is replaced, or what happens after creation.
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 concise sentence with no filler; the core action and scope are front-loaded.
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?
Adequate for a simple creation operation, but without annotations or an output schema it leaves the return value, follow-up usage, and lifecycle behavior to inference.
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 coverage is 50%. The 'per-thread' wording clarifies the thread_id parameter, but the description adds little about the binding_token or its role beyond the schema description.
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 action ('Create') and a clear resource ('durable per-thread subscription cursor'). It distinguishes itself from siblings like poll_thread and ack_thread by identifying that it creates rather than consumes a subscription, though it relies somewhat on the tool name.
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 call this tool, what preconditions exist, or how it relates to siblings such as poll_thread, ack_thread, or close_thread. The binding_token schema note adds context, but the description itself does not state usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tipsB
Read ranked practical TIPs. With query, reuses hybrid FTS+embedding retrieval and boosts useful tips; otherwise ranks by votes then recency.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| tags | No | ||
| query | No | ||
| scope | No | project | |
| max_results | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| include_superseded | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| tips | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explains core retrieval and ranking behavior (hybrid search with query; votes/recency otherwise). However, with no annotations, it omits return shape, side effects, and access requirements.
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 dense sentences, front-loaded with the core action and stripped of filler.
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 low schema coverage and no output schema, a read/list tool with six adjustable parameters needs more guidance about parameters and result shape. The description conveys overall ranking/query behavior but leaves tag, kind, scope, and output semantics unspecified.
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?
Only binding_token is documented in the schema and the description covers query behavior. Kind, tags, scope, max_results, and include_superseded are otherwise undocumented, and the description doesn't compensate for most of them.
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 clearly identifies the tool as reading practical tips, with a specific retrieval behavior. It is distinct from nearby write/moderation tools like moderate_tip and tip_useful, though it doesn't explicitly state those exclusions.
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?
Provides clear guidance on what happens with vs. without a query, but does not say when to prefer this over sibling tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tip_usefulA
Mark a TIP useful as the calling agent. One vote per agent per TIP; repeated calls are idempotent.
| Name | Required | Description | Default |
|---|---|---|---|
| tip_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
Output Schema
| Name | Required | Description |
|---|---|---|
| useful_count | Yes | |
| already_voted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose the key traits: per-agent vote limiting and idempotence, which prevent duplicate votes. It also clarifies the acting principal ('as the calling agent'), though it does not describe failure modes or identity-handling edge cases.
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 terse sentences with no filler. The action is front-loaded, and the second sentence earns its place by adding the idempotency and vote-limiting behavior.
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 simple tool with one required string parameter and an existing output schema, the description explains the operation and its vote-limiting behavior well. Missing explicit alternative routing and failure behavior are minor gaps; an agent has enough to select and invoke the tool 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?
tip_id has no schema description, and the phrase 'Mark a TIP useful' only loosely identifies it as the target. binding_token is already described in the schema, so the description adds little beyond suggesting that agent identity matters for the vote.
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 clear verb and object: mark a TIP as useful, scoped to the calling agent. The action is semantically distinct from sibling TIP tools like drop_tip or moderate_tip, though it does not explicitly name those alternatives.
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?
Provides useful invocation context: one vote per agent per TIP and idempotent repeated calls. However, it does not state when to prefer this tool over sibling TIP tools or mention any exclusions, so the usage guidance remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskA
Update a TASK node lifecycle status. Valid transitions: planned→in_progress, in_progress→done/failed/blocked/cancelled/done_pending_verification/verified.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| status | Yes | ||
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits, but it only restates the update action and the valid transitions. It does not describe side effects, required permissions/ownership, error behavior on invalid transitions, or the return value. The word 'update' implies mutation, but that is not enough for a lifecycle mutation.
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 description is a single sentence that delivers the core purpose and the transition table. There is no wasted words or required positioning, and the key information about lifecycle transitions is front-loaded.
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 simple 3-parameter tool, the description provides enough to call it correctly: task_id and a valid status, the tool targets a task node. However, it does not explain what happens on an invalid transition or whether the caller must be assigned the task, and the lack of an output schema and annotations leaves some ambiguity. It is adequate but has clear 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?
The schema coverage is 0%, so the description must compensate. It adds real semantic meaning beyond the enum by explaining valid transition mappings from planned to in_progress and from in_progress to a set of successor statuses. This clarifies why the starting status matters, which the schema alone omits. It does not explain task_id or notes, but those are straightforward.
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: 'Update a TASK node lifecycle status.' It distinguishes the tool from workflow-level updates and other sibling tools by focusing on the TASK node, and the valid transitions make its scope unmistakable.
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 provides clear context for when to use the tool (updating a task lifecycle status) and lists valid transitions, which guides the caller. However, it does not explicitly mention when to use alternatives like claim_task, update_workflow, or release_task, leaving some ambiguity with similar mutation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workflowA
Update a WORKFLOW status and optional summary. Use when all workers finish, a workflow blocks, or final aggregation is complete. Terminal states are completed, failed, and cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| summary | No | ||
| workflow_id | Yes | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that completed, failed, and cancelled are terminal states—useful behavior not present in the schema's enum alone. However, it does not mention permissions, reversibility, downstream effects, or what happens after a terminal state, which are important for a mutation tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The action is front-loaded, the usage guidance follows, and the terminal-state note is a compact addition that earns its place. Everything present contributes to selection and invocation.
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 tool with no output schema and no annotations, the description covers the core action, the triggers, and a critical behavioral fact (terminal states). It does not promise a return value or detail errors, but for an update-offloaded to schema for parameter detail, the description gives the agent enough to use the tool 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 only 25%. The description adds meaning to 'status' by explaining that completed, failed, and cancelled are terminal, and it describes 'summary' as optional. It does not elaborate on workflow_id or binding_token beyond the schema, leaving most of the parameter load on the schema. This is adequate but does not fully compensate for the low coverage.
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 starts with 'Update a WORKFLOW status and optional summary', which states a specific verb (update), a resource (WORKFLOW) and the fields affected (status and summary). It clearly differentiates from sibling tools like start_workflow (creation) and update_task (task resource), and the examples 'all workers finish' and 'final aggregation is complete' reinforce the workflow-scoped purpose.
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?
It gives explicit trigger conditions: 'Use when all workers finish, a workflow blocks, or final aggregation is complete.' This is clear guidance on when to invoke the tool, but it does not provide explicit exclusions or alternative tool names, such as 'don't use update_task for tasks', so it misses the top rung.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_mentionA
Block until a message mentioning the calling agent (or broadcasting to '*') arrives, or the timeout elapses. Returns immediately if one is already pending.
| Name | Required | Description | Default |
|---|---|---|---|
| after_seq | No | Defaults to the caller's acked cursor. | |
| thread_id | No | ||
| timeout_s | No | Clamped to [1, 30] s. | |
| max_results | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. | |
| mentions_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| has_more | Yes | |
| messages | Yes | |
| timed_out | Yes | |
| next_cursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description must carry the behavioral burden, and it does: blocking semantics, timeout behavior, mention/'*' matching, and immediate return on pending messages are all explicit. The main gap is that it does not disclose whether the call advances the ack cursor or consumes/acks the returned messages, which is material for a wait/poll-style tool.
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 description is a single compact sentence that front-loads the block-until behavior before the timeout and fast-path details. There is no redundant wording or filler.
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 core behavior is well covered, and the output schema can explain the return shape, so the description is not required to restate it. However, it omits how thread_id scopes the wait, what exactly happens on timeout, and whether the returned messages are acked or left pending. For a 6-parameter blocking tool with no annotations, those are 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?
The schema already describes after_seq, timeout_s, and binding_token, and the description adds meaning around mention/broadcast matching. However, it never explicitly connects that behavior to mentions_only, and thread_id and max_results are left to inference from their names. With 50% schema coverage, the description only partially compensates for undocumented 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?
The description states a specific verb and resource: block until a message mentioning the calling agent or broadcasting to '*' arrives, with a timeout escape. This clearly differentiates the tool from generic polling or message sending. However, it does not explicitly name or distinguish sibling tools such as poll_messages or wait_for_signal.
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 implies when to use the tool: when an agent needs to block for a relevant mention and can tolerate a timeout. It also documents the fast path for messages already pending, which helps an agent understand repeated calls are safe. There is no explicit when-not-to-use guidance or comparison with alternative polling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_signalC
Read a signal only when its version advanced; expired signals are absent.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| campaign_id | Yes | ||
| after_version | No | ||
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that expired signals are absent, which is a useful behavioral trait, but it does not disclose whether reading is destructive, whether it consumes the signal, whether it requires binding_token, or what happens when no version advance occurs. The description adds minimal context beyond the schema.
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 description is short and front-loaded with the core conditional behavior, but it is under-specified rather than concise. The phrase 'expired signals are absent' is somewhat redundant with 'only when its version advanced' and does not add meaningful new information. It earns a middle score for brevity but lacks substance.
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 4 parameters, no output schema, and no annotations, the description is incomplete. It does not explain the return value, the meaning of version advancement, the role of binding_token, or how this tool fits into the broader signal lifecycle. An agent would struggle to call this tool correctly without additional context.
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 only 25%, with only binding_token having a description. The tool description does not explain campaign_id, name, or after_version semantics. It mentions 'version advanced' which loosely relates to after_version, but does not clarify how after_version interacts with the read or what values are expected. The description fails to compensate for the low schema coverage.
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 'Read a signal only when its version advanced; expired signals are absent' is partially tautological and vague. It states a read operation but does not clearly define what a 'signal' is, what 'version advanced' means, or how this tool differs from siblings like publish_signal or poll_messages. The verb 'Read' is present, but the resource and scope are unclear.
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 implies a conditional read (only when version advanced) but provides no guidance on when to use this tool versus alternatives such as poll_messages, publish_signal, or cpg_query. There is no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
worker_heartbeatA
Stamp heartbeat_at on the calling agent's WORKER node so the reaper does not treat it as stale.
| Name | Required | Description | Default |
|---|---|---|---|
| worker_id | No | Defaults to the caller's bound worker. | |
| binding_token | No | Opaque token returned by this agent's join_session or plan_session. Required for reliable identity when logical agents share an MCP connection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the core behavior: it mutates heartbeat_at and thereby affects reaper treatment. But it does not cover edge cases like missing worker node, invalid binding_token, idempotency, or return behavior.
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?
One tight sentence front-loads the action and immediately ties it to the reaper's staleness behavior. There is no filler or repeated schema 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?
The definition is adequate for a simple heartbeat tool, but the absence of annotations and output schema leaves the agent without explicit information about return values, failure modes, or how frequently the heartbeat should be sent relative to the reaper threshold.
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 coverage is 100%, so the baseline is 3. The description adds no parameter-specific guidance, but the schema already explains the worker_id default and binding_token's role in identity, so there is no gap to compensate for.
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 and resource: 'Stamp heartbeat_at on the calling agent's WORKER node'. It also gives the observable consequence (avoiding reaper staleness), which clearly distinguishes this liveness tool from lifecycle siblings like renew_lease or complete_worker.
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 intended use is implied well by the reaper/stale framing: call it to keep the worker from being reaped. However, it never explicitly says when or how often to call it, nor does it contrast with alternatives such as renew_lease for lease-specific renewal.
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.
59 tool updates
v0.1.0- First observed
ack_delivery - First observed
ack_messages - First observed
ack_thread - First observed
arrive_barrier - First observed
cancel_worker - First observed
claim_resource - First observed
claim_task - First observed
close_thread - First observed
close_watch - First observed
commit_result - First observed
complete_assignment - First observed
complete_worker - First observed
cpg_query - First observed
cpg_think - First observed
create_barrier - First observed
create_campaign - First observed
create_thread - First observed
drop_tip - First observed
get_nodes - First observed
import_fable_trace - First observed
invite_member - First observed
join_campaign - First observed
join_session - First observed
list_spawned - First observed
moderate_tip - First observed
plan_session - First observed
poll_messages - First observed
poll_thread - First observed
post_progress - First observed
protocol_health - First observed
publish_signal - First observed
record_belief - First observed
record_execution - First observed
record_fact - First observed
record_structured_result - First observed
reflect - First observed
register_watch - First observed
register_worker - First observed
release_resource - First observed
release_task - First observed
renew_lease - First observed
renew_resource - First observed
replan - First observed
resolve_contradiction - First observed
resolve_message - First observed
reveal_result - First observed
revoke_member - First observed
send_message - First observed
spawn_workers - First observed
stale_report - First observed
start_workflow - First observed
subscribe_thread - First observed
tip_useful - First observed
tips - First observed
update_task - First observed
update_workflow - First observed
wait_for_mention - First observed
wait_for_signal - First observed
worker_heartbeat
TDQS
Scored across 59 tools
Several tool families—poll_messages/poll_thread, ack_messages/ack_thread/ack_delivery, record_structured_result/reveal_result/complete_assignment, renew_lease/renew_resource, complete_worker/complete_assignment—have nuanced but near-overlapping purposes, so an agent can easily select the wrong one. The descriptions are detailed, but at 59 tools the set lacks clear semantic separation.
Most tools use snake_case verb_noun, but there are many inconsistent outliers: cpg_think, cpg_query, replan, reflect, tips, protocol_health, stale_report, post_progress, complete_assignment. Verbs are not normalized across categories (create/start/spawn, poll/subscribe, ack/acknowledge, close/complete/cancel), so the pattern is only loosely predictable.
59 tools is an extreme size for an MCP server; even though the platform covers many subdomains, it is far beyond a well-scoped tool set and will overwhelm agents with selection overhead. It would benefit from consolidated compound tools or splitting into focused servers.
The server covers the core lifecycle well: planning, task leasing, workflow fan-out/fan-in, worker heartbeats/completion, threaded messaging with cursors/acks, campaign and barrier coordination, facts/beliefs/tips, and result commitments. Minor gaps like explicit campaign dissolution or direct fact/belief deletion are workaroundable through supersede/cancel/query tools.
Maintenance
Related MCP Connectors
Durable agent-to-agent handoffs and shared scratchpad for multi-agent workflows.
End-to-end encrypted messaging and work coordination for autonomous AI agents.
- llm-busOAuthcom.llm-bus
Coordinate multiple AI agents over MCP: atomic claims, leases, shared ledger, handoffs, tasks.
Hosted runtime for persistent agent teams, durable workflows, memory, schedules, and goals.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceA production-grade coordination hub that enables AI agents and human teams to work as a single organism by sharing tasks, context, decisions, and persistent memory across projects. It features two-tier agentic memory with per-agent hot caches, inter-agent messaging, and multi-agent authorship tracking for seamless collaboration.2-
- AlicenseNot gradedqualityCmaintenanceEnables peer-to-peer communication, discovery, shared state, and file coordination between AI coding agents across machines and sessions.519Elastic 2.0
- FlicenseNot gradedqualityDmaintenanceEnables multiple AI agents to communicate and coordinate via a shared SQLite-backed message log, supporting directed messages, broadcasts, and session discovery.-
- AlicenseNot gradedqualityCmaintenanceEnables agents to coordinate through a shared SQLite authority, claiming and handing off work, posting notes, and reading a live board with proof-gated completion.1MIT