cmux MCP: expose first-class agent dispatch tools
The cmux MCP server now exposes agent_dispatch, agent_steer, agent_briefs_list, and agent_report. Each tool routes through acpmux's structured dispatch RPC and carries brief ids, target host/session, stop condition, status, and sender metadata. Calls accept arbitrary registered harness names, including Qwen, OpenCode, and Pi, and never require scp, ssh, a remote path, or shell parsing.
Changelog
Added: harness-agnostic agent dispatch, steer, brief-list, and report MCP tools.
Validation
pr-overlapbefore edits: no overlap.- Rustfmt on changed files,
git diff --check, andscripts/cmux-next/prepush-gate.pypass. - Focused MCP tests include a Qwen dispatch fixture and steer/list/report routing.
- Full cargo checks are routed to the fleet; none ran on overloaded huge-blue.
Load and per-host capacity remain warn-only in the tool descriptions and acpmux contract; no launch is refused for load.
agent-identity footer
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
The MCP server now exposes agent_dispatch, agent_steer, agent_briefs_list, and agent_report, making agent dispatch available without shell-based handoffs.
- Dispatch supports registered harnesses, target and host selection, stop conditions, and idempotency keys; harness and model are combined into the launcher selector.
- Steer and report use persisted brief IDs; brief listing supports status and limit filters.
- Fleet placement rules still apply, but load and per-host capacity remain warnings and do not block launches.
- Where no acpmux daemon is reachable the tools fail as unavailable; timed-out mutations are marked in progress and retryable with the same idempotency key.