A Spring Boot MCP server providing financial account management tools
Server exposes 2 tools with minimal documentation. Both tools have trivial descriptions (10-30 chars), no parameter descriptions despite accepting inputs, and no documented output schemas. Tool naming follows verb_noun convention (getAllAccounts, getAccountDetailsById) but descriptions lack context for LLM selection. No error handling guidance, no pagination support despite list operations, and no security annotations. This is a skeleton implementation missing nearly all production-grade patterns.
Get account details by accountId
Get all accounts
Tool descriptions are critically short (10-30 chars). 'Get all accounts' and 'Get account details by accountId' lack context for when/why to use them, what they return, and how they differ. LLMs cannot reliably select between them.
No parameter descriptions. getAccountDetailsById accepts 'accountId' (string) but provides no guidance on format, constraints, or examples. LLMs cannot infer whether to pass '12345', 'ACC-12345', or a UUID.
No documented output schemas. Callers cannot know what fields to expect from getAllAccounts or getAccountDetailsById. This forces LLMs to guess at response structure and breaks downstream tool chaining.
getAllAccounts has no pagination support (limit, offset, page_size). Returning unbounded account lists risks context window exhaustion and violates the enforce-result-limits pattern.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | <=2025-11-25 | v2 |
No error handling guidance. Tools provide no recovery hints (e.g., 'Account not found. Try getAllAccounts() to see available accounts'). LLMs receive raw errors with no actionable next steps.