Audit scoped and revocable MCP tool grants — each tool carries an explicit scope, a revocation endpoint is configured, and token rotation posture is healthy (art-150) → validate the agent on-behalf-of (OBO) mandate: subject, bounded scope, intent, and non-expired validity window; mismatch or expiry returns REFUSE (art-151) → validate that the long-running task state transitions are legal per the new MCP specification state machine (art-152). Exports lifecycle attestation with execution_hash. Zero network, zero PII.
audit_mcp_tool_scope_revocation{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "audit_mcp_tool_scope_revocation",
"arguments": {
"tool_grants": [
{ "tool": "search_files", "scopes": ["files:read"] },
{ "tool": "write_file", "scopes": ["files:write"] }
],
"revocation_endpoint": "https://auth.example.com/revoke",
"token_created_unix": 1000000,
"now_unix": 1001000,
"max_token_age_s": 3600,
"next_token_present": false
}
},
"id": 1
}
validate_agent_obo_mandate{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "validate_agent_obo_mandate",
"arguments": {
"mandate": {
"subject": "user:[email protected]",
"intent": "retrieve_invoice_data",
"scope": ["invoices:read", "payments:read"],
"valid_until_unix": 9999999999
},
"now_unix": 1000000000
}
},
"id": 2
}
validate_mcp_task_lifecycle{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "validate_mcp_task_lifecycle",
"arguments": {
"transitions": [
{ "from": "working", "to": "input_required" },
{ "from": "input_required", "to": "working" },
{ "from": "working", "to": "completed" }
]
}
},
"id": 3
}