Trust infrastructure for AI agents via Model Context Protocol. Provides trust scoring, event ingestion, Guard scanning (PII tokenization, prompt injection detection), Passport credentials, Vault audit logging, and policy enforcement.
VeriSwarm MCP exposes 5 approval-management tools with clear verb-noun naming (create_approval, list_approvals, get_approval, approve_approval, reject_approval). All tools have descriptions (avg 95 chars) and input schemas with typed parameters. However, schemas lack output documentation, no response structure is visible in the source. Parameter descriptions are present but minimal (avg 45 chars); several lack actionable constraints (e.g., 'ttl_seconds' states range but not units or rationale). Error handling is implicit (401 for unauthorized) but not documented in tool descriptions. No tool annotations (readOnlyHint, destructiveHint) despite clear read/write semantics. Composition is sound, tools chain naturally (list → get → approve/reject). Security is well-designed (API key injection, role-based access), but not surfaced in tool metadata.
Approve a pending approval request. Requires an account-session token (operator role); api-key-only callers get a 401. `reason` is captured in the audit ledger.
Submit a new approval request to the operator queue.
Get a single approval request by id (`apr_*`).
List approval requests for the authenticated tenant.
Reject a pending approval request. Requires an account-session token (operator role); api-key-only callers get a 401. `reason` is captured in the audit ledger.
No output schemas documented. Tools return approval objects but response structure is not visible in source code. LLMs cannot plan downstream calls or extract required fields (e.g., approval_id for chaining).
Missing tool annotations. approve_approval and reject_approval are destructive (modify state) but lack destructiveHint. list_approvals and get_approval are read-only but lack readOnlyHint. Agents cannot infer safety/idempotency.
Parameter descriptions lack actionable constraints. 'ttl_seconds' states range (60 - 30 days) but not units or why this range exists. 'requested_action_json' says 'free-form per-tenant schema' but gives no guidance on structure or validation. LLMs cannot self-correct invalid input.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Error handling not documented in tool descriptions. approve_approval and reject_approval mention '401 for api-key-only callers' but this is buried in description text, not a structured error response. No recovery guidance (e.g., 'use account-session token').
list_approvals 'limit' parameter lacks minimum/maximum constraints in schema. Description says '1..500 (server-enforced)' but schema does not declare min/max properties. LLMs may pass invalid values and rely on server rejection.