The server defines 3 tools with explicit registrations in src/index.ts. All tools have names, descriptions, and input schemas. However, there are significant gaps: (1) output schemas are not documented anywhere, LLMs cannot predict what these tools return; (2) parameter descriptions lack detail about format, constraints, and valid values; (3) no error handling guidance in descriptions; (4) descriptions are between 32 - 79 chars, below the 50 - 200 char LLM-optimized baseline; (5) no documentation of which parameters enable tool chaining (e.g., what fields the response includes). The tools are narrowly scoped and read-only (low risk), but the definitions lack production-grade precision.
Get an Aha! page by reference number with optional relationships
Get an Aha! feature or requirement by reference number
Search for Aha! documents
Output schemas completely undocumented. LLMs cannot predict response structure, preventing effective tool chaining and result parsing.
Parameter descriptions use example values (DEVELOP-123, ABC-N-213) instead of formal constraints (regex, enum). LLMs latch onto examples and may try invalid formats.
Tool descriptions are 32 - 79 chars, well below the 50 - 200 char LLM-optimized baseline. They lack context on when to use each tool, prerequisites, dependencies, and return structure.
search_documents accepts undocumented searchableType values. No enum defined; LLM cannot discover valid options without trial and error.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 61 | - | v1 |
No pagination or result limits documented. search_documents may return thousands of items, causing context window exhaustion and token waste.
Error handling descriptions are absent. Tools return generic McpError with messages (see handlers.ts), but tool definitions do not guide LLMs on recovery paths.