The MCP server’s contract with the CLI is 1:1: every remote-capable moda command is exposed as exactly one MCP tool with the same name (kebab-case becomes snake_case, subcommand spaces become underscores) and the same wire behavior — same endpoints, same query parameters, same encodings, same warnings. A few tools rename where the CLI verb implies local file I/O the server cannot do (skills pull → skills_list, skills sync → skills_push); the mapping below is the full list. Each tool’s registration carries the command it mirrors in _meta["dev.moda/cli_command"], and the manifest tool returns this entire map machine-readably at runtime.
All 53 tools, grouped by toolset. Writes? reflects each tool’s readOnlyHint annotation — what approval-gating clients see.
fix is a pure read by default; wait: true turns each poll into an advance POST — the only thing that moves a fix through the pipeline — which is why it is not annotated read-only. fix_checkout performs no server-side write itself, but it is deliberately not annotated read-only so clients gate the checkout-and-deliver flow behind approval.
Wire parity contract
The server ports the CLI’s request-building rules exactly; anything the backend sees is byte-for-byte what the CLI would have sent. The rules:
Timeout budgets
Per-call timeouts mirror the CLI’s budgets. Calls not listed use the 30-second default.
Deliberate deviations
Five behaviors intentionally differ from the CLI. Each is also called out in the affected tool’s description.
CLI-only commands
Commands that open a browser, manage local credentials, or read and write your repo have no MCP tool. The manifest tool returns this list with the same reasons.
Next steps
- MCP server — endpoint, authentication, toolsets, and client setup.
- MCP tool reference — every tool with its parameters and example output.
- CLI reference — the
moda commands these tools mirror, with flags and trimmed outputs.