Skip to main content
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 pullskills_list, skills syncskills_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.

Tool-to-command map

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.