Contract-based agent accountability runtime with MCP server support for task assignment, evidence verification, and artifact management
Agent Guard has 11 tools with moderate definition quality. Most tool names follow verb_noun patterns (task/get, evidence/submit, artifact/get), which is good. However, descriptions are present but often terse (10-50 chars), lacking LLM-guidance on WHEN to use tools and what prerequisites exist. Schemas are partially defined, several tools have input parameters with types and descriptions (e.g., evidence/submit has evidence_id and data with types), but critical output schemas are NOT documented anywhere in the visible code. Tool descriptions rarely explain state transitions, error conditions, or recovery paths. Parameter descriptions are minimal and do not follow the pattern of stating constraints, formats, or ranges. No visible error guidance or recovery hints. Security concerns: tools like task/complete and artifact/put perform state-modifying operations without explicit confirmation or dry-run support. The codebase shows audit events are logged, but tool descriptions do not declare what permissions each tool requires (no scope declarations). Overall, the server is functional but lacks the polish and LLM-friendliness expected of production-grade agent tools.
Get an input artifact
Store an output artifact
Submit evidence for verification
Get current verification status
Report a blocker preventing task completion
Cancel a child task
Declare the task as complete
Create a new task contract (orchestrator only)
Output schemas not documented. No visible schema definitions for tool return types. LLMs cannot infer what fields to expect or plan downstream calls. The MCPToolResult struct exists but is never documented in tool descriptions.
Descriptions are terse (10-50 chars) and lack LLM-guidance. 'Get the current task contract assigned to this agent' does not explain WHEN to call this vs task/get-child, what the contract object contains, or what prerequisites exist. No recovery hints for errors.
Parameter descriptions missing or generic. 'reason' in task/blocked has no description. 'data' in evidence/submit is 'Evidence data', does not explain structure, format, or examples. LLMs cannot validate input without explicit constraints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 38 | 2024-11-05+ | v1 |
Get the current task contract assigned to this agent
Get details of a child task
List child tasks created by this orchestrator
No error recovery guidance. Code shows errors like 'contract is already completed' or 'max evidence submissions exceeded', but tool descriptions do not tell LLMs what to do next. Should state: 'If task is already complete, retrieve status with status/get.' No classification (retryable, user-fixable, fatal).
No confirmation or dry-run for destructive operations. task/cancel-child and task/complete are irreversible state transitions, but descriptions do not mention risks or offer a dry-run mode. Agents make mistakes, no safeguards present.
No tool permission/scope declarations. Tools like artifact/put and task/cancel-child should declare required permissions (e.g., 'write:artifacts', 'write:tasks'), but no such metadata is visible. Audit logging is present in code, but not declared in tool descriptions.
Output chaining references incomplete. task/get returns contract_id and input_artifacts, but downstream tools like artifact/get need artifact_id. No guarantee that list results include all IDs needed for follow-up operations.
Evidence submit parameter 'data' accepts free-form object. No schema, format, or validation rules stated. LLMs will hallucinate fields. Should define expected structure (required fields, types, examples) for each evidence_id.