Context
From DoltHub Discord feedback (2026-04-03): Tim Sehn noted that Beads (popular Dolt-based agent memory tool) found agents prefer CLI over MCP. Recommendation: expose the same operations as a CLI tool.
Assessment
Context differs from Beads — Right Reasons is agent-to-agent where MCP is the native protocol. CLI would primarily serve developer debugging and manual operations, not agents. Current workarounds exist (query_sql MCP tool, dolt sql built-in CLI).
Decision: implement after O12 (EPICAL E2E pipeline)
Not a blocker for anything. Build when the core pipeline is stable.
Proposed scope
- Python CLI using
click, reusing existing Config/DoltDB classes
- Same
pyproject.toml package, separate entry point: rr = "rr_cli.cli:main"
- ~200 lines of code
- Plain text output by default,
--json flag for machine-readable output
Proposed commands (1:1 mapping to MCP tools)
rr list-objects [--layer] [--type] [--search]
rr get-object <id>
rr list-relations [--from <id>] [--to <id>] [--type <type>]
rr traverse <id> [--direction up|down] [--depth <n>]
rr explain <id>
rr schema
rr query "<sql>"
rr session create [--source <text>]
rr propose-object <session_id> ...
rr propose-relation <session_id> ...
rr promote <candidate_id>
rr ops-contract generate <external_ref> <description> [--kind <kind>]
rr ops-contract get <id>
rr ops-contract list [--status <status>]
rr status
rr diff [<from_commit> <to_commit>]
rr commit -m "<message>"
Files to create
mcp-server/rr_cli/cli.py
mcp-server/rr_cli/__init__.py
Files to change
mcp-server/pyproject.toml (add CLI entry point + click dependency)
Context
From DoltHub Discord feedback (2026-04-03): Tim Sehn noted that Beads (popular Dolt-based agent memory tool) found agents prefer CLI over MCP. Recommendation: expose the same operations as a CLI tool.
Assessment
Context differs from Beads — Right Reasons is agent-to-agent where MCP is the native protocol. CLI would primarily serve developer debugging and manual operations, not agents. Current workarounds exist (
query_sqlMCP tool,dolt sqlbuilt-in CLI).Decision: implement after O12 (EPICAL E2E pipeline)
Not a blocker for anything. Build when the core pipeline is stable.
Proposed scope
click, reusing existingConfig/DoltDBclassespyproject.tomlpackage, separate entry point:rr = "rr_cli.cli:main"--jsonflag for machine-readable outputProposed commands (1:1 mapping to MCP tools)
Files to create
mcp-server/rr_cli/cli.pymcp-server/rr_cli/__init__.pyFiles to change
mcp-server/pyproject.toml(add CLI entry point +clickdependency)