AIノアカリ☆ capability gateway MCP: Vault-backed agent capabilities without normal-path secret exposure
Three tools with clear security-focused design and proper Zod schemas. Naming is verb-based and descriptive (discover_, execute_, capability_). Descriptions are present and explain the security model well (10 - 20 words each). However, parameter descriptions are minimal or absent, 'capability' and 'action' in execute_capability lack detail on format/constraints. Input schema for discover_capabilities is empty ({}), violating the pattern:tool requirement. Output schemas are not documented, LLMs cannot predict response structure. Error handling returns JSON but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles (READ_ONLY vs WRITE).
Check the capability gateway or one named capability without reading its credential.
Discover actions this agent may use. Returns capability metadata only; never secrets.
Execute an allowed action inside Keymaster. Credentials remain inside the gateway and are never returned to the agent.
discover_capabilities has empty input schema ({}). Per pattern:tool, every tool must declare its input schema with types and descriptions, even if no parameters are required.
Parameter descriptions are missing or minimal. 'capability' in execute_capability and capability_health lack format/constraint details (e.g., 'Capability identifier (alphanumeric, 1-255 chars)' or enum of valid capabilities). Per pattern:tool-description, every parameter needs a description explaining what it controls.
Output schemas are not documented. Tool descriptions do not specify what fields the response contains (e.g., execute_capability returns {ok, status, result?, error?}). LLMs cannot plan downstream calls or extract data without knowing response structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). execute_capability is marked WRITE in metadata but the tool definition lacks destructiveHint annotation. Per current MCP spec (2026-07-28), tools should declare their risk profile via annotations.
Error responses lack recovery guidance. When execute_capability fails, it returns {ok: false, error: string} but does not tell the LLM what to do next (retry? call discover_capabilities first? ask user?). Per pattern:recovery-guide, errors must guide the agent's next step.