Run several coding agents in isolated worktrees with shared coordination.
Agent Parley defines 14 tools with complete JSON schemas and descriptions. Naming follows verb_noun conventions (send_message, fetch_inbox, acknowledge_message). Descriptions are concise (10-160 chars) and action-oriented. All parameters have types and descriptions. Tool annotations (readOnlyHint) are present. However, output schemas are not documented, callers cannot see what fields to expect from responses. Error handling guidance is minimal; tools do not explain recovery paths or retryability. Some parameter descriptions lack constraint details (e.g., 'At most 4096 UTF-8 bytes' is stated but not enforced in schema). Idempotency keys are well-designed across write operations, supporting safe retries.
Explicitly acknowledge a reviewed message.
Withdraw one queued reservation request, or every one of yours.
Read incremental mail. Bodies opt-in; page long bodies.
Reserve repository-relative paths, or named resources written with a scheme such as port:5432, db:local, suite:integration or device:android-1, atomically; conflicts grant nothing and name the blocking owner with that owner's reason.
List the participants you can address in this project.
Mark an ordinary message reviewed; does not ack.
Output schemas not documented. Callers cannot see what fields responses contain, forcing LLMs to guess structure and plan downstream tool calls blindly.
Error handling lacks recovery guidance. Tools do not explain which errors are retryable, what the LLM should do next, or how to self-correct (e.g., 'User not found. Try search_users() first.').
Reservation tools (file_reservation_paths, request_reservation) have complex semantics ('conflicts grant nothing and name the blocking owner') but descriptions lack clarity on when to use each vs. the other, and what 'stale' means for TTL.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Read your mail in one thread, oldest first.
Release your file reservations. A key another lane queued for is granted to it here, and that lane is told in the same commit.
Reserve the same keys, and where a peer holds one, queue for it instead of failing; the refusal names the holder and your place. The holder's release grants it and sends you one notice.
Record your verdict on a peer's report, never your own. A verdict is your claim, not independent verification.
Search decisions any lane recorded. Empty query lists the newest.
Search your mail by text, newest match first.
Send a concise update. Reuse the key only on retries.
Await your next matching mail instead of polling or ending your turn. Filters as fetch_inbox; an expired wait returns nothing.
Parameter 'body_md' in send_message states 'At most 4096 UTF-8 bytes' in description but schema lacks maxLength constraint. Constraint should be enforced in schema, not just documented.
search_messages and search_decisions accept 'query' as free-form string with no guidance on syntax, operators, or examples. LLMs will guess at query format, causing silent failures.