MCP server for using tools registered on MCP Bone website via. API.
This server exposes a single dynamically-fetched tool with no visible input schema validation, minimal description, and critical architectural flaws. The tool name 'dynamic_tools_from_mcp_bone_api' violates naming conventions (does not start with action verb; uses 'from' instead of verb_noun pattern). The description is generic and does not explain WHAT the tool does, WHEN to use it, or what it returns. No input schema is visible in the source code, tools are fetched from a remote API at runtime, making schema validation impossible at registration time. The tool delegates all responsibility to an external service, creating an unmaintainable, untestable interface. No error handling guidance, no parameter descriptions, no output schema documentation.
Tools are dynamically fetched from the MCP Bone API. Tool names are constructed as {serverName}__{toolName} where serverName and toolName come from the API response. Each tool's description and inputSchema are provided by the remote API.
Tool name violates verb_noun convention. 'dynamic_tools_from_mcp_bone_api' does not start with an action verb (get_, create_, search_, etc.). LLMs cannot infer intent from the name alone.
No input schema visible in source code. Tools are dynamically fetched from remote API at runtime. Schema validation cannot occur at registration time, violating the MCP tool contract and making the server untestable.
Description is generic and uninformative. 'Tools are dynamically fetched from the MCP Bone API...' does not explain what the tool does, when to call it, or what it returns. LLMs cannot determine tool selection criteria.
No parameter descriptions. The tool accepts 'name' and 'arguments' but neither is documented. LLMs cannot understand what values to pass or how to construct the 'arguments' object.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 19 | 2026-07-28+ | v2 |
Error handling returns raw error messages without recovery guidance. 'Error: {err.message}' gives the LLM no actionable next step. No categorization of retryable vs fatal errors.