Provides database queries, REST API access, and file operations for enterprise Java systems.
Server has 6 tools with basic descriptions and parameter definitions visible in source code (ApiWrapperTools.java, DatabaseMcpTools.java, FileSystemTools.java). However, critical gaps undermine quality: (1) No output schemas documented anywhere, LLMs cannot plan downstream calls or extract structured data. (2) Parameter descriptions are minimal (10-30 chars) and lack constraints, ranges, or format guidance. E.g., 'SQL SELECT query to execute' omits length limits, complexity warnings, or timeout behavior. (3) No error handling guidance, queryDatabase returns a generic error string, not actionable recovery steps. (4) searchOrders accepts 'limit' but lacks min/max bounds (description says '1 - 50' but no enum/constraint enforcement visible). (5) readFile and listFiles lack path traversal protection documentation. (6) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Average tool score: 42/100.
Fetch customer data by ID from the internal CRM API
List files in the workspace directory
List all tables in the database schema
Run a read-only SQL query on the application database
Read the contents of a file in the workspace
Search orders by status: PENDING, SHIPPED, DELIVERED, CANCELLED
No output schemas documented. LLMs cannot infer response structure, forcing them to guess field names and types. This breaks tool chaining and wastes tokens on parsing unstructured text.
Parameter descriptions are too brief (10-30 chars) and lack constraints. 'SQL SELECT query to execute' omits max length, timeout, or complexity limits. 'Order status filter' lacks enum values or format guidance. LLMs cannot validate inputs before calling.
No error handling guidance. queryDatabase returns 'Error: only SELECT queries are permitted' but does not suggest recovery steps. readFile/listFiles lack path traversal attack documentation. Agents cannot self-correct on failure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
searchOrders 'limit' parameter description says '1 - 50' but no enum or min/max constraint is enforced in schema. Code clamps to 50 but LLM cannot see this constraint. Parameter should declare type=integer with minimum=1, maximum=50.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all 6 tools being read-only. Agents cannot distinguish safe tools from destructive ones without explicit hints.