Personal R&D project for governing MCP tools with policy enforcement, approval workflows, provenance attestation, and evidence replay capabilities.
Sentinel MCP presents 15 tools with serious definition quality gaps. While tool names follow verb_noun conventions (authorize, trigger_kill_switch, resolve_approval, etc.) and descriptions exist, the definitions lack the rigor required for production agent use. Most tools have minimal parameter descriptions, fields like 'context' (tools 1, 2, 3, 11) are documented only as 'Additional context for the authorization decision' or 'Original authorization request to replay' without specifying structure, required keys, or format. No output schemas are documented anywhere in the provided code. Tools like `meta_protocols` and `meta_policy_bundle` have NO input schema visible and descriptions under 50 characters. Error handling guidance is absent, tools give no recovery hints or error categorization. Security-critical tools like `trigger_kill_switch` and `restore_kill_switch` lack rate-limiting hints or confirmation patterns. The server is HTTP-based (good for transport), but definition quality is well below production baseline (baseline avg 194 chars per tool description; these average ~80 chars, and many params are undescribed).
Create a cryptographic attestation of an authorization decision for provenance tracking
Authorization decision endpoint for general authorization requests
Authorization endpoint for application-to-application (A2A) authorization flows
Authorization endpoint for MCP protocol interoperability
Retrieve evidence and audit logs for a specific authorization trace
Retrieve an attestation by ID
No output schemas documented for any tool. LLMs cannot infer what fields to expect or plan downstream tool calls. All 15 tools lack return type documentation.
Parameter 'context' (tools 1, 2, 3, 11) documented as 'Additional context' with no schema, required keys, or format guidance. Ambiguous object type invites hallucinated structures.
Tools meta_protocols and meta_policy_bundle have no input schema visible (marked as 'Risk: READ_ONLY' with no Input field in spec). No way to verify whether they accept parameters or are purely query tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
Health check endpoint for service availability monitoring
Retrieve the active policy bundle used for authorization decisions
Retrieve metadata about supported authorization protocols and interoperability standards
Replay an authorization decision with the original request parameters for evidence and audit purposes
Create an approval request for high-risk authorization decisions
Resolve an approval request by approving or denying it
Restore access by deactivating a kill-switch
Activate a kill-switch to immediately disable tool or service access
Verify the cryptographic integrity of an attestation
Destructive tools (trigger_kill_switch, restore_kill_switch, resolve_approval) lack confirmation patterns or dry-run support. No recovery guidance in descriptions. Agents can irreversibly disable services without safeguards.
No error handling guidance anywhere. Tools give no recovery hints ('If decision_id not found, call list_decisions first'), no error categorization (retryable vs fatal), no actionable error messages. LLMs will stall on failures.
Tool descriptions are uniformly short (30-55 chars) and lack WHEN to use guidance. E.g., 'Authorization endpoint for MCP protocol interoperability' does not explain when to call authorize_mcp vs authorize vs authorize_a2a. Baseline avg is 194 chars.
Parameter types are weak or missing. 'decision' param in resolve_approval is enum ['approve', 'deny'] but no description of what approving/denying means in the agent context. 'ttl_seconds' min=30 but no max, and no guidance on typical ranges or implications of different TTLs.
Tools like 'evidence' and 'replay_decision' accept opaque trace_id and request objects with no discovery mechanism. LLMs cannot find valid trace IDs or reconstruct valid request objects without a list/search tool.
Tools 'attest' and 'get_attestation' accept bare 'payload' and 'attestation_id' without documenting format, size limits, or reference semantics. Agents will guess at structures.
Tool 'healthz' is a bare health check with no description. Named as a verb_noun but does not follow agent tool conventions (should be discovery or metadata-only). Unclear when an agent should call it.