MCP server for querying the Magisterium API for authoritative Catholic Church teaching with citations
The magisterium_query tool has a clear action-verb name and a reasonable description. The input schema is present with proper JSON Schema structure and all parameters have descriptions. However, there are moderate gaps: the description is relatively brief (135 chars, below the rubric baseline of 194 chars for A+ tools), and critically, there is NO documented output schema. The server provides no guidance on what the Magisterium API response structure looks like, what fields the LLM should expect, or how to chain results into downstream tools. This violates the pattern:tool-schema requirement and forces LLMs to guess at response structure. Error handling is minimal, no guidance on retryable vs fatal errors, no timeout documentation, and no recovery hints. The tool lacks any error classification or user-fixable guidance.
Send a query to the Magisterium API to get authoritative Catholic Church teaching responses with citations
No output schema documentation. The tool response structure is not documented anywhere in the code or test file. LLMs cannot infer what fields to expect (e.g., do citations exist? are related_questions always present? what is the exact structure of each citation object?). This violates pattern:tool-schema and forces agents to hallucinate field names.
Tool description is under the A+ baseline (135 chars vs 194 baseline). While present and functional, it lacks depth on WHEN to use this tool vs alternatives, WHAT the citations look like, and any prerequisites (API key setup). Compare to the web-server.ts version: 'Query the Magisterium API for authoritative Catholic Church teaching with citations from official documents', still minimal on guidance.
No error handling or recovery guidance. If the API returns a 401 (missing/invalid API key), 429 (rate limited), or 500 error, the LLM receives no structured guidance on whether to retry, what to ask the user, or whether the error is fatal. The web-server.ts callMagisteriumAPI() function throws generic errors without categorization.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
No timeout documentation. The web-server.ts sets a 30-second timeout internally, but the tool definition does not document this constraint. An LLM may expect instant responses or unreasonably long timeouts, and if the request hangs, there is no guidance on retry behavior.
Parameter descriptions could be more detailed on constraints. The 'model' parameter defaults to 'magisterium-1' but does not document what other models are available, what the differences are, or when to use each. The description is purely generic ('The model to use'). Similarly, 'return_related_questions' is underdocumented, what is a 'related question'? When is it useful to disable this?
No idempotency guarantee documented. The tool description does not state whether calling it repeatedly with the same query is safe (idempotent) or whether it has side effects. Agents need to know if they can retry without risk of duplication.