mono-pilot defines 5 tools with mixed quality. The two MCP gateway tools (CallMcpTool, ListMcpTools) have complete schemas and reasonable descriptions, but the three game extension tools (BusSend, MailBox, ReadFile) are inferred only from a registry, no visible implementation, schemas, or parameter documentation in the provided source. CallMcpTool has a detailed description (150+ chars) and explicit JSON Schema, but 'arguments' is Optional with Any type, too permissive for LLM safety. ListMcpTools has a good description but its schema uses optional string parameters with no type constraints or enums. Per-tool analysis reveals critical gaps in naming, parameter descriptions, and schema rigor across the portfolio.
Call an MCP tool by server identifier and tool name with arbitrary JSON arguments. IMPORTANT: Always read the tool's schema/descriptor BEFORE calling to ensure correct parameters. Example: { "server": "my-mcp-server", "toolName": "search", "arguments": { "query": "example", "limit": 10 } }
List available MCP tools from configured MCP servers. Each returned tool includes server metadata. If server is provided, results are limited to that server. If toolName is provided, returns full documentation and input JSON schema for matching tools.
Three game extension tools (BusSend, MailBox, ReadFile) have no visible schemas, descriptions, or parameter documentation in the source code. Tool definitions are inferred from a registry only, with no actual implementation visible.
CallMcpTool's 'arguments' parameter uses Type.Any with Optional, no schema validation of the JSON payload passed to downstream MCP tools. This is a security and usability risk: LLMs cannot infer valid argument structures, and malformed input silently fails at the remote tool.
ListMcpTools 'server' and 'toolName' parameters lack enums or descriptions of valid values. 'server' must match a configured MCP server identifier, but no guidance is provided. 'toolName' is described as 'optional exact tool name' but no format/pattern constraints are documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 31 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
CallMcpTool description includes an example JSON payload. The example should be moved to a separate documentation file or replaced with a description of valid server/toolName patterns.
Error handling in CallMcpTool converts JsonRPC errors to text via formatJsonRpcError, but the tool response does not distinguish retryable vs. fatal errors. LLM cannot determine whether to retry a failed call or escalate to the user.
CallMcpTool output schema is formatted as plain text (Server: X, Tool: Y, isError: ..., Content items: N) rather than structured JSON. This forces LLMs to parse unstructured text and makes downstream tool chaining error-prone.