MCP server for peer-to-peer messaging and collaboration via a relay hub, supporting direct messaging, rooms, groups, and broadcasts across multiple editor/IDE adapters (Antigravity, Codex, Cursor)
EcoRelay defines 19 tools with complete input schemas and descriptions. Naming follows verb_noun convention (relay_*) consistently. However, descriptions are brief (avg ~60 chars, well below the 194-char baseline for A+ tools) and lack context on WHEN to use each tool or what happens on failure. Parameter descriptions are present but minimal. Output schemas are not documented, callers must infer structure from code. Error handling returns generic codes ('bad_args', 'unexpected') without recovery guidance. No tool annotations (readOnlyHint, destructiveHint) despite clear risk stratification in the data. Schemas are well-formed JSON Schema with proper types and constraints (maxLength, required arrays), but lack examples or detailed format guidance.
Send a broadcast question to all peers (fire-and-forget)
Create a new group with members
Delete a group
Retrieve message history from a group
Get information about a group
Invite a peer to a group
Leave a group
List all groups the peer is a member of
Remove a peer from a group
Output schemas not documented. Callers cannot infer response structure (e.g., what fields does relay_send return? Is msg_id always present?). LLMs must guess or reverse-engineer from code.
Descriptions are too brief (avg ~60 chars vs 194-char baseline). Missing WHEN to use each tool and what happens on error. E.g., 'Send a direct message to a peer' does not explain: Is this fire-and-forget? Does it block? What if the peer is offline?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Send a message to a group
Retrieve incoming messages from the inbox
Join a room
Leave a room
List all connected peers on the relay hub
Rename the current peer
Reply to an incoming ask message
Send a message to a room (fire-and-forget)
List all joined rooms
Send a direct message to a peer
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Data shows clear risk stratification (READ_ONLY, WRITE, DESTRUCTIVE), but LLMs cannot see it. relay_group_delete is destructive but unmarked.
Error responses are generic ('bad_args', 'unexpected') with no recovery guidance. LLMs cannot self-correct. E.g., if relay_send fails with 'bad_args', the agent does not know if 'to' is invalid, 'text' is too long, or 'reply_to' format is wrong.
No pagination guidance for list tools (relay_inbox, relay_group_history). If a group has 1000 messages, does relay_group_history return all or cap at a limit? No 'limit' param on relay_group_history despite relay_inbox having one.