Local stdio MCP server that relays Legax messages and agent-mediated approval requests to configured transports
Legax MCP server provides 5 tools with generally well-structured schemas and descriptions. Tools are named with action verbs (send, poll, request, approve, show status) which follow the verb_noun pattern. Input schemas are present and include type definitions, enums, and property descriptions. However, descriptions vary in quality and completeness, some lack sufficient context for LLM decision-making. Parameter descriptions are present but uneven; some parameters have rich descriptions (e.g., 'kind' with enum values) while others are minimal. Output schemas are not documented anywhere, making it difficult for agents to reason about what fields to expect. Error handling guidance is absent from all tool descriptions. The server follows tool composition principles reasonably well (each tool has a focused responsibility), but lacks error recovery patterns and lacks explicit guidance on when to use each tool vs. alternatives.
Ask the phone to approve or deny a Claude Code permission request.
Poll remote replies and permission decisions from bidirectional transports.
Send a permission request to the phone and optionally wait for an approve/deny reply.
Send an agent message to the configured remote transport(s).
Show configured transports and pending permission requests, with secrets redacted.
approval_prompt has minimal schema validation: input schema allows additionalProperties=true with no defined properties, making it impossible for an LLM to know what parameters are expected or required.
approval_prompt description is extremely sparse (50 chars): 'Ask the phone to approve or deny a Claude Code permission request.' Does not explain when/why to use it, what parameters it accepts, what it returns, or how it differs from legax_request_permission.
No output schemas documented for any tool. LLMs cannot reason about what fields are returned or how to chain tool calls. For example, legax_poll description does not specify the structure of 'replies' or 'decisions' it returns, forcing agents to guess.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2025-06-18+ | v2 |
No error handling guidance in any tool description. Tools do not explain what errors are retryable, what are user-fixable, or what are fatal. Agents have no recovery path on failure.
legax_status description (56 chars) is incomplete: 'Show configured transports and pending permission requests, with secrets redacted.' Does not explain what transport info is useful or when to call this vs. checking legax_poll directly.
Parameter descriptions inconsistently detailed. 'timeoutMs' in legax_poll is well-described ('Optional long-poll timeout. 0 means one immediate poll.') but 'ping' in legax_status is vague ('Ping relay transports when true.'). Does not explain consequences or use case.
Relationship between approval_prompt and legax_request_permission is unclear. Both deal with approvals, but descriptions do not explain when to use each. LLM cannot disambiguate.