A P2P runtime daemon for the A2A (Agent-to-Agent) protocol, exposing P2P networking capabilities as MCP tools for AI agents. Supports multiple transport modes: stdio (Claude Desktop, Cursor, VS Code), HTTP (ChatGPT), gRPC (Python SDK), and HTTP Bridge (A2A interop).
AgentAnycast Node provides 7 tools with basic schemas and descriptions. All tools have non-empty descriptions (range 80-180 chars, within baseline 34-392). All input schemas are present with type definitions. However, parameter descriptions are sparse or missing entirely. Most parameters lack detail on format, constraints, or valid values. No output schemas are documented. Error handling guidance is absent. Tool naming follows verb_noun convention (get_, list_, send_, discover_) which is good, but composition could be tighter, send_task and send_task_by_skill overlap significantly. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present despite clear risk classifications in the metadata.
Find AI agents on the P2P network that offer a specific skill. Queries the DHT and relay skill registry.
Get the A2A Agent Card (name, description, skills) for a connected peer or this node.
Get this node's identity and network information (PeerID, DID, listen addresses, connected peer count).
Get the current status and result of a previously sent task.
List all peers currently connected to this node.
Send an encrypted A2A task to a remote AI agent. Target can be a PeerID, skill name (with by_skill=true), or HTTP URL.
Send an encrypted A2A task using anycast routing — the network automatically finds the best agent for the skill.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (task_id, peer_id, skill) from responses. Baseline: 100% of A+ tools document return types.
Parameter descriptions are minimal or absent. 'peer_id' in get_agent_card has a description, but 'target' in send_task lacks detail on format (PeerID vs URL syntax). 'skill' parameter in discover_agents lacks examples or constraints. Baseline: 100% of A+ tool params have descriptions.
send_task and send_task_by_skill are near-duplicates. send_task with by_skill=true does what send_task_by_skill does. This violates single-responsibility and forces LLM to reason about which to use. Consolidate into one tool with optional by_skill parameter.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
No error handling guidance. Tools lack descriptions of failure modes, recovery steps, or actionable error messages. E.g., discover_agents should explain what happens if no agents offer the skill. Baseline: error responses must guide LLM on next steps.
No tool annotations despite clear risk metadata. send_task and send_task_by_skill are marked WRITE but lack destructiveHint annotation. get_* tools are READ_ONLY but lack readOnlyHint. Annotations enable safer agent planning.