Read-only access to the RootSign tamper-evident agent audit log. Exposes session hash chains, integrity verification, and human-in-the-loop approval records over MCP.
Four read-only audit tools with solid naming (verb_noun pattern: list_, query_, verify_, get_) and clear descriptions (100-150 chars each). All tools have input schemas with types and descriptions. However, output schemas are not documented in the visible code, only input schemas are explicit. Parameter descriptions are adequate but lack format constraints (e.g., UUID format for session_id, limit bounds). No error handling guidance visible. Tools are well-composed (single responsibility) and follow the audit log domain cleanly.
Return all human-in-the-loop approval records for an action.
List recent agent sessions (newest first), optionally filtered by agent_id.
Return the ordered Action hash chain for a session.
Verify a session's hash chain. Returns {valid, record_count, first_invalid_sequence, error}.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Returns {valid, record_count, first_invalid_sequence, error}') but no formal JSON Schema for response structure is visible in code. LLMs cannot plan downstream operations without knowing response field types and names.
Parameter constraints missing. 'limit' parameter lacks min/max bounds (should be 1-100 or similar). 'session_id' and 'action_id' are described as UUIDs but no format constraint or validation guidance is visible. LLMs may pass invalid values.
No error handling guidance. Tools are read-only (low risk), but no documentation of failure modes (e.g., 'session not found', 'invalid UUID format'). Error responses should guide the LLM on recovery steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
No pagination guidance for list_sessions. Default limit=20 is reasonable, but no mention of total_count, next_cursor, or how to fetch additional results. Large agent session histories may require pagination.
Parameter 'agent_id' in list_sessions accepts string but no guidance on format (UUID vs alphanumeric). Description says 'Optional agent ID' but does not clarify whether it must match the agent_id field type in AgentSession model.