Spring Boot-based MCP server for dynamic enterprise tool execution with multi-tenant support, rate limiting, idempotency, and audit logging. Exposes business actions as MCP tools with per-tenant schema customization.
Single tool 'dynamic_action_tool' with critical definition gaps. Tool name violates verb_noun convention (should be 'execute_action' or similar). Description is generic and does not explain WHEN to use it or what business actions are available. Input schema present but 'params' field is underspecified (type: object with no properties defined, no additionalProperties constraint). No output schema documented. Parameters lack actionable constraints, 'action' maxLength=50 but no enum of valid actions, no guidance on discovery. 'params' description says 'merged from template.paramSchema and tenant.customParams' but does not explain what those are or how to construct them. No error handling guidance. Tool is dynamically registered from database, making static schema validation impossible, this is a fundamental design issue for MCP.
Generic MCP tool that executes business actions dynamically. Tool name and schema are derived from ActionTemplate records in the database. Each action is registered as a separate tool with its own inputSchema built from template.paramSchema and tenant-specific customParams.
Tool name 'dynamic_action_tool' is generic and does not start with action verb. Should be 'execute_action', 'invoke_action', or 'run_business_action' to signal intent.
Input parameter 'params' has type 'object' with no schema properties defined. LLM cannot infer what fields are valid. Must document expected structure or provide enum of valid action names with their required/optional parameters.
No output schema documented. LLM cannot plan downstream tool calls or extract results. Must define return type (success/failure, result fields, error structure).
Parameter 'action' lacks enum constraint or discovery mechanism. Description says 'e.g. queryOrder, listUsers' but does not explain how to discover valid actions. LLM will hallucinate action names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
No error handling guidance. Tool description does not explain what happens on invalid action, missing required params, or tenant not found. LLM has no recovery path.