Zero Trust AI Agent with multi-layered security, trust scoring, agent-to-agent communication, and observability dashboard
ODIN exposes 18 tools across three HTTP servers (CLI, A2A, Dashboard) with significant definition gaps. Tool names lack consistent verb-noun structure (e.g., 'agent_card_discovery' vs 'agent_chat'). Most tools have descriptions (15/18), but they are generic and lack actionable context for LLM selection. Input schemas are present for 8 tools but lack type definitions and parameter descriptions for most. Output schemas are entirely undocumented. No error handling guidance, no pagination support, no idempotency markers. Security-critical tools (skill_install, mcp_server_connect, config_update) lack permission gates and audit trail documentation. Tool composition is poor: agent_chat and dashboard_chat appear to duplicate functionality; no clear chaining between discovery and action tools.
Receive and process A2A (Agent-to-Agent) messages with signature verification, DID resolution, and trust score validation
Retrieve agent card for public discovery at /.well-known/agent.json containing agent identity and capabilities
Send chat message to Odin agent and receive response with security decision logging
Get agent security status including trust score, trust mode, and audit report
Update LLM configuration including model, temperature, max tokens, and base URL
Send chat message to agent and receive response via dashboard API
Retrieve current dashboard state including KPIs, trust score, security status, and system metrics
Output schemas completely undocumented. No tool returns a documented response structure. LLMs cannot plan downstream calls or extract required fields (e.g., task_id from task_send, agent_id from peer_discover). This violates pattern:tool and forces agents to guess field names.
Security-critical tools (skill_install, mcp_server_connect, config_update, llm_config_update) lack permission gates and audit trail documentation. No evidence of access control checks or logging. Agents can install arbitrary code or reconfigure LLM endpoints without authorization.
Duplicate/overlapping tools: agent_chat and dashboard_chat both send messages to the agent. No clear distinction in descriptions. Naming convention inconsistent (agent_* vs dashboard_*). LLMs will struggle to choose between them.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Check A2A server health status and active task metrics
Update LLM provider and model configuration at runtime
Connect to an MCP server and register it for tool availability
Search agent memory for information matching a query
Discover peer agent capabilities and retrieve their agent card
Send heartbeat to peer agent to verify connectivity
Update dashboard settings for a specific section
Install a new skill/capability with code, description, and permission declarations
Cancel a running task by task ID
Send a task to a peer agent with instruction payload and receive task ID for tracking
Query the status of a previously sent task by task ID
Input parameters lack type definitions and descriptions. E.g., a2a_message_receive accepts 'payload' as object with no schema; skill_install 'permissions' is array with no item type or validation. Parameters like 'section' in settings_update are free-form strings with no enum or constraint.
No error handling guidance. Tools lack recovery hints (e.g., 'If task not found, try task_status_query with a different taskId'). No categorization of errors as retryable vs fatal. Agents cannot self-correct on failures.