A Spring Boot application that provides MCP tools for credit score analysis, integrating with Spring AI for tool calling and LLM-based credit decision making
Two tools with minimal definition quality. Both have acceptable names (verb_noun pattern: request*, retrieve*) but descriptions are extremely brief (under 50 chars) and lack context for LLM selection. Input schemas are present but minimal, only userId parameter with basic type and description. No output schemas documented. No error handling guidance. No parameter constraints (enums, ranges). Tool descriptions contain typos ('Ger' instead of 'Get'). No indication of idempotency, side effects, or when to use each tool vs. the other. Naming distinction between 'external' and 'internal' is clear, but descriptions don't explain the difference or when to call each.
Get user credit score from external bureau mock
Ger user credit score from internal data
Descriptions are too brief (<50 chars) and lack LLM-selection context. 'Get user credit score from external bureau mock' does not explain when to use this vs. retrieveInternalCreditUser, what the response contains, or whether the call is idempotent.
Typo in retrieveInternalCreditUser description: 'Ger' should be 'Get'. This reduces clarity and appears unprofessional.
No output schema documented. LLMs cannot plan downstream calls or extract fields from UserCreditResponse without knowing its structure (fields, types, required vs. optional).
No error handling guidance. Code throws IllegalArgumentException for missing users, but tool description does not explain what happens on failure or how to recover (e.g., 'If user not found, try searching with a partial ID').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 24 | 2026-07-28+ | v2 |
No parameter constraints. userId is an integer with no documented range, validation rules, or examples. LLMs may pass negative, zero, or absurdly large values.