Local agent coordination bus (MCP server + dashboard) for multi-agent orchestration with workspace-scoped communication, handoffs, approvals, and governance
Okto Nexus defines 24 tools with consistent naming (verb_noun pattern: agent_*, session_*, inbox_*, message_*, handoff_*, event_*, poll_*, nexus_*) and all have descriptions. However, critical gaps exist: (1) Input schemas are visible but many lack detailed parameter descriptions, e.g., 'target' in message_create and handoff_create are typed as 'object' with minimal guidance on structure; (2) Output schemas are entirely undocumented, no tool specifies what fields it returns, forcing LLMs to guess; (3) Error handling is absent, no tool describes recovery paths or categorizes failures; (4) Parameter constraints are missing, no enums, ranges, or format specs despite many parameters accepting constrained values (e.g., 'stream' in event_cursor, 'channel' in message_create). Descriptions average ~80 chars, below the 194-char baseline for A+ tools. Session management tools (session_open, session_close, session_heartbeat) expose session_secret as a parameter, which violates secret-injection patterns, secrets should never appear in tool params. Tools like handoff_create and message_create accept complex 'target' objects but provide no schema or examples of valid structures.
Discover all agents in the workspace with their identities and advertised capabilities
Return the calling agent's identity, role, capabilities, permissions, and communication style
List all advertised capabilities in the workspace
Get or set the event cursor for an agent to anchor event monitoring
Fetch events by cursor position (polling alternative to event_wait)
Long-poll for events with a timeout, advancing the cursor
Cancel an active handoff
Output schemas completely undocumented. No tool specifies what fields it returns. LLMs cannot plan downstream calls or extract required data (e.g., what does agent_list return? agent IDs? capabilities? metadata?). This violates pattern:tool and pattern:response-shaper.
Session credentials (session_secret) exposed as tool parameters in session_close, session_heartbeat, inbox_pull, inbox_ack, inbox_extend, message_create, handoff_claim, handoff_complete, handoff_verify, handoff_reject, handoff_cancel, poll_token_issue, poll_token_revoke. Secrets in params leak into agent logs and traces. Violates pattern:secret-injection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Claim a handoff as the executing agent
Mark a claimed handoff as complete with a result
Create a handoff (work assignment) to another agent or pool of agents
Reject a handoff with a reason
Verify a completed handoff result
Acknowledge (mark as read) messages in the inbox
Get the count of unread messages in the agent's inbox
Extend the retention of messages in the inbox
Pull unread messages from the agent's inbox
Create and send a message (broadcast or direct) to other agents
Get server metadata, version, features, and configuration
Issue an ephemeral poll token (nxsept_) for remote event monitoring without carrying the permanent API key
Revoke an ephemeral poll token
Close an active session
Advance the session heartbeat to maintain active status
Open a session for an agent in a workspace, returning a session_secret for authenticated calls
Resolve a workspace by project_root path
Complex parameters (target, result) lack schema definition and examples. 'target' in message_create and handoff_create is typed 'object' with description 'Target specification (broadcast, direct, capability, role, etc.)' but no nested schema. LLMs cannot construct valid payloads. Violates pattern:constrained-input.
No error handling guidance. Tools do not describe failure modes, recovery paths, or categorization (retryable vs user-fixable vs fatal). Violates pattern:recovery-guide and pattern:error-classification.
Parameter constraints missing. 'limit' in inbox_pull lacks min/max bounds. 'timeout_seconds' in event_wait has no range. 'ttl_seconds' in poll_token_issue has no guidance. Unbounded numeric params let LLMs pass absurd values. Violates pattern:constrained-input.