A lightweight prompt management tool with MCP server and CLI capabilities. Manages, serves, and executes prompts from Markdown files.
PromptCaddy has significant definition quality gaps across all three visible tools. While tool names follow verb_noun patterns (initialize, list, call), descriptions are generic and lack LLM-optimization. The tools/call tool has a documented input schema with two parameters (name, arguments), but the schema for the 'arguments' parameter is dangerously generic ('object' with no property constraints). The initialize tool lacks any meaningful description beyond 'Initialize the MCP server'. Error handling is minimal, tools return generic error messages ('Tool not found', 'Invalid params') without actionable recovery guidance. No tool annotations exist (readOnlyHint, destructiveHint, idempotentHint). Parameter descriptions are sparse or missing entirely. No output schema is documented for tools/call's content response. The tool definitions are visible in mcp_handlers.go, but lack the depth and precision expected of production-grade definitions.
Initialize the MCP server and return protocol version and capabilities
Execute a prompt by name with provided arguments, returning interpolated content
List all available prompts as MCP tools
initialize tool has no meaningful description. The string 'Initialize the MCP server and return protocol version and capabilities' is boilerplate and does not help LLMs understand when to call this tool or what it does uniquely.
tools/call 'arguments' parameter accepts generic 'object' type with no property schema. LLMs cannot validate which fields are expected or required. The description 'Parameters to pass to the prompt, including optional "selection" parameter' is incomplete, it does not enumerate valid keys or their types.
No output schema is documented for any tool. The tools/call response returns a 'content' array with 'type' and 'text' fields, but this structure is not declared in tool definitions or documentation. LLMs must infer the response shape from the implementation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 33 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 17 | 2024-11-05+ | v1 |
Error messages lack actionable recovery guidance. 'Tool not found' and 'Invalid params' tell the LLM nothing about what to do next. Should suggest calling tools/list to discover available tools or show which parameter was invalid.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. While tools/call is marked READ_ONLY in the summary, the implementation does not declare this metadata, so clients cannot optimize caching or retry strategies.
tools/list description is generic: 'List all available prompts as MCP tools'. Does not explain when to call it (e.g., discovery phase, before tools/call) or what structure the response uses.
initialize tool has redundant 'Initialize the MCP server' in both the summary and the result response. This suggests the tool is not well-integrated into the protocol. According to MCP spec, initialize is a protocol-level message, not a user-callable tool.