cli-bridge
It is an MCP server that lets an AI assistant delegate tasks to other installed AI CLIs (Claude Code, Codex, Gemini, etc.) as subprocesss, with read-only consultation and safe code-writing modes.
Consult CLIs:
ask_<lane>(e.g.ask_gemini,ask_gpt,ask_apple) sends tasks to individual AI CLIs and returns a thread id for multi-model conversations;conversationslists/replays threads.Fan-out and routing:
ask_allruns every free lane in parallel,ask_cascadegoes cheapest→strongest, andask_bestuses a learned router.Write code safely:
ask_buildreturns a worktree diff (isolated) or applies zone-guarded, lock-protected real writes (direct), with optional async steering viajob.Review and plan:
review_diffdoes multi-model security/code reviews,debateruns blind peer-ranked answers,workflowprovides presets likeconvergeandpremortem, andgit_textgenerates commit/PR messages.Operate and manage:
jobcontrols async jobs,rate_laneteaches the router,set_lane_costrecords costs,reset_lane_stateclears cooldown/failures,doctor --deepprobes lane health, andsetupwalks through cost-profile configuration.Monitor usage:
usage_report,usage_budget, andlane_statsreport runs, failures, latency, cooldowns, estimated tokens/credits, and daily-limit enforcement.
Allows using Apple's on-device AI CLI for vision tasks and offline inference.
Allows using Google's Gemini CLI with 1M-token context, fresh knowledge, and vision.
Allows running local AI models via Ollama for free cross-checks and offline tasks.
Provides security review analysis based on OWASP guidelines.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cli-bridgeGenerate a social card image using GPT lane"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
cli-bridge
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 diffEvery 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_modelsBuild:
ask_build(mode=isolated→ diff,mode=direct→ zone-guarded writes; withmode=direct,async=true→ steerable viajob)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 thezoneyou declare, behind a per-zone lock with a post-turn zone-violation check; undo is zone-scoped.async=truemakes 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 withCLI_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/workflowjournal each task and resume viaresume_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 --deepchecks each CLI's--helpon 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 toolsdoctorARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| deep | No | Live-probe each free lane's auth. |
TDQS
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.
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.
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.
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.
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.
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_statsARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| lane | Yes | Lane key to reset (e.g. gemini, gpt). |
TDQS
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.
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.
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.
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.
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.
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.
setupARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_budgetARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_reportARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Limit to a recent window, e.g. '24h', '7d', '90m' (default: all). | |
| output_format | No | text (default) or json. |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.2.0- First observed
doctor - First observed
lane_stats - First observed
reset_lane_state - First observed
setup - First observed
usage_budget - First observed
usage_report
TDQS
Scored across 6 tools
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.
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.
Six tools is well-scoped for a CLI bridge management server, covering health, usage, budget, and state reset without redundancy or bloat.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- FlicenseAqualityDmaintenanceAn MCP server that bridges multiple AI clients (Claude, Gemini, Codex, OpenCode) so they can call each other as tools.123 npm72-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to call any CLI tool by scanning its help output and serving it as an MCP server.1GPL 3.0
- AlicenseBqualityFmaintenanceA 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.41MIT
- AlicenseNot gradedqualityCmaintenanceUniversal MCP server that wraps any CLI tool, enabling AI assistants to run commands via natural language.MIT