Skip to main content
Glama

cli-bridge

CI PyPI

A Model Context Protocol server that lets the AI assistant you're talking to consult the other AI CLIs installed on your machine — Claude Code, Codex, Gemini, Mistral, opencode, Ollama, Apple fm, … Each lane spawns the official CLI as a subprocess: no API keys, no token extraction, read-only by default.

Dependencies: the Python stdlib and mcp (1.x or 2.x). No daemon.

What it does

ask_gemini(task="find the bug across ./src", cwd="path/to/repo")     # one lane (1M-token context)
ask_apple(task="what's wrong in this UI?", images=["shot.png"])      # vision, on-device, $0
ask_all(task="…")                                                    # every free lane in parallel + disagreement score
ask_cascade(task="…")                                                # cheapest→strongest, skips cooled-down lanes
ask_best(task="…", mode="deep")                                      # router picks; rate_lane teaches it
ask_build(lane="opencode", task="add retry with backoff")            # build in a throwaway worktree → diff
review_diff(base="origin/main", focus="security")                    # multi-model review, severity-ranked
debate(task="which migration strategy?", vote="borda")               # N blind answers, peer-ranked
workflow(preset="converge", task="is this migration safe?")          # author → blind arbiter → cross-family peers
git_text(kind="commit")                                              # Conventional Commit from the staged diff

Every ask_<lane> returns a thread id; reuse it (even on another lane) for a multi-model conversation that survives /compact. conversations lists or replays threads.

Tools

15 fixed tools + one ask_<lane> per installed CLI:

  • Consult: ask_<lane>, ask_all, ask_cascade, ask_best, conversations, list_models

  • Build: ask_build (mode=isolated → diff, mode=direct → zone-guarded writes; with mode=direct, async=true → steerable via job)

  • Review: review_diff (focus=code|security), debate (vote=judge|borda), workflow (presets: refine_plan, map_review, research_verify, fanout_compare, converge, premortem, test_plan, challenge), git_text (kind=commit|pr)

  • Operate: job (action=status|result|cancel|list|tail|steer), rate_lane, set_lane_cost, doctor, setup

CLI_BRIDGE_TOOLS=all adds batch_run (journaled fan-out) and reset_lane_state; CLI_BRIDGE_TOOLS=default,batch_run extends the default; a plain comma list is exactly those. Usage and lane health are MCP resources (cli-bridge://usage-summary, cli-bridge://lane-stats). Full reference: docs/TOOLS.md.

There is also a human CLI, cli-bridge doctor|ask|ask-all|ask-best|build|review-diff|security-review|test-plan|premortem|stats|usage|jobs|set-cost (--json where it makes sense). cli-bridge build <lane> "<task>" prints the worktree diff; --apply lands it as unstaged changes.

Related MCP server: cli2mcp

Writing code safely

  • isolated (default): the delegate edits a throwaway git worktree and you get a diff. Your tree is untouched.

  • direct: writes real files, but only inside the zone you declare, behind a per-zone lock with a post-turn zone-violation check; undo is zone-scoped. async=true makes it steerable (job action=tail|steer) with an executable Definition-of-Done (dod_cmd).

CLI_BRIDGE_VERIFY_PLAN_READONLY=1 flags (never reverts) a read-only delegate that wrote files anyway. Re-entry is depth-capped (CLI_BRIDGE_MAX_DEPTH, default 1). Delegates run in the caller's cwd, else CLI_BRIDGE_DEFAULT_CWD, else the host's MCP workspace root.

Install

Prerequisites: Python 3.12+, uv, and at least one AI CLI installed and logged in.

uvx --from cli-bridge-mcp cli-bridge doctor        # what cli-bridge can see (--deep probes each lane)

Wire it into your host:

  • Claude Code: claude mcp add cli-bridge -- uvx cli-bridge-mcp (or the plugin: claude plugin marketplace add JoaoBerne/cli-bridge-mcp && claude plugin install cli-bridge@cli-bridge-mcp).

  • Any other MCP host (Codex, Cursor, VS Code, Zed, Claude Desktop, …):

    { "mcpServers": { "cli-bridge": { "command": "uvx", "args": ["cli-bridge-mcp"] } } }

    Per-host config paths: docs/HOSTS.md. Full example with env vars: examples/mcp.example.json. GUI hosts launch servers with a minimal PATH; cli-bridge also searches the usual install dirs, or point a lane at its binary with CLI_BRIDGE_<LANE>_BIN=/full/path.

Restart the host, then ask it to consult a lane ("ask gemini to read ./src and find the bug"). cli-bridge-mcp is the server entry point; cli-bridge is the human CLI.

Configuration

Everything is env (set in the MCP server entry) or ~/.config/cli-bridge/config.json (env wins). The knobs that matter:

CLI_BRIDGE_PROFILE=balanced            # saver = free-only fan-out · balanced = paid when asked · max = best
CLI_BRIDGE_<LANE>_COST=free|limited|paid
CLI_BRIDGE_<LANE>_ENABLED=false        # hide a lane
CLI_BRIDGE_<LANE>_MODEL=<model-id>
CLI_BRIDGE_<LANE>_DAILY_LIMIT=<runs/day>          # enforced at spawn
CLI_BRIDGE_<LANE>_CREDITS_PER_1K=<credits>        # makes CLI_BRIDGE_DAILY_CREDIT_CAP enforceable
CLI_BRIDGE_<LANE>_MIN_INTERVAL_S=2     # anti-burst pacing for a rate-limited free tier
CLI_BRIDGE_TERSE=off|lite|full|ultra
CLI_BRIDGE_GUARD=off|warn|strict       # injection guard on delegate output
CLI_BRIDGE_CACHE_TTL_S=0               # >0 enables the response cache
CLI_BRIDGE_TRACE_FOOTER=off            # hide the JSON trace footer in reports
CLI_BRIDGE_TOOLS=all                   # tool surface (see above)

doctor --deep (or doctor(deep=true)) live-checks every free lane, its CLI version and its model list, and reports what changed since the previous deep probe: run it weekly and you learn about a renamed flag or a new model before a delegation fails.

set_lane_cost (or cli-bridge set-cost) records what a lane costs you, persisted to the config file. Cost tiers are sourced defaults, never read from your account (docs/COSTS.md); the full spend model is in docs/BUDGET.md.

Lanes

Built-in: Claude Code, Codex (gpt), Gemini (+ Antigravity agy), Mistral (Vibe), opencode, Ollama (local, $0), Apple Foundation Models (fm, on-device, $0), Qwen Code, Copilot, Cursor, Grok, and Apple PCC (hidden until APPLE_FM_SERVE_URL is set — it talks to a fm serve you start from Terminal yourself; see examples/apple-fm-serve.lane.json).

images=[…] works on the vision lanes (apple, ollama, opencode, gpt, gemini); whether the image is actually read depends on the model behind the lane.

Other CLIs are a few lines of JSON via CLI_BRIDGE_LANES_FILE: examples/local-runtime.lane.json (LM Studio, MLX, llama.cpp; runtime table in examples/local-first-host.md), examples/community-lanes.json (Aider, Goose, Plandex, Amp, Crush, Amazon Q, Droid), and any OpenAI-compatible endpoint via curl or the bundled cli-bridge-openai bridge (examples/openai-compatible.lane.json).

Known limitations

  • No token or key extraction, but non-interactive use of a vendor CLI isn't formally sanctioned everywhere.

  • Async jobs are in-process: a server restart marks running jobs interrupted. batch_run / workflow journal each task and resume via resume_id.

  • The injection guard is heuristic. Treat delegate output as data.

  • Token/credit figures are estimates (chars/4 × your CREDITS_PER_1K).

  • Experimental lanes (qwen, copilot, grok, community, images=): doctor --deep checks each CLI's --help on your machine.

Development

uv venv && uv pip install -e . pytest pytest-asyncio ruff
pytest -q            # no real CLI or network needed
ruff check src/ tests/

Eval harness (deterministic scorer, outside the package): benchmarks/. History: CHANGELOG.md. Layout and rules: AGENTS.md, docs/ARCHITECTURE.md.

License

Apache 2.0

Available Tools

6 tools
doctorA
Read-only

Health check: which CLIs are installed, which is the host, paid lanes, defaults, current cost profile. Pass deep=true to also probe each lane with a tiny live call (checks auth/quota — uses a bit of free quota; skips paid lanes).

ParametersJSON Schema
NameRequiredDescriptionDefault
deepNoLive-probe each free lane's auth.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds critical behavioral context: deep=true makes a tiny live call, uses a bit of free quota, and skips paid lanes. This goes beyond the annotation to explain side effects and cost behavior, which is essential for an agent to decide whether to use deep mode.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two well-structured sentences. The first front-loads the purpose with a compact list of checked items. The second efficiently explains the deep flag with its key trade-offs. No wasted words; every clause adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only tool without an output schema, the description adequately explains what the check covers and the deep behavior. It doesn't describe the return format, but the enumerated list of checked items gives a clear picture of the output content. This is fairly complete given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the 'deep' parameter as 'Live-probe each free lane's auth.', so the baseline is 3. The description enhances this by specifying that deep=true 'uses a bit of free quota' and 'skips paid lanes', adding cost and scope semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Health check') and enumerates the exact resources inspected: installed CLIs, host, paid lanes, defaults, and current cost profile. This clearly distinguishes it from siblings like setup, lane_stats, usage_report, usage_budget, and reset_lane_state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly frames when to use this tool—as a health check for environment state and lane status—and provides detailed guidance on the deep=true flag, including its cost and scope. It doesn't explicitly name alternatives or exclusion criteria, but context is sufficient for an agent to choose this over sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lane_statsA
Read-only

Per-lane health: total runs, failures, consecutive failures/timeouts, and any active cooldown (a lane in cooldown is skipped by ask_all until it clears).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds semantic context about cooldown (lanes in cooldown are skipped by ask_all), which helps interpret the reported value. It does not disclose return format or pagination, but the read-only nature is already covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the purpose and lists the key metrics, with a parenthetical clarifying cooldown semantics. Every word earns its place and there is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all the tool's value propositions: the metrics it reports and the meaning of cooldown. With zero parameters and read-only annotations, the context is largely complete. However, since there is no output schema, it does not specify the return data structure (e.g., a map keyed by lane name), which an agent would need to parse the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema description coverage is trivially 100%. With no params, the baseline is 4, and the description adds meaningful context about what the tool reports (per-lane health metrics), which is essential given the empty input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides per-lane health metrics (total runs, failures, consecutive failures/timeouts, and active cooldown), which is specific and distinct from sibling tools like usage_report or reset_lane_state. It lacks an explicit action verb but the resource and scope are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used for inspecting lane health, but it does not explicitly say when to prefer it over alternatives like doctor or usage_report, nor does it provide exclusions. The cooldown note adds context about lane behavior but not direct usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reset_lane_stateA

Clear a lane's cooldown + failure counters (e.g. after you re-logged in or your quota reset). Pass the lane key, e.g. 'gemini'.

ParametersJSON Schema
NameRequiredDescriptionDefault
laneYesLane key to reset (e.g. gemini, gpt).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read-only, non-destructive operation. The description adds specifics about what state is affected (cooldown and failure counters) and the rationale (re-login or quota reset), giving behavior context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action and followed by a relevant usage context and example. Every word earns its place; no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool, the description covers the purpose, when to use it, and what state will be cleared. It does not need to explain return values since there is no output schema and the operation is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the lane parameter with an example. The description reinforces this with 'Pass the lane key, e.g. 'gemini' and a practical example, adding value beyond the schema. Since schema coverage is 100%, the baseline is 3, but the example earns a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (clear) and the target (a lane's cooldown and failure counters). It distinguishes itself from sibling tools like lane_stats and usage_report by specifying it resets state rather than reporting or analyzing. The example 'gemini' further clarifies the resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete use cases: 'after you re-logged in or your quota reset.' This gives clear context for when to use the tool. However, it does not explicitly mention when not to use it or name alternatives, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setupA
Read-only

Show the cost-profile choice (saver/balanced/max) to walk the user through configuring how cli-bridge spends paid credits/quota. Call this on first use if the profile isn't set, ASK the user, then tell them how to set it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false. The description adds context that this is a walkthrough that presents choices and tells how to set the profile, not actually mutate state. It implies interactivity ('ASK the user') but doesn't specify behavior if the profile is already set, which is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core function, followed by usage context. Every word earns its place, no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 0-parameter informational tool with no output schema, the description covers purpose, timing, and content. It mentions the profile choices and the ask-action. The only missing piece is an explicit statement that it doesn't modify state, but annotations cover that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters and schema coverage is 100%. No parameter explanation is needed; baseline 4 applies. The description adds no param info, but none is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to show cost-profile choices (saver/balanced/max) and guide the user through configuring spending. The specific verb 'show' and the resource 'cost-profile choice' distinguish it from sibling tools like usage_report or reset_lane_state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: 'Call this on first use if the profile isn't set'. It also instructs to 'ASK the user', which clarifies the interactive workflow. It doesn't mention when not to use, but the conditional is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usage_budgetA
Read-only

Per-lane runs since UTC midnight vs an optional CLI_BRIDGE__DAILY_LIMIT (ENFORCED at spawn once reached), plus estimated tokens/credits spent today. Estimates only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable context by noting the data is 'Estimates only' and that the daily limit is 'ENFORCED at spawn once reached', which clarifies the tool's non-authoritative, informational nature and the enforcement behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that packs in all essential information without wasted words: the metric, the time window, the optional limit, the enforcement point, and the estimation caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there are no parameters, no output schema, and strong annotations, the description covers the core behavior sufficiently. It names the key data points (runs, limit, tokens/credits) but could have been slightly more explicit about the returned representation; overall, it is reasonably complete for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty, so there are no parameter semantics to clarify. The baseline score for zero parameters is 4, and the description appropriately avoids inventing parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly explains what the tool does: reports per-lane runs since UTC midnight against an optional daily limit, plus estimated token/credit spend. It is specific about the resource (per-lane usage) and scoping (since UTC midnight), but does not explicitly distinguish it from siblings like usage_report or lane_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The mention of 'ENFORCED at spawn once reached' implies the tool is useful for checking whether a lane's daily limit has been hit, but there is no explicit guidance on when to use this tool versus alternatives. The usage context is somewhat implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usage_reportA
Read-only

Local usage stats (this machine only): total runs, per-lane counts/success/avg latency, ESTIMATED tokens (chars/4) and credits (if CLI_BRIDGE__CREDITS_PER_1K is set), and recent calls. All token/credit figures are estimates, never exact.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoLimit to a recent window, e.g. '24h', '7d', '90m' (default: all).
output_formatNotext (default) or json.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/destructiveHint annotations, the description adds valuable context: the scope is local-only, token figures are estimated using a chars/4 approximation, credits depend on an environment variable, and all token/credit numbers are explicitly 'never exact'. This is strong transparency about accuracy and conditional behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and every piece of information earns its place. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the read-only annotations, fully documented schema, and simple report nature, the description covers the essential scope, estimation caveats, and conditional credits. The lack of an output schema is a minor gap, but the description's mention of 'recent calls' provides enough context for expected return content.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters fully (since and output_format) with 100% coverage. The description does not add any parameter-specific meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a local usage report covering total runs, per-lane metrics, token estimates, credits, and recent calls. It provides specific scope ('this machine only') that distinguishes it from potentially broader stats tools, though it doesn't explicitly name sibling alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (for local usage stats) but gives no explicit guidance on when not to use it or how it compares to siblings like usage_budget or lane_stats. There are no exclusions or alternative tool references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.2.0
    • First observeddoctor
    • First observedlane_stats
    • First observedreset_lane_state
    • First observedsetup
    • First observedusage_budget
    • First observedusage_report

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

Tools are mostly distinct: doctor focuses on overall health and auth, lane_stats on per-lane health and cooldowns, usage_report on local totals, usage_budget on daily limits, and reset_lane_state on clearing state. Some overlap exists between doctor and lane_stats, but descriptions clarify the boundaries.

Naming Consistency3/5

Names mix single verbs (doctor, setup) with noun phrases (lane_stats, usage_report, usage_budget, reset_lane_state). The verb_noun pattern is not consistent across the set, though the names themselves are descriptive and readable.

Tool Count5/5

Six tools is well-scoped for a CLI bridge management server, covering health, usage, budget, and state reset without redundancy or bloat.

Completeness4/5

The domain of monitoring and managing CLI lanes is reasonably covered: health checks, usage stats, daily budgets, and state reset are all present. A minor gap is the lack of a direct configuration tool (e.g., setting the cost profile), though setup guides the user through it.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to call any CLI tool by scanning its help output and serving it as an MCP server.
    1
    GPL 3.0
  • A
    license
    B
    quality
    F
    maintenance
    A universal MCP server that automatically discovers and registers CLI tools as AI-powered agents with persona configuration, enabling any CLI tool to be used as an MCP tool.
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Universal MCP server that wraps any CLI tool, enabling AI assistants to run commands via natural language.
    MIT