ypollak2/llm-router
This server is an intelligent LLM routing system that classifies prompts and directs them to the cheapest capable model, saving 35–80% on AI costs while maintaining quality. Key capabilities include:
Smart Routing & Classification
llm_route,llm_auto,llm_stream,llm_classify— classify prompt complexity and route to optimal LLMs (budget/balanced/premium tiers) with budget-pressure awarenessllm_reroute,llm_approve_route— override or approve pending high-cost routing decisionsllm_select_agent— pick the best CLI agent (Claude Code, Codex, Gemini CLI) for session-level routing
Task-Specific LLM Tools
llm_query,llm_code,llm_analyze,llm_generate,llm_research,llm_edit— route prompts tailored to general queries, coding, analysis, creative generation, web-grounded research, or code editing
Media Generation
llm_image,llm_video,llm_audio— generate images (DALL-E, Flux, Stable Diffusion), video (Runway, Kling, Veo), or speech (ElevenLabs, OpenAI TTS)
Multi-Step Orchestration
llm_orchestrate,llm_pipeline_templates— decompose complex tasks into multi-LLM pipelines (research reports, competitive analysis, etc.)
Cost, Budget & Usage Monitoring
llm_usage,llm_savings,llm_gain,llm_session_spend,llm_budget,llm_quota_status— real-time cost tracking, savings dashboards, quota balances, and anomaly warnings across Claude, Codex, Gemini, and external APIsllm_check_usage,llm_update_usage,llm_refresh_claude_usage— manage Claude subscription usage
Quality & Performance Analytics
llm_quality_report,llm_quality_guard,llm_benchmark,llm_model_eval,llm_model_usage,llm_model_export— routing accuracy metrics, model quality scores, degradation alerts, and exportable tracking datallm_rate— rate routing decisions to improve future routing
Health, Providers & Configuration
llm_health,llm_hook_health,llm_providers,llm_setup— check provider/hook health and configure API keys (Ollama, OpenAI, Anthropic, Google, DeepSeek, Mistral, Groq, Perplexity, and more)llm_set_profile,llm_policy— switch routing profiles and view active policies
Filesystem Operations
llm_fs_find,llm_fs_rename,llm_fs_edit_many,llm_fs_analyze_context— use cheap models to find files, generate rename commands, perform bulk edits, and analyze workspace context
Team & Collaboration
llm_team_report,llm_team_push,llm_digest,llm_dashboard— team savings reports, Slack/Discord/Telegram webhooks, spend spike detection, and a local web dashboardllm_share_profile,llm_import_profile— share or import learned routing profiles with the community
Session & Cache Management
llm_save_session— summarize and persist session context for cross-session awarenessllm_cache_stats,llm_cache_clear— manage the prompt classification cache
Agoragentic Marketplace
agoragentic_task,agoragentic_browse,agoragentic_wallet,agoragentic_status— execute tasks, browse services, and manage USDC wallet on the Agoragentic capability marketplace
Integration for audio generation and text-to-speech capabilities.
Provides access to Gemini 2.5 Pro and 2.5 Flash models with a free tier (1M tokens/day), optimized for generation tasks and long-context processing.
Enables routing to locally-hosted models for zero-cost, privacy-preserving, offline inference as the first tier in fallback chains.
Provides access to GPT-4o, GPT-4o-mini, and o3 models for code generation, analysis, and reasoning tasks.
Integration for research and current events using Sonar and Sonar Pro search-augmented models to get factual, up-to-date information.
pip install llm-routing # installs the `llm-router` commandWhy people install this
You are on a Claude Pro or Max plan. You have not spent a cent beyond the subscription. And at 3pm you hit the five-hour limit and stop working.
The cause is not that you asked too much. It is that every prompt went to the premium model — "what does this error mean", "reformat this JSON", "is the service up" — and each one drew down the same quota as the architectural question you actually needed it for.
llm-router runs inside your coding tool's own lifecycle. It reads each prompt
before the model does, sends the routine ones to a local or cheap model, and
leaves your seat for the work that needs it. Same workflow, same commands, same
transcript — the model choice changes underneath.
Why a proxy cannot do this
Every other router in this category is a proxy: you point your agent at a local endpoint and it forwards requests using your API keys. That design has a hard limit — a proxy cannot intercept a session authenticated by a subscription, because there is no key to forward.
If you pay per token, a proxy serves you well and there are good ones. If you pay a flat monthly fee and the thing you run out of is quota, a proxy has nothing to offer, and that is the gap this fills.
Pays per token | Pays a subscription | |
What runs out | your invoice | your five-hour window |
Needs API keys | yes | no |
A proxy can help | yes | no — nothing to intercept |
llm-router helps | yes | yes |
Two things worth checking before you install
It works with zero API keys. On a Claude subscription, routing goes through MCP tools and local models. Adding keys widens the pool; nothing requires them.
The routing quality is measured by someone else. llm-router is scored on RouterArena, a third-party accuracy-versus-cost leaderboard. What was measured, what it cost, and what did not work is written up in docs/ROUTERARENA.md — including the negative results.
Related MCP server: MCP AI Router
On the RouterArena leaderboard
llm-router is benchmarked on RouterArena,
a community leaderboard scoring routers on accuracy versus cost, plus optimality,
robustness and latency.
The claim worth reading is not the badge. docs/ROUTERARENA.md states what was measured, on which split, what it cost to reproduce, and what failed — including that skill-cluster classification never beat simply always picking one model, and that tuning on a proxy split misled by 4.25 points. Rank moves as new routers land; see the live leaderboard for the current standing.
Quick Start
1. Install
pip install llm-routing
llm-router install2. Add providers (optional)
export OPENAI_API_KEY="sk-..." # GPT-4o, o3
export GEMINI_API_KEY="AIza..." # Gemini Flash/Pro (free tier available)
export OLLAMA_BASE_URL="http://localhost:11434" # Local models (free)
export OPENROUTER_API_KEY="sk-or-v1-…" # 343 OpenRouter models (qwen, deepseek, grok, …)Works with zero API keys on Claude Code Pro/Max subscriptions — routing uses MCP tools that call external models only when beneficial. Add OPENROUTER_API_KEY to unlock the open-weight workhorse pool used by the cost_aggressive policy.
3. Verify
llm-router health # Check provider connectivityIf you already use Claude Code, Codex, or Gemini CLI, keep your existing workflow and let llm-router choose models underneath it.
Example Routing
Prompt | Routed to |
"What does this Python error mean?" | Ollama / Gemini Flash / Codex |
"Refactor this endpoint" | GPT-4o / Gemini Pro |
"Design a distributed tracing strategy" | o3 / Claude Opus |
The exact chain depends on your configured providers, budget profile, and routing policy.
Works With
Tool | Mode | Savings (this host) |
Claude Code | Full auto-routing via hooks | 60–80% |
Codex CLI | Manual MCP tools · hooks 🔜 | 30–50% |
Gemini CLI | Full auto-routing via hooks | 50–70% |
VS Code / Cursor | Manual MCP tools · hooks 🔜 | 30–50% |
Any MCP client | Manual MCP tools | Varies |
Full auto-routing means hooks intercept prompts and route automatically with no workflow change.
Manual MCP tools means routing is available on demand through tools such as
llm_query.🔜 means the host supports prompt interception and we have not shipped it yet — not that it cannot be done. Codex CLI ships
UserPromptSubmit(enabled by default, and itsPreToolUsecan even rewrite arguments); Cursor shipsbeforeSubmitPrompt. Both can block a prompt before the model sees it, which is the same mechanism Claude Code uses today.
The full picture, including what each host genuinely cannot do and which payload fields have been verified against a real run rather than read off a docs page, is in guide/HOST_SUPPORT_MATRIX.md.
llm-router install # Claude Code (default)
llm-router install --host codex # Codex CLI
llm-router install --host gemini-cli # Gemini CLI
llm-router install --host vscode # VS Code
llm-router install --host cursor # CursorSee guide/HOST_SUPPORT_MATRIX.md for full details on each host.
Protect your Claude Code 5-hour quota
enforce: smart + mode: zero_claude makes prompts either complete externally or stop
before native Claude runs — see
guide/GETTING_STARTED.md.
How It Works
User prompt
│
▼
┌──────────────────────┐
│ Complexity Classifier │ ← Heuristic (free, instant) or Ollama/Flash ($0.0001)
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Free-First Router │ ← Tries cheapest model first, walks up the chain
│ │
│ Ollama (free) │
│ → Codex (prepaid) │
│ → Gemini Flash │
│ → GPT-4o / Claude │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Guards (parallel) │ ← Circuit breaker, budget pressure, quality check
└──────────┬───────────┘
│
▼
Response + cost logged to local SQLiteClassification is free for many tasks (regex heuristics catch ~70%) or near-free for ambiguous prompts when using local Ollama or Gemini Flash.
Features
Beyond "send cheap prompts to cheap models":
Secrets never leave your machine. A prompt containing an API key, token or private key routes to local models only — fail-closed, so it cannot reach an external provider.
Cost-inverted subscription routing. Free/local first for simple and moderate prompts, your one paid seat first for complex ones, and the seat demoted when its quota is strained. Opt in with
LLM_ROUTER_SUBSCRIPTION_PROVIDER.Automatic fallback with circuit breakers. A provider that fails or rate-limits is skipped, not retried into the ground.
You can see it working. A status line, terminal title and OS notification show the last model routed, savings and health — for hosts with no native statusline.
Session-end summary. Savings vs baseline, tier mix, per-provider cost, latency p50/p95/p99 and top routes.
Media and pipelines too.
llm_image/llm_video/llm_audio, andllm_orchestratefor multi-step research.
CLI
llm-router install # wire up your host (Claude Code by default)
llm-router health # provider connectivity
llm-router status # savings + quota at a glance
llm-router doctor # diagnose a broken setupFull command reference: guide/GETTING_STARTED.md
Providers
20+ providers, free-first. Ollama (local, free) leads the chain; OpenRouter (343 models behind one key) is the biggest single unlock; Gemini and Groq have usable free tiers. Anthropic works via your existing Claude subscription — no API key needed.
Every provider, its models, cost tier and env var: guide/PROVIDERS.md
Routing Policies
A policy sets how eagerly the router routes away from your premium model —
conservative (10–15% savings) through balanced (the default, 35–45%) to
cost_aggressive (70–85%, needs OPENROUTER_API_KEY).
llm-router policy set cost_aggressiveAll six policies, thresholds and the YAML schema: guide/POLICIES.md
MCP Tools
60 tools across routing, analysis, code, media, budget and diagnostics — exposed to any
MCP host. The default consolidated surface shows 11 front-door tools; set
LLM_ROUTER_SLIM=full for all 60.
Every tool with its signature: guide/TOOLS.md
Savings: How It Works
Savings are calculated by comparing actual spend against a baseline of routing every task to Claude Sonnet/Opus.
Methodology:
Each routed task logs: model used, tokens consumed, estimated cost
A baseline cost is computed as if the same tokens were processed by the most expensive model in the chain
Savings =
(baseline - actual) / baseline
Assumptions and limitations:
Baseline assumes you would have used Opus/Sonnet for everything (worst case)
Token estimates use
len(text) / 4approximation, not exact tokenizer countsCost data comes from LiteLLM's pricing tables (may lag provider price changes)
Savings vary significantly by workload — code-heavy sessions route more to cheap models
The router itself adds small overhead (classification costs ~$0.0001 per ambiguous task)
Observed range: 35–80% savings depending on policy and task mix. The "87%" figure in some docs represents a single-user peak over a specific development period, not a guaranteed outcome.
Trust, Privacy, and Local-First Design
llm-router runs entirely on your machine. There is no hosted proxy, no telemetry, no account required.
What | Where | Details |
Your prompts | Sent to configured providers | Exactly like using those providers directly |
API keys |
| Local files, never transmitted |
Usage logs |
| Unencrypted SQLite (filesystem permissions) |
Classification cache | In-memory | Cleared on process restart |
Hook scripts |
| Local shell scripts, inspectable |
What we do:
Scrub API keys from structured logs
Detect hook deadlocks before installation
Store all data locally in
~/.llm-router/Respect provider rate limits and TOS
What you should know:
Prompts are sent to whichever provider the router selects — review your provider's privacy policy
Usage logs (SQLite) are not encrypted at rest — use full-disk encryption if needed
The router cannot prevent model jailbreaks or prompt injection at the provider level
LLM_ROUTER_DIRECT_EXECUTION — read this before your first run
This is on by default. When enabled, hooks/auto-route.py tries to answer a prompt
locally before Claude Code sees it. For prompts it classifies as needing file work, it runs
a tool-calling agent loop that hands the local model three tools — write_file, edit_file
and run_command — unsupervised, with no confirmation step, for up to 15 iterations.
run_command executes through a shell.
What is actually enforced:
write_file/edit_fileare confined to the project root. This works as described.run_commandis filtered by a small regex blocklist of top-level destructive patterns.
What that blocklist does not stop (measured, not estimated): targeted deletes inside the
project (rm -rf ./src), $HOME deletes via shell expansion, git push --force,
git reset --hard, arbitrary npm/pip install, reads outside the project
(cat ../../.ssh/id_rsa), network exfiltration (curl -X POST … -d @.env), and echoing
API keys. It stops catastrophic system damage — not project damage, credential
disclosure, or exfiltration.
Turn it off:
export LLM_ROUTER_DIRECT_EXECUTION=falseRouting still works with it disabled; you lose only the local pre-answer path.
See SECURITY.md for the full analysis and the responsible disclosure policy.
Configuration
Everything is environment variables — no config file required to start:
export OPENROUTER_API_KEY="sk-or-v1-..." # biggest single unlock
export OLLAMA_BASE_URL="http://localhost:11434" # local, free
export LLM_ROUTER_POLICY="cost_aggressive" # routing policy
export LLM_ROUTER_ENFORCE="smart" # off | advise | smart | hardFull reference, config file schema and per-host overrides: guide/GETTING_STARTED.md
Documentation
Full index: guide/README.md
Document | Purpose |
Fastest path to working routing | |
Full setup walkthrough | |
Per-host feature comparison | |
Provider setup and model recommendations | |
| |
All 60 MCP tools with examples | |
Internal design and module structure | |
Common issues and fixes | |
Isolation suite for verifying routing health | |
Model cost/latency/quality table, regenerated by CI | |
Release notes (archive) |
Enterprise
llm-router is built for individual developers and small teams: local cost savings, zero
ops overhead, no hosted anything. If you need team-wide policy enforcement, audit export,
SSO or per-org budgets, that is what Chuzom is for.
Contributing
Contributions welcome. See CONTRIBUTING.md for full guidelines.
git clone https://github.com/ypollak2/llm-router.git
cd llm-router
uv sync --extra dev
uv run pytest tests/ -q # Run tests (1900+)
uv run ruff check src/ tests/ # Lint-|-----------|
| llm-routing | Current PyPI package (pip install llm-routing) |
| llm-router | CLI command and GitHub repo name |
| claude-code-llm-router | Deprecated legacy package (redirects to llm-routing) |
Available Tools
60 toolsagoragentic_browseA
Browse available services on the Agoragentic marketplace.
Shows trust-verified providers and their capabilities.
Returns: JSON list of available capabilities
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what the tool does (browse, show providers/capabilities) but does not disclose side effects, permissions, read-only nature, rate limits, or any limitations. The mention of 'trust-verified' is about result content, not 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?
Three concise sentences: first states purpose, second adds detail on what is shown, third specifies return format. No wasted words, information is front-loaded.
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 no-parameter browsing tool, the description covers purpose, what is shown, and return format. The output schema exists to handle return value details. Minor gap: no mention of read-only or idempotency, but overall adequate.
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?
There are zero parameters, so the description need not add parameter meaning beyond the schema. The schema already shows no input required. The description adds value by stating the return format (JSON list of capabilities), which aids understanding.
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 verb 'Browse' and the resource 'available services on the Agoragentic marketplace'. It distinguishes itself from sibling tools like agoragentic_status (status) and agoragentic_wallet (wallet) by focusing on marketplace services.
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 usage for browsing services but provides no explicit guidance on when to use this tool versus alternatives like agoragentic_status or other marketplace tools. No 'when not to use' or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agoragentic_statusA
Get llm-router agent status on Agoragentic.
Shows registration status, available seller slots, listings, etc.
Returns: Agent status as JSON
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It indicates a read operation ('Get... status') but does not disclose any behavioral traits such as side effects, rate limits, or authentication needs. The description is adequate for a simple status check but lacks additional context.
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 extremely concise: one sentence and a brief bullet about return value. It is front-loaded with the core action, and every word adds value without redundancy.
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 tool's simplicity (no parameters, output schema exists), the description is complete. It states the purpose, what is shown, and the return format (JSON). No additional information is necessary for correct invocation.
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 no parameters, and schema coverage is 100% (vacuous). The description correctly adds no parameter information since none exist, meeting the baseline expectation for zero-parameter tools.
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 'Get llm-router agent status on Agoragentic', specifying the verb and resource. It lists what is shown (registration status, available seller slots, listings), differentiating it from sibling tools like agoragentic_browse, agoragentic_task, and agoragentic_wallet.
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 usage when needing agent status but does not explicitly state when to use or not use this tool versus alternatives. No guidance on prerequisites or context is provided, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agoragentic_taskA
Execute a task on the Agoragentic capability marketplace.
Routes automatically to the best-matching trusted provider. Handles USDC settlement on Base L2 blockchain.
Args: task: Task type (e.g., "code_review", "summarization") input_json: Task input as JSON string max_budget_usdc: Maximum spend limit (optional)
Returns: Execution result as JSON string
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| input_json | Yes | ||
| max_budget_usdc | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses routing logic and USDC settlement on Base L2, but misses important behavioral details such as whether the tool is destructive, if it costs money, required permissions, or validation steps. Partial transparency but insufficient for full confidence.
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 concise and well-structured, with a clear purpose statement, parameter list, and return type. Every sentence is useful, and the key actions are front-loaded.
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 complexity of a marketplace tool with blockchain settlement, the description covers core purpose and parameters but omits prerequisites (e.g., wallet setup), error scenarios, budget enforcement behavior, and routing criteria. It needs more context for safe invocation.
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?
Schema coverage is 0%, so description compensates by listing parameters with explanations and examples (e.g., task types like 'code_review'). This adds value beyond the bare schema, though it lacks detailed format for input_json or allowed task enumerations.
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 executes a task on the Agoragentic capability marketplace, with specific verb 'Execute' and resource 'task'. It distinguishes from sibling tools like agoragentic_browse and agoragentic_status by focusing on task execution rather than browsing or status checking.
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 mentions automated routing to best provider, but provides no explicit guidance on when to use this tool versus alternative tool groups like llm_generate or llm_query. No when-to-use or when-not-to-use criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agoragentic_walletA
Check Agoragentic wallet balance and status.
Returns: Wallet info including balance, chain, and currency
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description implies a read-only check operation ('Check') but does not explicitly state behavioral traits such as authentication requirements, rate limits, or side effects. With no annotations, the description carries full burden; it is adequate but lacks depth.
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 action. No extraneous information. Every sentence serves a purpose.
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 read-only wallet check with no parameters and an output schema, the description is sufficiently complete. It covers what it returns, though behavioral details (e.g., read-only guarantee) are missing. Output schema likely covers return structure.
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?
Tool has zero parameters, so parameter semantics are not needed. Description adds value by explaining the return values (balance, chain, currency), which is beyond the input schema. Baseline for no params is 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?
Description clearly states 'Check Agoragentic wallet balance and status' using a specific verb and resource. It distinguishes from sibling tools like agoragentic_browse and agoragentic_status by focusing solely on wallet information.
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?
No guidance on when to use this tool versus alternatives. Does not specify prerequisites, limitations, or when not to use it. Sibling tools exist (e.g., agoragentic_browse, agoragentic_status) but no differentiation is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_analyzeA
Deep analysis task — routes to the strongest reasoning model.
Best for: data analysis, code review, problem decomposition, debugging.
Args: prompt: What to analyze. complexity: Task complexity — "simple", "moderate", or "complex". Analysis tasks default to at least moderate. Pass "complex" for multi-file reviews or architecture decisions that warrant Opus/o3. system_prompt: Optional system instructions. max_tokens: Maximum output tokens. context: Optional conversation context to help the model understand the broader task.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| context | No | ||
| complexity | No | ||
| max_tokens | No | ||
| system_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It explains model routing based on complexity parameter but omits important details such as cost implications, rate limits, or potential side effects (e.g., high token usage). The guidance on complexity levels is helpful but incomplete.
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 extremely concise: a one-line purpose statement followed by a bulleted list of parameters. Every sentence adds value, and the structure is front-loaded with the most important information. No redundant or irrelevant content.
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 tool's complexity (5 parameters, output schema exists), the description covers purpose, typical use cases, and parameter details. However, it lacks guidance on error conditions or how the output schema is structured. The presence of an output schema partially mitigates this, but additional context on expected results would improve completeness.
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 has 0% description coverage, so the parameter descriptions in the tool description add significant value. Each parameter is explained with usage notes (e.g., complexity defaulting to moderate, complex for multi-file reviews). This compensates for the schema gap, though further detail on system_prompt and context could enhance clarity.
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 explicitly states 'Deep analysis task — routes to the strongest reasoning model' and lists specific uses like data analysis and code review. This makes the purpose clear but does not contrast with sibling tools like llm_classify or llm_auto, leaving some ambiguity about when to choose this over others.
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 includes a 'Best for' section that implies appropriate use cases. However, it does not provide explicit guidance on when not to use the tool or mention alternative tools, leaving the agent to infer usage boundaries without clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_approve_routeA
Approve or reject a pending high-cost routing decision.
Use this when llm_route (or any routing tool) blocked a call because the estimated cost exceeded LLM_ROUTER_ESCALATE_ABOVE. The pending call is stored server-side until you approve or cancel it.
Args: approve: True to proceed with the call, False to cancel it. downgrade_to: Optional cheaper model to use instead of the blocked one (e.g. "gemini/gemini-2.5-flash" instead of "openai/o3").
| Name | Required | Description | Default |
|---|---|---|---|
| approve | No | ||
| downgrade_to | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool approves or cancels a pending call and that the call is stored server-side. However, it does not mention possible side effects like whether approval triggers immediate execution or cancellation removes the pending call, nor does it discuss error states. Still, the core behavior is transparent enough for an agent.
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 very concise: a single-sentence purpose, a short usage context paragraph, and a clear Args section. Every sentence adds value, and the structure front-loads the key action.
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 2-parameter tool with an output schema (not shown but present), the description covers purpose, usage, and parameters adequately. It lacks mention of error handling or timeout behavior for the pending call, but these are minor 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?
Schema coverage is 0%, so the description must explain parameters. It does so clearly: approve (boolean to proceed or cancel) and downgrade_to (optional string with an example like 'gemini/gemini-2.5-flash' for a cheaper model). This adds meaning well beyond the bare schema types.
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: 'Approve or reject a pending high-cost routing decision.' It specifies the verb (approve/reject) and resource (pending high-cost routing decision), and among siblings like llm_route and llm_reroute, this tool uniquely handles the approval step after a cost-based block.
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?
Explicitly states when to use: when llm_route (or any routing tool) blocked a call due to cost exceeding LLM_ROUTER_ESCALATE_ABOVE. It also explains the pending call is stored server-side, implying that you need to use this tool before the call is dropped. This leaves no ambiguity about the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_audioA
Generate speech/audio — routes to ElevenLabs or OpenAI TTS.
Args: text: Text to convert to speech. model: Optional model override (e.g. "openai/tts-1-hd", "elevenlabs/eleven_multilingual_v2"). voice: Voice selection (OpenAI: alloy/echo/fable/onyx/nova/shimmer. ElevenLabs: voice ID).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| model | No | ||
| voice | No | alloy |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It mentions routing to external services but does not disclose API dependencies, potential costs, latency, or side effects. The agent lacks critical context about external service requirements.
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 front-loaded with the core purpose in one sentence, followed by a compact argument list. It is efficient but could be slightly more concise by removing the 'Args' docstring format in favor of inline 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 explains parameter options but lacks important context such as return value type (audio data) and any output schema details. Considering the output schema exists, the description is adequate but not fully complete in behavior and usage context.
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?
Schema coverage is 0%, but the description adds meaningful details for all three parameters: it explains the text input, lists specific model options (e.g., 'openai/tts-1-hd'), and enumerates voice choices for both providers. This compensates well for the schema gap.
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 generates speech/audio and explicitly mentions routing to ElevenLabs or OpenAI TTS. It distinguishes itself from sibling tools like llm_image or llm_video which handle other modalities.
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 usage for text-to-speech conversion but does not explicitly state when to use this tool versus alternatives (e.g., other audio generation tools), nor does it provide any when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_autoA
Auto-routing wrapper with persistent savings tracking — works from any host.
Equivalent to llm_route but additionally:
Flushes pending hook-written savings records into SQLite before routing.
Appends a compact savings envelope every 5 calls so you can see the cumulative value across all sessions and hosts without running llm_savings.
Use llm_auto instead of llm_route when you are in a host that lacks a UserPromptSubmit hook (Codex CLI, Claude Desktop, GitHub Copilot) — the savings are tracked server-side, so they accumulate correctly regardless of which client triggered the call.
Args: prompt: The task or question to route. task_type: Optional hint — "query", "research", "generate", "analyze", "code". profile_override: Force a routing profile — "budget", "balanced", or "premium". system_prompt: Optional system instructions. context: Optional conversation context.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| context | No | ||
| task_type | No | ||
| system_prompt | No | ||
| profile_override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description must fully disclose behavioral traits. It clearly explains that the tool flushes pending hook-written savings records into SQLite before routing and appends a savings envelope every 5 calls, and that savings are tracked server-side. However, it doesn't mention potential side effects on the routing process itself (e.g., latency) or any error scenarios, but the core extra behavior is well communicated.
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 concise at about 160 words, with a logical structure: summary, differentiation from sibling, usage guidance, and parameter list. Every sentence adds value, and there is no redundant or extraneous 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?
Given the tool's complexity (routing with savings tracking, 5 params, no annotations), the description covers purpose, behavioral traits, usage guidelines, and all parameters. It does not describe the output schema, but since an output schema is provided separately, that is acceptable. It could mention error handling or response format, but the current completeness is sufficient for most use cases.
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?
Schema description coverage is 0%, so the description must compensate, and it does thoroughly. The 'Args' section provides clear, meaningful descriptions for all 5 parameters, including allowed values for task_type and profile_override, which are not enumerated in the schema. Each parameter's purpose and optionality are explicitly stated.
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 defines the tool as an auto-routing wrapper with persistent savings tracking, distinguishes it from the sibling llm_route by explaining the additional flushing and savings envelope behavior, and specifies it works from any host. The verb 'route' and resource 'prompt' are clear, and the scope is well-defined.
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 explicitly states when to use llm_auto over llm_route: 'Use llm_auto instead of llm_route when you are in a host that lacks a UserPromptSubmit hook (Codex CLI, Claude Desktop, GitHub Copilot).' It also provides context about server-side tracking, making the usage guidance extremely clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_benchmarkA
Show routing accuracy benchmarks by task type.
Accuracy is computed from llm_rate feedback (thumbs up/down). The more you rate responses with llm_rate, the more accurate this becomes.
Also shows an optional community export status if LLM_ROUTER_COMMUNITY=true.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden. It discloses that accuracy is based on user ratings (llm_rate) and that an optional community export status is shown if LLM_ROUTER_COMMUNITY=true. It does not mention data freshness, aggregation period, or any side effects. While it avoids contradictions, more behavioral details (e.g., real-time vs cached) would improve transparency.
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 concise: three sentences with no wasted words. The first sentence front-loads the primary purpose, followed by necessary context about accuracy computation and an optional feature. Every sentence earns its place.
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 no required parameters and an existing output schema, the description covers the essential aspects: what is shown (benchmarks by task type), how accuracy is derived (from llm_rate feedback), and a conditional element (community export). It is reasonably complete for a display tool, though it could mention expected output format or time range covered.
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 no parameters, so the input schema is empty (100% coverage, baseline 4). The description adds value by explaining what the tool shows (benchmarks, community export status) and the data source, which is beyond what the empty schema provides. Thus, it fully compensates for the lack of 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 states the tool's purpose: 'Show routing accuracy benchmarks by task type.' It uses a specific verb ('Show') and resource ('routing accuracy benchmarks by task type'), effectively distinguishing it from siblings like llm_rate (for rating) and llm_model_eval.
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 context about the data source (accuracy computed from llm_rate feedback) and notes that rating more improves accuracy, implying when it becomes more useful. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or best practices. The guidance is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_budgetA
Show real-time budget pressure for all configured providers (v5.0+).
Reads live budget state from the Budget Oracle, which normalises provider quota into a single pressure value (0.0 = fully available, 1.0 = exhausted).
Pressure sources by provider type: Local (Ollama, vLLM) — always 0.0 (free, no quota) Claude subscription — max(session_pct, weekly_pct, sonnet_pct) / 100 API-key providers — monthly spend / configured cap (0.0 if no cap)
Returns: A formatted budget summary with pressure bars per provider.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description fully discloses behavior: it reads from Budget Oracle, normalizes provider quota, details pressure calculation per provider type (local, Claude, API-key), and returns a formatted summary with pressure bars. This is comprehensive.
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?
Description is well-structured with clear sections: core purpose, calculation method, provider-specific behavior, and return value. Bullet points and efficient wording make it easy to parse.
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 zero-parameter tool with an output schema (exists but not detailed here), the description provides all necessary context: what it returns, how it works, and when to use it. No gaps identified.
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 has zero parameters, achieving 100% coverage. The description correctly adds no parameter information. Per guidelines, a baseline of 4 is appropriate for no-parameter tools.
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?
Description explicitly states 'Show real-time budget pressure for all configured providers', specifying both the verb 'show' and the resource 'budget pressure'. It clearly distinguishes itself from sibling tools like llm_quota_status or llm_usage by focusing on aggregated budget pressure.
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 explains that this tool is used to view live budget state normalized into a pressure value. While it doesn't explicitly state when not to use it, the context of sibling tools and clear purpose provides adequate guidance. Could be improved by mentioning when to use alternatives like llm_quota_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_cache_clearA
Clear the prompt classification cache.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose behavioral traits such as whether the action is destructive, reversible, rate-limited, or requires special permissions. It merely states the action without context.
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, efficient sentence with no extraneous words. It is front-loaded and instantly comprehensible.
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?
While the tool is simple and needs little context, the description omits any mention of output, side effects, or prerequisites. An output schema exists but is not referenced. Slightly insufficient for full context.
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 coverage is 100%, so there is no need for the description to add parameter details. The baseline score of 4 is appropriate.
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 'Clear the prompt classification cache' uses a specific verb ('Clear') and explicitly names the resource ('prompt classification cache'), making the tool's purpose immediately clear and 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?
No guidance is provided on when to use this tool versus alternatives like llm_cache_stats. The description does not mention prerequisites, effects, or situations where clearing is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_cache_statsA
Show prompt classification cache statistics — hit rate, entries, memory usage.
The cache stores ClassificationResult objects keyed by SHA-256(prompt + quality_mode + min_model). Budget pressure is always applied fresh, so cached classifications stay valid.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description adds value by explaining keying mechanism (SHA-256 of prompt, quality_mode, min_model) and validity condition (budget pressure applied fresh). This discloses behavioral traits beyond a simple read operation.
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: first states purpose and outputs, second explains caching behavior. No wasted words, front-loaded with key 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 zero-parameter tool with an output schema, the description fully explains what statistics are shown and why cached classifications remain valid. No gaps given complexity.
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?
No parameters exist, so baseline is 4. Description adds no parameter info, which is appropriate since none are needed.
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?
Description clearly states 'Show prompt classification cache statistics' with specific statistics listed (hit rate, entries, memory usage). Distinguishes from sibling tools like llm_cache_clear.
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?
Description implies usage for viewing cache performance but provides no explicit guidance on when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_check_usageA
Check real-time Claude subscription usage (session limits, weekly limits, extra spend).
Shows cached data if available. If no data cached, returns the JS snippet to run via Playwright's browser_evaluate (one call, no page navigation needed).
The budget pressure from this data feeds directly into model routing — higher usage = more aggressive downshifting to cheaper models.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses caching behavior, the JS snippet fallback with no page navigation, and downstream impact on model routing. It could be more explicit about read-only nature, but overall transparency is good.
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 three sentences, front-loading the main purpose and then adding details on caching and routing. No redundant information; every sentence adds value.
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 no parameters and an output schema (assumed complete), the description covers the tool's purpose, caching behavior, fallback mechanism, and downstream use. It is sufficient for an agent to understand when and how to invoke this 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?
With zero parameters, the baseline is 4. The description adds no parameter details because none exist, but the lack of parameters is clear from the schema. The description does not contradict or mislead.
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 checks real-time Claude subscription usage, mentioning specific limits like session and weekly limits. However, it does not explicitly differentiate from similar sibling tools like llm_usage or llm_quota_status, though the mention of real-time and JS snippet fallback provides implicit distinction.
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 explains when to use: for real-time usage check with caching and fallback to a JS snippet. It does not provide explicit guidance on when not to use or mention alternative tools, leaving the agent to infer context from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_classifyA
Classify a prompt's complexity and recommend which model to use.
Returns a smart recommendation considering complexity, daily token budget, quality preference, and minimum model floor. Includes budget usage bar.
Complexity drives model selection at all times:
simple → haiku, moderate → sonnet, complex → opus Budget pressure is a late safety net only:
0-85%: no downshift — complexity routing handles efficiency
85-95%: downshift by 1 tier (opus→sonnet, sonnet→haiku)
95%+: downshift by 2 tiers, warns user
Args: prompt: The task or question to classify. quality: Override quality mode — "best", "balanced", or "conserve". min_model: Override minimum model floor — "haiku", "sonnet", or "opus".
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| quality | No | ||
| min_model | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses the decision algorithm for model selection based on complexity and budget, including specific thresholds. However, it does not mention any side effects or permissions, which would be expected given no 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 well-structured with bullet points, front-loaded purpose, and no redundant sentences. Every sentence adds value.
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 tool's complexity, the description provides sufficient context for correct invocation, covering logic, parameters, and constraints. The presence of an output schema means return values are documented elsewhere.
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?
With 0% schema coverage, the description adds significant value by explaining each parameter and providing example values for quality and min_model, though exact allowed values are not formally defined.
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 states the tool classifies a prompt's complexity and recommends a model, which is specific and distinct from sibling tools like llm_analyze or llm_route.
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 explains when to use the tool and provides detailed logic for complexity and budget-based model selection, but does not explicitly mention when not to use it or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_codeA
Coding task — routes to the best coding model.
Best for: code generation, refactoring suggestions, algorithm design.
Args: prompt: The coding task or question. complexity: Task complexity — "simple", "moderate", or "complex". Drives model selection: simple questions use Haiku/Flash, actual implementation tasks use Sonnet/GPT-4o, large refactors or architecture work use Opus/o3. system_prompt: Optional system instructions (language, framework, style). max_tokens: Maximum output tokens. context: Optional conversation context to help the model understand the broader task.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| context | No | ||
| complexity | No | ||
| max_tokens | No | ||
| system_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains model selection based on complexity, which is a key behavioral trait. It does not mention side effects, rate limits, or authentication, but for a simple LLM call, this is acceptable. No contradictions.
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 concise and well-structured: a one-liner, 'Best for' list, then parameter descriptions. Every sentence adds value, and it is front-loaded with the main purpose.
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 presence of an output schema, the description does not need to detailed return values. It covers all parameters and usage context. Minor gaps: no mention of error handling or cost implications, but overall complete enough for a tool that sends prompts to a model.
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?
Schema coverage is 0%, so the description must compensate. It explains all 5 parameters in the 'Args' section, adding meaning beyond schema titles, especially for complexity which drives model selection. However, it lacks details like validation constraints or token limits for max_tokens.
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 routes to the best coding model for code generation, refactoring, and algorithm design. This differentiates it from sibling tools like llm_analyze or llm_edit, giving a specific verb and 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?
The 'Best for' list and complexity explanation provide clear when-to-use guidance. However, it does not explicitly state when not to use this tool or mention alternatives like llm_generate or llm_edit, so it's slightly incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_codexA
Route a task to the local Codex desktop agent (OpenAI).
Uses the Codex CLI to run tasks non-interactively. This uses the user's OpenAI subscription (not Claude quota) — ideal as a fallback when Claude limits are tight, or for tasks that benefit from OpenAI's models.
Available models: gpt-5.4, o3, o4-mini, gpt-4o, gpt-4o-mini
Args: prompt: The task or question to send to Codex. model: OpenAI model to use (default: gpt-5.4).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | gpt-5.4 | |
| prompt | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool runs non-interactively and uses the user's OpenAI subscription (not Claude quota), which are important behavioral traits. Without annotations, this adds value, though it omits details on prerequisites, error handling, or state changes.
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 concise, with a clear first-line purpose, followed by essential details and a structured Args section. Every sentence contributes information without redundancy.
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 tool's simplicity (2 parameters, output schema exists), the description covers core functionality, usage guidelines, and parameter semantics. It is nearly complete, though it could mention prerequisites like local Codex installation.
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 description explains both parameters: 'prompt' as 'the task or question' and 'model' with a default and list of available models. This adds meaning beyond the schema's type-only definitions, compensating for the 0% schema description coverage.
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 it routes a task to the local Codex desktop agent (OpenAI) and runs non-interactively. It differentiates from other llm_* tools by specifying it uses the user's OpenAI subscription and lists available models, making the purpose specific and distinct.
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?
Explicitly says 'ideal as a fallback when Claude limits are tight, or for tasks that benefit from OpenAI's models,' providing clear when-to-use context. Also contrasts with Claude quota usage, helping an agent decide between this and other LLM tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_dashboardA
Open the LLM Router web dashboard in the background.
Starts a local HTTP server at localhost: showing routing stats, cost trends, model distribution, and recent decisions. Refreshes every 30s.
The dashboard reads from the same SQLite DB the router writes — no extra configuration needed.
Args: port: TCP port for the dashboard server (default 7337).
Returns: URL and instructions for opening the dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that a local HTTP server is started, the dashboard reads from the same SQLite DB, and it refreshes every 30 seconds. It also details the port argument. However, it does not mention lifecycle aspects like how to stop the server, 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?
The description is concise at 4 sentences, front-loaded with the core action. It uses clear structure with a main sentence, followed by bullet-like listing of dashboard features, a note on data source, and an Args/Returns section. Every sentence adds value.
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 tool has an output schema (though not shown), the description appropriately includes a Returns clause stating it returns URL and instructions. It covers setup, refresh interval, data source, and port parameter. No critical gaps remain for an agent to invoke the tool correctly.
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?
Schema description coverage is 0%, so the description must compensate. It effectively documents the single 'port' parameter with its default value (7337) in the Args section, adding meaning beyond the schema's minimal definition. This provides sufficient guidance for the agent.
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 opens the LLM Router web dashboard in the background, specifying it starts a local HTTP server showing routing stats, cost trends, model distribution, and recent decisions. This specific verb-resource combination effectively distinguishes it from sibling tools like llm_analyze or llm_route, which serve different purposes.
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 clear context on when to use the tool (for monitoring routing stats via a dashboard) and notes it requires no extra configuration, but it does not explicitly exclude use cases or mention alternatives. Since siblings cover many distinct functions, the implied usage is generally clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_digestA
Generate a savings digest and optionally send it to a webhook.
Formats a savings summary for the given period. Also detects spend spikes and shows a "what if router was off?" simulation.
Args:
period: "today", "week", "month", or "all time".
send: If True, POST the digest to LLM_ROUTER_WEBHOOK_URL.
| Name | Required | Description | Default |
|---|---|---|---|
| send | No | ||
| period | No | week |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions the ability to send to a webhook and detect spikes, but doesn't disclose any side effects, permissions, or service dependencies (e.g., webhook URL must be set).
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?
Four sentences: first states main action, then bullet-like details. No fluff. Front-loaded with key verb and resource.
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?
Output schema exists, so return values are not needed. Description covers period and send behavior, but misses setup info (e.g., webhook URL must be configured). Still adequate for a simple 2-param 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?
Schema has 0% description coverage, but the description adds concrete values for 'period' (today, week, month, all time) and explains that 'send' posts to LLM_ROUTER_WEBHOOK_URL. This adds significant meaning beyond the schema's type/default.
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 generates a savings digest and optionally sends it to a webhook. It lists specific features (spend spike detection, simulation), making its purpose distinct from sibling tools like llm_savings or llm_budget.
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?
No guidance on when to use this tool versus alternatives (e.g., llm_savings). The description does not mention when not to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_editA
Route code-edit reasoning to a cheap model and return exact edit instructions.
Instead of Opus reasoning about what to change (expensive), a cheap model
reads the files, figures out the edits, and returns JSON {file, old_string, new_string} pairs that Claude can apply mechanically via the Edit tool.
How to use the result: After calling this tool, apply each edit instruction using the Edit tool with the exact old_string → new_string pairs provided.
Best for: refactoring, bug fixes, adding small features to existing files.
Args: task: Natural-language description of what to change (e.g. "Add type hints to all public functions in router.py"). files: List of file paths to read and include in the prompt. Relative paths are resolved from the current working directory. Files larger than 32 KB are truncated with a note. context: Optional conversation context to help the model understand the task.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| files | Yes | ||
| context | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully inform about behavior. It explains the tool routes to a cheap model, returns JSON pairs, and truncates large files. However, it does not explicitly state that the tool does not modify files (only returns instructions), nor does it mention any side effects, permissions, or limits. This 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?
The description is fairly long but well-structured with sections and bullet points. It front-loads the key purpose. Some text (e.g., 'Instead of Opus reasoning...') adds context but could be trimmed. Overall, it earns its length.
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 tool's complexity (3 params, code editing), the description covers input, output format, usage, and best-fit scenarios. It mentions file size limits but lacks error handling or rate limits. The presence of an output schema (not shown) may further detail returns, but the description suffices.
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 has 0% description coverage (only title fields), but the description adds substantial meaning: 'task' is a natural-language description, 'files' are paths with truncation note, and 'context' is optional conversation context. This compensates fully for the lack of schema descriptions.
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: 'Route code-edit reasoning to a cheap model and return exact edit instructions.' It identifies the verb (route/return) and resource (code-edit reasoning). However, it does not explicitly distinguish from sibling tools like llm_code or llm_fs_edit_many, though the mention of 'cheap model' and JSON output hints at differences.
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 use cases: 'Best for: refactoring, bug fixes, adding small features to existing files.' It also explains how to use the result: 'apply each edit instruction using the Edit tool.' No explicit when-not-to-use or alternatives, but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_fs_analyze_contextA
Analyze workspace files to build a routing context summary.
Scans key files (package.json, pyproject.toml, go.mod, Cargo.toml, README, open TODOs) and produces a compact semantic summary stored in ~/.llm-router/context_summary.json. Subsequent routing decisions inject this summary into the system prompt so cheap models have workspace context.
Call this once at the start of a project session or after major refactors. The summary is automatically used by llm_route and llm_auto — no further action required.
Args: path: Workspace root to analyze (default: current directory). max_files: Maximum files to read (default: 20).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| max_files | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description fully discloses the tool's behavior: it scans specific files, writes a summary to ~/.llm-router/context_summary.json, and that summary is used in later routing decisions. It also specifies the caching and automatic use, which gives a clear picture of side effects and lifecycle.
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 highly concise and well-structured: it starts with the core purpose, then details what it does, how it's used, when to call it, and ends with argument descriptions. Every sentence adds value without redundancy.
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 tool with moderate complexity, two parameters, and an output schema, the description covers all essential aspects: inputs, action, output location, and usage pattern. It explains the integration with other tools and the automatic subsequent use, making it fully self-contained.
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 parameter schema has 0% description coverage, but the tool's description compensates fully by explaining both parameters: 'path' as workspace root (default .) and 'max_files' as max files to read (default 20). This adds crucial meaning beyond the schema's type and default.
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: analyzing workspace files to build a routing context summary. It specifies the files (package.json, etc.), the output location, and how the summary is used by sibling tools (llm_route, llm_auto), effectively differentiating from other tools like llm_analyze.
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 guidance: 'Call this once at the start of a project session or after major refactors.' It also explains that the summary is automatically used, so no further action is needed. While it does not explicitly list alternatives or when not to use, the context makes it clear this is a setup tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_fs_edit_manyA
Generate bulk edit instructions across multiple files.
Extends the llm_edit pattern to many files at once: the cheap model
reads all target files and returns a JSON array of {file, old_string, new_string} edit instructions. Claude applies them mechanically.
Use this for cross-file refactors, bulk renames within files, or updating repeated patterns across a module.
Args:
task: Natural-language description of what to change, e.g.
"replace all import sqlite3 with import aiosqlite as sqlite3"
or "update the copyright year from 2024 to 2025 in all file headers".
files: Explicit list of file paths to process.
glob_pattern: Glob pattern to find files (e.g. "src/**/*.py"). Use
either files or glob_pattern, not both.
max_files: Cap on files processed in one call (default 20). Raise if
you need more — but consider splitting into batches for large refactors.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| files | No | ||
| max_files | No | ||
| glob_pattern | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description explains the two-step process: the cheap model reads all target files and returns a JSON array of edit instructions, then Claude applies them mechanically. It discloses the default max_files cap and suggests batching. However, it does not mention error handling, permissions, or that edits are irreversible.
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 well-structured: a purpose sentence, a paragraph explaining the internal pattern, a usage sentence, and a clear parameter list. Every sentence adds value, with no redundancy or fluff. Front-loads key 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?
Given the tool's moderate complexity and the presence of an output schema, the description covers the core behavior, parameter explanations, usage scenarios, and batching advice. No significant gaps remain for the agent to infer.
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?
Despite 0% schema description coverage, the description fully documents all four parameters in a docstring format, providing natural-language explanations, examples for `task`, and usage constraints for `files` and `glob_pattern`. This adds significant meaning 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 starts with a clear verb-resource pair: 'Generate bulk edit instructions across multiple files.' It explicitly contrasts with llm_edit by noting it extends the pattern to many files, distinguishing it from the single-file sibling.
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 states 'Use this for cross-file refactors, bulk renames within files, or updating repeated patterns across a module,' giving clear usage context. It also advises on parameter selection (use files or glob_pattern) and batching for large refactors, though it does not explicitly tell the agent when to avoid this tool (e.g., for single-file edits).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_fs_findA
Generate glob/grep commands to find files matching a natural-language description.
Routes to Haiku/Ollama so the cheap model does pattern thinking. Claude executes the returned commands with Glob/Grep/Bash.
Args: description: What you're looking for, e.g. "all Python files that import sqlite3" or "TypeScript files with TODO comments added in the last week". root: Optional root directory to search in. Defaults to current working directory.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | ||
| description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It reveals routing behavior (cheap model for pattern thinking) and execution responsibility (Claude executes commands). This adds valuable context beyond the name and distinguishes it from a simple search. However, it could explicitly state that no files are modified.
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 very concise: two short paragraphs and a brief Args section. The purpose is stated in the first sentence, followed by internal routing info, then parameter details. Every sentence adds value with no 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?
Given the tool's moderate complexity, lack of annotations, and presence of an output schema, the description adequately covers purpose, routing, and parameter details. It does not cover error cases or prerequisites, but for a read-style find tool, the completeness is sufficient. No major gaps.
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?
Schema description coverage is 0%, requiring the description to compensate. The description provides detailed explanations and concrete examples for both parameters: description ('What you’re looking for, e.g. ...') and root ('Optional root directory to search in. Defaults to current working directory.'). This adds significant meaning beyond the schema's bare titles and types.
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 generates glob/grep commands to find files matching a natural-language description. It uses a specific verb (generate) and resource (commands to find files), and naturally distinguishes from sibling file-system tools like llm_fs_analyze_context, llm_fs_edit_many, and llm_fs_rename which have different purposes.
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 clear context: use this tool when you want to find files based on a natural-language description. It does not explicitly mention when not to use it or alternatives, so it misses the top tier of explicit exclusions, but the context is clear and adequate for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_fs_renameA
Generate shell commands for a file rename/reorganisation operation.
Describe what you want to rename and the cheap model produces the mv/git mv
commands. Use dry_run=True (default) to get echo-prefixed commands safe
to inspect before running.
Args:
description: What to rename and how, e.g. "rename all _old.py files in
src/ to remove the old suffix" or "move all test*.py files from
tests/unit/ into tests/".
dry_run: When True, commands are prefixed with echo for safe review.
Set to False to get directly executable commands.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that dry_run=True prefixes commands with echo for safe review, but it does not disclose potential destructive behavior when dry_run=False, error handling, or required permissions. The behavioral transparency is minimal.
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 concise, well-structured, and front-loaded. It uses a clear Args section and every sentence adds value. No wasted words.
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 tool's low complexity (2 parameters) and the existence of an output schema, the description covers all necessary aspects: purpose, parameters, usage with examples. It is complete for an AI agent to use correctly.
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 has 0% description coverage, but the tool description provides detailed explanations for both parameters. The 'description' parameter is explained with examples, and 'dry_run' is clarified with its effect on output. This adds significant meaning 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 clearly states that the tool generates shell commands for file rename/reorganisation operations. It distinguishes itself from sibling tools like llm_fs_find and llm_fs_edit_many by focusing specifically on rename and move operations.
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 clear guidance on how to use the tool: describe the rename operation and optionally set dry_run for safety. However, it does not explicitly state when not to use this tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_gainA
Show token savings dashboard (RTK-style).
Displays comprehensive token savings metrics across all routing decisions, showing actual costs vs. Opus baseline and efficiency multiplier.
Features:
Total savings and efficiency multiplier
Breakdown by model, complexity, and tool
Daily trend analysis
Cost comparisons
Args: period: Time period to analyze: "today", "week" (default), "month", or "all"
Returns: Formatted savings dashboard
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | week |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It indicates a read-only dashboard function without side effects, but does not explicitly state that it is non-destructive or mention any authentication needs or rate limits. The description is adequate but not thorough.
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 well-structured with a brief intro, bullet-pointed features, and explicit Args/Returns sections. It is front-loaded with the core purpose. Minor redundancy (e.g., 'RTK-style' may not be universally understood) but overall efficient.
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 presence of an output schema, the description does not need to detail return values but does mention 'Formatted savings dashboard'. It covers the parameter and provides an overview of metrics. For a dashboard tool, it is fairly complete, though an example would enhance completeness.
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 only specifies a default value for 'period', but the description adds the allowed values ('today', 'week', 'month', 'all') and clarifies the default is 'week'. This provides essential semantic meaning beyond the schema, compensating for the 0% schema description coverage.
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 'Show token savings dashboard (RTK-style)' and lists specific metrics displayed. It distinguishes itself from sibling tools like llm_dashboard or llm_savings by specifying token savings across routing decisions, making its purpose unmistakable.
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 clear context on when to use this tool (to view token savings metrics) but does not explicitly mention when not to use it or alternatives. However, the purpose is specific enough to infer appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_geminiA
Route a task to the local Gemini CLI agent (Google).
Uses the Gemini CLI to run tasks non-interactively. This uses the user's Google One AI Pro subscription (not Claude quota) — ideal as a fallback when Claude limits are tight, or for tasks that benefit from Google's Gemini models.
Available models: gemini-2.5-flash, gemini-2.0-flash, gemini-3-flash-preview
Args: prompt: The task or question to send to Gemini. model: Google model to use (default: gemini-2.5-flash).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | gemini-2.5-flash | |
| prompt | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full responsibility. It discloses non-interactive execution, subscription model, and available models. It could mention error handling or response format, but overall is sufficiently transparent for a simple routing tool.
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 concise: a header line, a paragraph, a list of models, and Args. Every sentence adds value, no fluff. Well-structured for quick parsing.
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 tool's simplicity (2 parameters, output schema exists), the description covers purpose, usage context, subscription, models, and parameter details. It lacks return value explanation, but output schema fills that gap.
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?
With 0% schema description coverage, the description documents both parameters in the Args section, adding meaning beyond the schema: prompt is 'The task or question to send', model has default and list of options. This fully compensates for missing schema descriptions.
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 routes tasks to the local Gemini CLI agent, distinguishes it from siblings like llm_route (which likely uses other models), and lists available models. This provides specific verb and 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?
The description explicitly says this tool uses Google One AI Pro subscription (not Claude quota), ideal as a fallback when Claude limits are tight, or for tasks benefiting Gemini models. This provides when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_generateA
Generate creative or long-form content — routes to the best generation model.
Best for: writing, summarization, brainstorming, content creation.
Args: prompt: What to generate. complexity: Task complexity — "simple", "moderate", or "complex". Drives model selection. Simple tasks (short summaries) use cheap models; complex tasks (long-form, nuanced writing) use premium models. system_prompt: Optional system instructions (tone, format, audience). temperature: Sampling temperature (higher = more creative). max_tokens: Maximum output tokens. context: Optional conversation context to help the model understand the broader task.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| context | No | ||
| complexity | No | ||
| max_tokens | No | ||
| temperature | No | ||
| system_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that complexity drives model selection (cheap vs premium). No annotations exist, so description carries burden; it could add more on side effects or idempotency but generation tool is inherently non-destructive.
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?
Reasonably concise with clear parameter descriptions. Slightly verbose in parameter list but still efficient. Could benefit from bullet-point structure.
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?
Output schema exists so return values aren't needed. Tool has 6 params with one required; complexity highlighted. Could mention output type (text) but not critical. Fairly complete for its complexity.
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?
With 0% schema coverage, description fully compensates by explaining each parameter: prompt, complexity (with examples), system_prompt, temperature, max_tokens, context. Adds meaning beyond raw 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?
Clearly states 'Generate creative or long-form content' with examples (writing, summarization, brainstorming, content creation). This distinguishes it from siblings like llm_analyze or llm_code.
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 'Best for' list indicating usage context. Does not explicitly state when not to use or name alternatives, but the guidance is clear enough for selection among many generation-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_healthA
Check the health status of all configured LLM providers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. 'Check the health status' implies a read-only operation, but the description does not confirm idempotency, mention timeouts, or describe the response format. However, the operation is straightforward, and the output schema (present but not shown) likely handles return structure.
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 extremely concise (one sentence, 13 words). It could benefit from a brief sentence on use case or output, but it is not verbose. It loses a point for being too terse where more context might help.
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 zero parameters and the presence of an output schema (which likely documents return values), the description covers the core purpose. However, it could mention that the tool aggregates status across all providers or indicate typical response fields briefly.
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 100% (trivially). Since there are no parameters to describe, the description adds nothing beyond what the schema provides. Baseline for 0 parameters is 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 states 'Check the health status of all configured LLM providers.' It uses a specific verb ('check'), resource ('health status'), and scope ('all configured LLM providers'). This clearly distinguishes it from other llm_* tools like llm_providers (which likely lists providers) and llm_analyze (which performs analysis).
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?
No usage guidelines are provided. The description does not mention when to use this tool versus alternatives, nor does it explain prerequisites or context. For example, it could advise using this tool before making LLM calls to verify connectivity, but it does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_hook_healthA
Check the health status of all routing hooks.
Shows:
Hook permission status (executable vs not)
Success/error counts
Recent errors with timestamps
Health status (healthy/degraded/failing)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, but the description clearly indicates a read-only health check with no side effects. It lists outputs, providing adequate behavioral context.
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?
Short, front-loaded sentence followed by a bullet list of specific outputs. No wasted words.
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 zero parameters and an output schema (not shown but indicated), the description sufficiently covers the tool's purpose and output structure.
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?
No parameters input, but the description adds value by explaining what the output contains (status, errors, timestamps).
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 'Check the health status of all routing hooks' and lists specific items shown (permission status, counts, errors, health status). It distinguishes from siblings like llm_health by being hook-specific.
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?
No explicit guidance on when to use this tool vs alternatives (e.g., llm_health). Usage context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_imageA
Generate an image — auto-routes to Gemini Imagen, DALL-E, Flux, or Stable Diffusion.
Args: prompt: Description of the image to generate. model: Optional model override (e.g. "gemini/imagen-3", "openai/dall-e-3", "fal/flux-pro", "stability/stable-diffusion-3"). size: Image size (e.g. "1024x1024", "1792x1024"). quality: Image quality — "standard" or "hd" (DALL-E only).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | 1024x1024 | |
| model | No | ||
| prompt | Yes | ||
| quality | No | standard |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden. It discloses auto-routing behavior and parameter options, but does not mention output format, error handling, or rate limits. Adequate but not highly informative.
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?
Extremely concise: three sentences and a list. The main purpose is front-loaded. Every sentence adds value without 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?
Given the presence of an output schema (which explains return values), the description covers all parameters and usage hints. It is complete enough for an image generation 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?
Schema coverage is 0%, so the description must compensate. It provides clear meanings for all four parameters, including examples for model and size, and notes that quality is DALL-E only. This goes 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 clearly states the tool generates an image and lists the supported models (Gemini Imagen, DALL-E, Flux, Stable Diffusion), which immediately distinguishes it from sibling tools like llm_audio, llm_video, etc.
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?
No guidance on when to use this tool versus alternatives like llm_auto or llm_generate. The description simply lists parameters without contextual usage suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_import_profileA
Import a learned routing profile from community or URL.
Imports a shared profile and merges it with your existing learned routes. Community profiles must have confidence >= 2 to be imported (strict validation).
Args: url: URL to a profile JSON file (optional; defaults to community latest)
Returns: Merge summary and new routes imported
| Name | Required | Description | Default |
|---|---|---|---|
| url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses merging, confidence validation, and optional URL defaulting. However, it does not clarify if merging is additive or overwriting, nor mention authentication or rate limits.
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?
Description is concise with three sentences and structured Args/Returns. Front-loaded main purpose. Minor repetition between first two sentences, but overall efficient.
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 low complexity (1 param, no nested objects) and presence of output schema, description covers import purpose, source options, validation, and merging. Could mention idempotency or conflict resolution, but adequate.
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?
Only one parameter, url, with 0% schema coverage. Description explains it as a URL to a profile JSON file, optional, defaulting to community latest, adding meaningful context beyond the schema's default value.
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?
Clearly states the tool imports a learned routing profile from community or URL and merges with existing routes. The verb 'import' and resource 'learned routing profile' are specific. Distinguishes from sibling llm_share_profile which exports.
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?
Description explains when to import (community with confidence >=2) and that URL defaults to community latest. However, it does not explicitly contrast with exporting or other profile management siblings, though the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_model_evalA
Evaluate and benchmark all available local and remote models.
Runs a suite of benchmark tasks (reasoning, code) against each available model (Ollama, Codex, APIs) to determine quality, speed, and accuracy. Results are cached for 7 days and used to optimize routing priorities.
Can be called manually to force a re-evaluation, or automatically runs once per week during session-end.
Returns: Formatted evaluation results with quality scores and latency metrics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It discloses benchmark tasks, caching for 7 days, and return format. It could add more on resource usage or side effects, but is still transparent.
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 concise and well-structured: purpose first, then details on behavior, caching, usage, and return value. Every sentence adds value without redundancy.
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 no parameters and presence of an output schema, the description provides all necessary context: what models, what benchmarks, caching, manual/auto usage, and return format. It is complete for the tool's complexity.
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, so the description adds meaning by explaining the tool's behavior and purpose beyond the empty schema. Baseline of 4 for zero params, but the description is excellent.
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 evaluates and benchmarks all available local and remote models, specifying verb (evaluate, benchmark) and resource (all models). It distinguishes itself from siblings by its scope and caching behavior.
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 mentions it can be called manually or runs automatically weekly, providing usage context. However, it does not explicitly state when not to use it or compare with the sibling 'llm_benchmark'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_model_exportA
Export model tracking data for external analysis.
Exports complete routing history to a file for analysis in spreadsheets or data tools (Excel, Python, R, etc.).
Args: format: Export format (csv, json). Default: csv
Returns: Path to exported file and record count.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | csv |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It states the tool exports data to a file and returns a path and record count, but does not mention side effects, required permissions, or whether it is read-only. This is adequate but not thorough.
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 concise with two sentences for purpose and usage, plus structured Args/Returns sections. Every part serves a clear function, and the important information is front-loaded.
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 export tool with one optional parameter and an output schema, the description covers purpose, usage, parameters, and return value. Nothing obvious is missing.
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 only shows 'format' as a string with default 'csv'. The description adds the enum values 'csv' and 'json' and explains the parameter's purpose (export format). This adds meaningful information 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 clearly states the verb 'Export' and the resource 'model tracking data' (complete routing history). It is distinct from sibling tools (e.g., llm_analyze, llm_query) as it focuses on exporting for external analysis. No ambiguity.
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 clear context that the tool is for exporting routing history to files for analysis in external tools like Excel, Python, R. It implies when to use but does not explicitly state when not to use or mention alternatives, though no direct alternative exists among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_model_usageA
Analyze which models are being selected in routing.
Shows usage statistics for the last N hours:
Top models selected
Task type distribution (code/query/analyze/etc)
Classification methods used (heuristic/ollama/api/fallback)
Individual model success rates with quality feedback
Args: hours: Look back this many hours (default: 24)
Returns: Formatted usage statistics and analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations; description specifies it analyzes and returns statistics, suggesting read-only behavior, but doesn't explicitly state idempotency or side effects. Lists output components, adding some transparency.
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?
Structured with bullet points for easy scanning; concise without excess. Redundancy in repeating default value from schema is minor.
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?
Output schema exists but description only says 'formatted usage statistics and analysis'; missing details on format or pagination. No behavioral context like permissions or latency, but adequate for a statistics 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?
Schema has 0% description coverage; description explains the 'hours' parameter as lookback time with default, providing full meaning beyond schema. Single parameter, well-documented.
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?
Clearly states it analyzes model selection in routing and shows usage statistics including top models, task type distribution, etc. Distinct from siblings by focusing on model routing, but doesn't explicitly differentiate.
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?
Indicates it shows statistics for last N hours, implying monitoring use, but lacks explicit when-to-use or alternatives guidance. No exclusions or context for when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_orchestrateA
Multi-step orchestration — automatically decomposes complex tasks across multiple LLMs.
Chains research, analysis, generation, and coding steps together, routing each to the optimal model. Use templates for common patterns or let the AI decompose.
Free tier: up to 2-step pipelines. Pro tier: unlimited steps + auto-decomposition.
Args: task: Description of the complex task to accomplish. template: Optional pipeline template: "research_report", "competitive_analysis", "content_pipeline", "code_review_fix". Omit for auto-decomposition.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| template | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses core behavior: automatic decomposition, chaining, routing to optimal model, and tier limitations. Does not cover failure handling or auth needs, but adequate.
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?
Front-loaded with purpose, then details, tier info, and parameters. Slightly verbose but each sentence adds value. Could be a bit more concise.
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 output schema existence and complexity, description covers main functionality, parameters, and tier limits. Lacks explanation of output interpretation, but adequate for agent use.
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?
Schema has no descriptions (0% coverage), but description adds clear meaning: 'task' is a description of the complex task, and 'template' lists specific enum-like values ('research_report', etc.). Fully compensates.
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 it does multi-step orchestration, decomposing complex tasks across multiple LLMs, and lists specific chaining steps. It distinguishes from single-step siblings like llm_analyze and llm_generate.
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 guidance on using templates vs auto-decomposition, and mentions tier limits. Lacks explicit when-not-to-use or alternative tools for simple tasks, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_pipeline_templatesA
List available pipeline templates for multi-step orchestration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must convey behavioral traits. The word 'list' indicates a read-only operation, which is sufficient for this simple tool. However, it could mention that it returns an array of templates or if pagination exists.
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, eight words, and front-loaded with the action. Every word is necessary and effective.
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 tool's simplicity (zero parameters, output schema exists), the description is complete. It provides enough context for the agent to understand what the tool does.
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, so schema description coverage is 100% trivially. The description adds no parameter details, but none are needed. Baseline 3 is appropriate.
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 lists pipeline templates for multi-step orchestration. The verb 'list' is specific, and the resource is well-defined. It distinguishes itself from siblings like 'llm_orchestrate' which likely executes orchestration.
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 for browsing templates, but lacks explicit guidance on when not to use it or comparisons to alternatives such as llm_orchestrate. No exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_policyA
Show the active routing policy and recent policy audit events.
Displays the merged policy from all three layers:
Org policy (~/.llm-router/org-policy.yaml)
User policy (~/.llm-router/routing.yaml)
Repo policy (.llm-router.yml)
Also shows the last 10 policy enforcement events from the audit log.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It accurately describes the tool as a read-only display of policy and audit events, but it does not disclose any behavioral traits such as caching, data freshness, or access permissions.
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 three sentences long: the first sentence gives the core purpose, and the next two provide details. It is front-loaded and contains no unnecessary words.
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 that the tool has no parameters, no annotations, and an output schema exists, the description adequately covers what the tool does: displays the merged routing policy from three layers and the last 10 audit events. No further context is needed.
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 the input schema is empty. Baseline for 0 parameters is 4, and the description adds no parameter information, which is acceptable since there is nothing to describe.
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: showing the active routing policy and recent policy audit events. It specifically lists the three policy layers (org, user, repo) and the number of audit events (last 10), distinguishing it from siblings like llm_route or llm_set_profile.
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 usage (when you want to view the active policy and audit events), but it does not explicitly state when to use this tool versus alternatives, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_providersA
List all supported providers and which ones are configured.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description indicates a read-only operation (list), but lacks details on authentication needs, performance limits, or any side effects. For a simple listing tool, this is minimally adequate.
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 8-word sentence, perfectly concise. Every word carries meaning, and the tool purpose is immediately clear.
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 tool has an output schema (not shown) and no parameters, the description is complete enough. It covers what the tool does without need for additional return-value details.
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 has 0 parameters, so schema coverage is 100%. Per guidelines, baseline for zero parameters is 4; the description adds no parameter information, which is acceptable since none exist.
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 lists all supported providers and indicates which are configured. It uses a specific verb ('list') and resource ('providers'), distinguishing it from sibling tools that perform actions like classifying, analyzing, or generating.
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 usage for viewing provider status but provides no explicit guidance on when to use this tool versus alternatives (e.g., for configuration details). No exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_quality_guardA
Show quality scores per model with degradation alerts (v6.2).
Displays rolling average judge scores for all routed models over the past N days. Alerts if any model's score < 0.7 with sufficient samples (quality degradation).
Args: days: Number of days of history to analyze (default 7).
Returns: Formatted table with model scores, trend arrows, and alerts.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses the threshold (0.7), the condition ('sufficient samples'), the output format (table with trend arrows and alerts), and the display of rolling averages. This is comprehensive for a simple monitoring tool.
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 extremely concise: two sentences with clear args and returns, no fluff, and front-loaded with the core purpose. Every sentence earns its place.
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 tool with one optional parameter and an output schema, the description is complete. It explains what the tool does, the input, the threshold, the output format, and the condition for alerts. There are no missing elements that would hinder correct invocation.
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 only parameter 'days' is described as 'Number of days of history to analyze (default 7),' which essentially restates the schema (default 7, integer). While the description adds the word 'history', it does not provide additional semantic context beyond the schema. Given the low schema description coverage (0%), the description compensates only marginally.
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 it shows quality scores per model with degradation alerts. It uses specific verbs and resources ('Show quality scores', 'displays rolling average judge scores'), making the purpose clear. However, it does not explicitly differentiate from similar sibling tools like llm_quality_report or llm_model_eval, so it loses a point.
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 usage for monitoring model quality over a specified number of days, with alerts for degradation below 0.7. It gives the default value for days, but it does not provide explicit when-not-to-use guidance or mention alternatives among the many llm_* sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_quality_reportA
Show routing quality metrics — classification accuracy, savings, model distribution.
Analyzes routing decisions over the specified period to show how the classifier is performing, which models are being selected, downshift rates, and cost efficiency.
Args: days: Number of days to include in the report (default 7).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains that the tool analyzes routing decisions over a period and shows specific metrics. However, it does not disclose if the report is read-only or if there are any side effects, but given it's a report, the transparency is adequate.
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 concise, with a single introductory sentence and a clear Args section. Every sentence adds value without redundancy.
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 the tool's purpose and parameters. Since an output schema exists (as per context), the return values are likely defined externally. The description is sufficient 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 only parameter, 'days', has a default of 7. The description explains its purpose: 'Number of days to include in the report.' Since schema description coverage is 0%, the description fully compensates by providing clear semantics.
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: 'Show routing quality metrics — classification accuracy, savings, model distribution.' This is a specific verb+resource combination, and it distinguishes from siblings like llm_analyze or llm_health.
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 usage for reviewing routing decisions but does not provide explicit guidance on when to use this tool versus alternatives like llm_route or llm_savings. No when-not-to-use or alternative tool suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_queryA
Send a general query to the best available LLM.
Routes by complexity: simple→Haiku/Flash, moderate→Sonnet/GPT-4o, complex→Opus/o3.
Args: prompt: The question or prompt to send. complexity: Task complexity — "simple", "moderate", or "complex". Drives model selection: simple→cheap (Haiku/Flash), moderate→balanced (Sonnet/GPT-4o), complex→premium (Opus/o3). Auto-detected from prompt length when omitted. model: Explicit model override, bypasses complexity routing entirely. system_prompt: Optional system instructions. temperature: Sampling temperature (0.0-2.0). max_tokens: Maximum output tokens. context: Optional conversation context to help the model understand the broader task.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| prompt | Yes | ||
| context | No | ||
| complexity | No | ||
| max_tokens | No | ||
| temperature | No | ||
| system_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the routing behavior, auto-detection of complexity from prompt length, and the model override. It does not mention rate limits or authorization, but as a query tool, it is likely read-only.
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 concise: a one-sentence overview followed by a clear bullet list of parameters. Every sentence adds value without redundancy.
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?
With 7 parameters and an output schema, the description covers all parameters adequately. The behavior and routing are well explained. Slightly more detail on return values could be added, but the output schema likely covers 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?
Schema coverage is 0%, so the description must add meaning. It explains all 7 parameters: prompt, complexity (with auto-detect logic), model (override), system_prompt, temperature, max_tokens, and context. This adds significant value beyond the bare 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 'Send a general query to the best available LLM' and explains the routing by complexity. It distinguishes itself from specialized siblings (e.g., llm_code, llm_image) by being the general-purpose query tool.
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 explains when to use (general queries) and details the complexity parameter that drives model selection. It also notes the model override. However, it does not explicitly list when not to use or suggest alternatives among the many specialized llm_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_quota_statusA
Show quota balance across Claude, Gemini CLI, and Codex subscriptions.
Monitors three subscription providers to help you understand which quota is being exhausted, and make routing decisions accordingly.
The QUOTA_BALANCED profile uses this data to dynamically reorder the routing chain — keeping usage balanced across all three subscriptions.
Returns: Formatted quota status with usage percentages and route recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool monitors three subscriptions and returns formatted quota status with usage percentages and route recommendations. It does not mention any side effects or authorization needs, but it provides sufficient behavioral context for a read-only status tool.
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 three paragraphs, starting with a clear title-like sentence. It is reasonably concise, though the QUOTA_BALANCED profile explanation could be shortened. Overall, it is well-structured and front-loads the core purpose.
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 zero parameters and presence of an output schema (not shown but indicated), the description provides adequate context: it explains the providers, the return value format, and usage context. It is complete for a simple status-checking 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 has zero parameters, and schema coverage is 100%. Per guidelines, baseline is 4. The description does not need to add parameter semantics, and it appropriately avoids mentioning non-existent parameters.
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: 'Show quota balance across Claude, Gemini CLI, and Codex subscriptions.' It uses a specific verb ('Show') and resource ('quota balance'), and distinguishes itself from sibling tools like 'llm_check_usage' by focusing on routing decisions across three providers.
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 mentions the QUOTA_BALANCED profile uses this data for routing decisions, implying when to use the tool. However, it does not explicitly exclude alternatives or provide when-not-to-use guidance, leaving some ambiguity compared to similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_rateA
Rate the last (or a specific) routing decision as good or bad.
Stores thumbs-up / thumbs-down feedback in the routing_decisions table.
Over time this signal can be used to retrain the local classifier so routing
choices improve based on your preferences.
Args: good: True = routing was a good choice; False = bad choice. decision_id: Row ID to rate. Omit (or pass None) to rate the most recent routing decision.
Returns: Confirmation string with the rated decision ID, or an error message.
| Name | Required | Description | Default |
|---|---|---|---|
| good | Yes | ||
| decision_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses storage in the 'routing_decisions' table, use for retraining the classifier, and return of confirmation or error. This is comprehensive for the tool's simple 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 well-structured with a brief summary, an args block, and a returns block. Every sentence adds value, and it is appropriately concise for the tool's simplicity.
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 tool has only two parameters and no nested objects, the description covers all necessary information: parameter semantics, behavioral effects, and return value. Nothing is missing.
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?
Schema description coverage is 0%, but the description explains both parameters: good (boolean) and decision_id (integer or null, default null). It adds meaning beyond the schema's type constraints.
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 rates a routing decision as good or bad, storing thumbs-up/down feedback. It distinguishes from sibling tools like llm_reroute or llm_approve_route by focusing on post-hoc feedback collection.
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 explains how to use it: rate the last decision by omitting decision_id or a specific one by providing it. It doesn't explicitly mention when not to use it, but the context is clear for feedback after a routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_refresh_claude_usageA
Refresh Claude subscription usage via the OAuth API — no browser required.
Reads the Claude Code OAuth token from the macOS Keychain, calls the Anthropic OAuth usage endpoint, and updates the local usage cache.
Requires: Claude Code installed and authenticated on macOS.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It details the steps: reading token from keychain, calling API, updating cache. This is transparent for a simple tool, though it could explicitly state that it overwrites the local cache.
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 three sentences with no wasted words. The first sentence states the core purpose, followed by implementation details, and ends with a prerequisite. Perfectly front-loaded and concise.
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 zero parameters and the presence of an output schema (not shown but indicated), the description covers the tool's purpose, process, and prerequisites completely. It is fully adequate for agent understanding and invocation.
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?
There are no parameters, so schema coverage is 100%. The description adds value by explaining the tool's operation without needing parameters, earning the baseline 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 states the verb 'Refresh' and the resource 'Claude subscription usage'. It distinguishes from sibling tools by specifying the OAuth API method, no browser requirement, and the keychain token reading process.
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 context for when to use (refreshing usage without browser) and mentions prerequisites (Claude Code installed and authenticated on macOS). However, it does not explicitly exclude alternatives or compare to related tools like llm_check_usage or llm_update_usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_rerouteA
Override the last routing decision and record it for feedback learning.
Logs the correction to the database so future routing decisions for this task type have lowered confidence. Use this when llm_route, llm_query, llm_code, or any other tool chose the wrong model for your task.
Args: to_tool: Which tool to use instead (e.g. "llm_analyze", "llm_code"). reason: Optional explanation — stored for routing quality improvement. original_tool: The tool that made the wrong decision (auto-detected if omitted). original_model: The model that was selected (for logging purposes).
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| to_tool | Yes | ||
| original_tool | No | ||
| original_model | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the burden. It discloses that the tool overrides the last decision, logs to the database for feedback learning, and lowers confidence for future decisions, providing behavioral context beyond the schema.
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 front-loaded with the core purpose in a single sentence, followed by a concise bullet list of arguments. Every sentence adds value, and the structure is clean and easy to parse.
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 tool's complexity (4 parameters, corrective action with future impact), the description covers purpose, usage condition, parameter details, and behavioral effects. An output schema exists, so return values need not be explained.
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?
Schema description coverage is 0%, but the description includes an 'Args' section that explains each parameter (to_tool, reason, original_tool, original_model) with examples and purpose, adding significant meaning beyond the schema's titles.
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 action (override the last routing decision) and resource (routing decision), and distinguishes from siblings by naming specific tools (llm_route, llm_query, llm_code) that may have made the wrong decision.
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 explicitly states when to use the tool: when another tool 'chose the wrong model for your task'. It provides examples of siblings, but does not explicitly state when not to use it or list direct alternatives, though the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_researchA
Search-augmented research query — routes to Perplexity for web-grounded answers.
Best for: fact-checking, current events, finding sources, market research.
Args: prompt: The research question. system_prompt: Optional system instructions. max_tokens: Maximum output tokens. context: Optional conversation context to help the model understand the broader task.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| context | No | ||
| max_tokens | No | ||
| system_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions routing to Perplexity, indicating web search behavior, but lacks details on output format, rate limits, authentication, or potential side effects. It adds some transparency but is minimal.
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 very concise: one sentence for purpose, one sentence for best uses, and a bullet list of arguments. Every sentence adds value, and the core purpose is front-loaded.
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 tool has an output schema, so return values are covered. However, the description does not explain how the research process works (e.g., whether it uses conversation history, how Perplexity integration behaves). Feels somewhat incomplete for a tool that relies on an external service.
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?
Schema description coverage is 0%, so the description must add meaning. It provides brief explanations for each parameter (e.g., 'The research question' for prompt), but these are only slightly more informative than the schema titles. Does not fully compensate for the lack of parameter documentation.
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 performs a search-augmented research query routed to Perplexity for web-grounded answers, and lists specific use cases (fact-checking, current events, sources, market research). This differentiates it from other llm_ tools like llm_query or llm_analyze.
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 explicitly says 'Best for: fact-checking, current events, finding sources, market research,' providing clear context for when to use the tool. It does not mention when not to use it or name alternatives explicitly, but the guidance is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_routeA
Smart router — classifies task complexity, then routes to the optimal external LLM.
Uses a cheap classifier to assess complexity, then picks the right model tier:
simple → budget models (Gemini Flash, GPT-4o-mini)
moderate → balanced models (GPT-4o, Sonnet, Gemini Pro)
complex → premium models (o3, Opus)
For routing to Claude Code's own models (haiku/sonnet) without API keys, use llm_classify instead and follow its recommendation.
Args: prompt: The task or question to route. task_type: Optional hint — "query", "research", "generate", "analyze", "code". Auto-detected if omitted. complexity_override: Skip classification — force "simple", "moderate", or "complex". system_prompt: Optional system instructions. temperature: Sampling temperature (0.0-2.0). max_tokens: Maximum output tokens. context: Optional conversation context to help the model understand the broader task.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| context | No | ||
| task_type | No | ||
| max_tokens | No | ||
| temperature | No | ||
| system_prompt | No | ||
| complexity_override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the internal classification tiers and routing logic, plus auto-detection of task_type. However, it does not mention authentication, rate limits, or failure behavior. Output schema exists but is not described, which is acceptable.
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 front-loaded with the core purpose, then splits into classification tiers and args. It is concise with a clear bullet list, no unnecessary words, and earns its place.
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 7 parameters and complexity, the description covers the main functionality, distinguishes from siblings, and provides an output schema. It could mention error handling or limitations, but overall it is reasonably complete.
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?
Schema coverage is 0%, but the description adds meaning for all parameters, including temperature range and complexity_override options. It could be more detailed about allowed values for task_type and context usage, but it significantly compensates for the lack of schema descriptions.
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 is a 'smart router' that classifies task complexity and routes to the optimal external LLM. It specifies the verb 'routes' and the resource 'external LLM', and distinguishes itself from siblings like llm_classify.
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?
Explicit usage guidelines are provided: it tells when to use this tool (for routing to external LLMs) and when not to (for Claude's own models, use llm_classify). It names an alternative tool, which is explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_save_sessionA
Summarize and save the current session for cross-session context.
Uses a cheap model to generate a compact summary of the session's exchanges, then persists it to SQLite. Future routed calls will include this summary as context, giving external models awareness of prior work.
Call this before ending a session or when switching to a different task. Sessions with fewer than 3 exchanges are skipped.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses using a cheap model, generating a compact summary, persisting to SQLite, and that future routed calls include the summary. It also mentions the skip condition for short sessions. Minor omission of cost or speed.
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 five sentences with no redundancy, front-loaded with main purpose, and each sentence adds unique information. Highly efficient.
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 no parameters and the existence of an output schema, the description covers purpose, method, persistence, future effects, and usage timing completely.
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?
No parameters exist, and schema coverage is 100%. Description adds no parameter info, but baseline for 0 params is 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 states the tool summarizes and saves the current session for cross-session context, using a cheap model. It distinguishes itself by focusing on persisting session context, differentiating from siblings like llm_analyze or llm_query.
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 explicitly says to call before ending a session or switching tasks, and notes sessions with fewer than 3 exchanges are skipped. This provides clear guidance, though it does not compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_savingsA
Show time-bucketed savings dashboard: today / this week / this month / all-time.
Displays actual spend vs Sonnet baseline and the efficiency multiplier (Nx) for each period. Use this to understand the real dollar value routing provides.
Returns: Formatted savings table with efficiency multiplier.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states the return format ('formatted savings table with efficiency multiplier') but does not mention authentication, rate limits, or side effects. The description is adequate but not rich, providing only basic 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 extremely concise: two short paragraphs. The first paragraph states the core output upfront, and the second gives usage context. Every sentence adds value; no waste.
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 tool has no parameters and an output schema exists, the description is complete. It explains what the tool shows, the periods, and the purpose. No additional details are needed 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 tool has zero parameters, and schema coverage is 100% (empty). According to the guidelines, with 0 parameters, baseline is 4. The description adds no parameter info because none exist, so the score remains 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 states the tool shows a time-bucketed savings dashboard with specific periods (today, this week, this month, all-time) and explains it displays actual spend vs Sonnet baseline and efficiency multiplier. This specific verb+resource combination distinguishes it from sibling tools like llm_dashboard or llm_budget.
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 clear context: 'Use this to understand the real dollar value routing provides.' This tells when to use it. However, it does not explicitly state when not to use it or mention alternatives, which would be helpful given siblings like llm_dashboard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_select_agentA
Classify a task prompt and return the recommended agent CLI + model for session-level routing.
Use this BEFORE starting a Claude Code / Codex / Gemini CLI session to pick the right agent runtime for the task. This is session-level routing — it selects which agent to invoke, not which model to call mid-session.
Decision tree (profile × complexity): budget + simple/moderate → codex + gpt-4o-mini budget + complex → codex + gpt-4o (Codex handles most coding; escalate if needed) balanced + simple → codex + gpt-4o-mini balanced + moderate → claude_code + sonnet balanced + complex → claude_code + opus premium + any → claude_code + opus
Returns JSON with: primary — agent binary name: "claude_code" | "codex" | "gemini_cli" primary_model — model flag value (pass via -m or --model) fallback — fallback agent if primary unavailable fallback_model — model for fallback task_type — classified task type (code / analyze / generate / research / query) complexity — simple | moderate | complex confidence — classifier confidence 0–1 reason — one-line classification rationale env_check — dict of required env vars and whether they're set
Args: prompt: The task description to classify (same text you'd pass to the agent). profile: Routing profile — "budget", "balanced", or "premium" (default: "balanced").
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| profile | No | balanced |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It describes the tool's behavior (classification, recommendation), provides decision tree details, and lists output fields. It does not disclose side effects, but the tool is clearly a read-only classifier. The description adds good behavioral context beyond what is expected.
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 well-structured with bullet points, a code block for the decision tree, and a clear return format. It is front-loaded with the core purpose. Every section adds value, and the length is justified by the complexity of the routing logic.
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 is complete: it covers the purpose, decision logic, both parameters, and the full output schema (documented in text). Given that there is no output schema in the input (but described in text), the tool is fully specified. An AI agent can correctly invoke and interpret the results.
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?
Schema description coverage is 0%, so the description must compensate. It explains both parameters: 'prompt' (the task description) and 'profile' (routing profile with default 'balanced'). It adds meaning by linking them to the decision tree. This is sufficient for correct invocation.
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: 'Classify a task prompt and return the recommended agent CLI + model for session-level routing.' It uses specific verbs (classify, return) and a specific resource (task prompt). The decision tree and return JSON structure further clarify the function, distinguishing it from sibling tools that focus on other LLM operations.
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 explicitly tells when to use the tool: 'Use this BEFORE starting a Claude Code / Codex / Gemini CLI session' for session-level routing. It provides detailed decision tree rules and parameter guidance. However, it does not explicitly specify when not to use it or list alternatives among siblings, though the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_session_spendA
Show real-time session cost breakdown.
Reports spend accumulated since this session started, broken down by model and tool. Fires an anomaly warning if spend exceeds the configured threshold (default $0.50) in under 10 minutes.
Returns a formatted summary with per-model costs and anomaly status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: reports session spend, fires anomaly warning with threshold and time condition, returns formatted summary. Without annotations, this sufficiently covers the tool's read-only nature and output.
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?
Four concise sentences, each adding distinct value: purpose, content breakdown, anomaly behavior, output format. Front-loaded and no redundant 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?
Description fully covers the tool's purpose, output details, and behavioral trait (anomaly warning), sufficient for a parameterless tool with an output schema.
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?
Tool has no parameters, so schema coverage is 100%. Description adds value by explaining output content, aligning with baseline 4 for zero-parameter tools.
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?
Clearly states 'Show real-time session cost breakdown' with specific breakdown by model and tool, and mentions anomaly warning, distinguishing it from sibling cost/usage tools that may cover broader or historical data.
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?
Implies usage for current session cost monitoring but does not explicitly state when not to use or mention alternatives like llm_budget or llm_check_usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_set_profileB
Switch the active routing profile.
Args: profile: One of "budget", "balanced", or "premium".
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action. Missing are side effects, safety implications, or impact on ongoing requests. This minimal transparency is insufficient.
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 very concise at two sentences and immediately states the core purpose. It could be slightly more structured (e.g., adding a note on defaults), but it is efficient.
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 tool's simplicity (one parameter, no annotations, output schema exists), the description covers the essential parameter values but lacks behavioral context. Further details on impact or return value would improve completeness.
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 has 0% description coverage, and the description compensates by listing the three valid profile values ('budget', 'balanced', 'premium'), which are absent from the schema. This significantly aids correct parameter usage.
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 action 'Switch' and the resource 'active routing profile', making the tool's purpose obvious. It does not explicitly distinguish from siblings like 'llm_route' or 'llm_reroute', but the focus on profile switching is distinct enough to warrant a score of 4.
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 no guidance on when to use this tool versus alternatives. It lacks any when-to-use or when-not-to-use information, and does not reference sibling tools for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_setupA
Set up and manage API providers, hooks, and routing enforcement.
Actions:
"status": Show which providers are configured and which are missing
"guide": Step-by-step guide to add recommended free/cheap providers
"discover": Scan for existing API keys in environment (safe, read-only)
"add": Add an API key for a provider (writes to .env file securely)
"test": Validate API keys with a minimal call (tests configured or specific provider)
"provider": Show details about a specific provider
"install_hooks": Install auto-routing hooks globally (every Claude Code session)
"uninstall_hooks": Remove auto-routing hooks
Args: action: What to do — "status", "guide", "discover", "add", "test", "provider", "install_hooks", or "uninstall_hooks". provider: Provider name (for "add", "test", and "provider" actions). api_key: API key value (for "add" action only). Key is validated before saving.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | status | |
| api_key | No | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that 'discover' is safe and read-only, 'add' writes securely and validates keys. However, it omits details like whether 'add' overwrites or appends, or side effects of multiple actions.
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 well-structured with a bullet list of actions, making it scannable. The first sentence states the overall purpose. While it covers many actions, it remains relatively concise without unnecessary detail.
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 no annotations and an existing output schema, the description covers all actions and parameters. It does not explain return values, but output schema is present. It could mention prerequisites or error cases, but overall it is sufficiently detailed for a tool of this complexity.
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?
Schema description coverage is 0%, so the description must compensate. It explains each action and which parameters apply to which action, adding meaning beyond the raw schema. For instance, provider is described as 'for add, test, and provider actions'.
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: 'Set up and manage API providers, hooks, and routing enforcement.' It lists specific actions, making the purpose concrete. However, it does not differentiate from siblings like llm_providers or llm_route, which might overlap.
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 usage by enumerating actions and their effects, but it lacks explicit guidance on when to use this tool versus alternatives or when not to use it. For example, it doesn't direct users to llm_route for routing tasks already handled.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_streamA
Stream an LLM response for long-running tasks — shows output as it arrives.
Uses the same routing logic as llm_route but streams chunks instead of waiting for the full response. Ideal for long-form generation, research summaries, or any task where seeing partial output early is valuable.
Args: prompt: The task or question to stream. task_type: Task type hint — "query", "research", "generate", "analyze", "code". model: Optional model override (e.g. "openai/gpt-4o", "gemini/gemini-2.5-flash"). system_prompt: Optional system instructions. temperature: Sampling temperature (0.0-2.0). max_tokens: Maximum output tokens.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| prompt | Yes | ||
| task_type | No | query | |
| max_tokens | No | ||
| temperature | No | ||
| system_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses streaming behavior and routing logic, but lacks details on side effects, permissions, rate limits, or how the stream output is handled. With an output schema existing, the description could elaborate on return format.
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 front-loaded with a clear purpose sentence, followed by a use-case paragraph and a structured argument list. It is efficient, but the argument list is necessary due to zero schema coverage; integration with schema descriptions could streamline it.
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 6 parameters, 1 required, and an output schema, the description covers purpose, use cases, and parameter details well. Minor gaps include lack of output format description (beyond what schema provides) and error handling. Overall, fairly complete.
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?
Schema description coverage is 0%, but the description includes a detailed Args section that explains each parameter beyond schema types and defaults. For example, it specifies task_type values ('query', 'research', etc.) and model examples, adding significant meaning.
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 'Stream an LLM response for long-running tasks' with a specific verb (stream) and resource (LLM response). It explicitly distinguishes from the sibling tool llm_route by noting it 'streams chunks instead of waiting for the full response'.
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 explicitly states when to use this tool (for long-running tasks, long-form generation, research summaries) and contrasts it with llm_route. However, it does not provide explicit when-not-to-use guidance or list alternative tools for short queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_team_pushA
Push the team savings report to the configured notification channel.
Sends a formatted message to the endpoint set by LLM_ROUTER_TEAM_ENDPOINT.
Channel is auto-detected from the URL:
hooks.slack.com → Slack Block Kit message
discord.com/api/webhooks → Discord Embed
api.telegram.org/bot* → Telegram MarkdownV2 message
anything else → Generic JSON POST
Args:
period: "today", "week", "month", or "all".
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | week |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the auto-detection of channel types and the period parameter, but does not mention side effects, permissions, or safety aspects. For a mutation/write operation, additional clarity on idempotency or reversibility would improve transparency.
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 concise and well-structured: a clear first sentence stating purpose, followed by details on endpoint detection (with bullet-like formatting) and the parameter. Every sentence adds value, and the information is front-loaded.
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 tool's simplicity (one optional parameter, no required fields, and an output schema), the description covers all key aspects: purpose, period values, and backend behavior (channel detection). It is sufficient for an agent to select and invoke the tool correctly.
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 provides only a string type with a default for 'period'. The description explicitly lists the four allowed values ('today', 'week', 'month', 'all'), adding significant meaning beyond the schema. With 0% schema description coverage, this compensation is valuable.
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 action ('push') and the resource ('team savings report'), distinguishing it from sibling tools like llm_team_report (which likely generates the report) by focusing on sending it to a notification channel. The purpose is unambiguous and specific.
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 explains the tool's function and the period parameter but does not provide explicit guidance on when to use it versus alternatives (e.g., llm_team_report). It implies usage for sending reports but lacks 'when not to use' or exclusion criteria, earning a mid-range score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_team_reportA
Show a team savings report for the current user and project.
Displays call counts, cost savings, free-tier usage, and top models, broken down for the auto-detected user (git email) and project (git remote).
Args:
period: "today", "week", "month", or "all".
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | week |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full behavioral transparency burden. It mentions 'displays' implying a read operation, but does not explicitly state it is read-only, does not mention authentication needs, side effects, or that it auto-detects user/project (though noted). It is adequate but not thorough.
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 extremely concise with two short paragraphs: first sentence states purpose, second details what is displayed and the auto-detection logic, and then a clear argument documentation. Every sentence earns its place.
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 tool's low complexity (1 optional parameter) and presence of an output schema (so return values need not be described), the description is complete. It covers purpose, displayed content, auto-detection, and parameter options.
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 has 0% description coverage, so the description compensates by listing all allowed values for the `period` parameter (today, week, month, all). It adds meaning beyond the schema, though it could be enhanced by explaining each period's scope.
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 shows a team savings report for the current user and project, listing specific metrics (call counts, cost savings, etc.). However, it does not distinguish from similar siblings like `llm_savings` or `llm_usage` which might also display savings data.
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?
No guidance is provided on when to use this tool versus alternatives like `llm_savings`, `llm_check_usage`, or `llm_usage`. The description only explains what it does, without any when-not or contextual recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_track_usageA
Report Claude Code model token usage for budget tracking.
Call this after using an Agent with haiku/sonnet to track token consumption against the daily budget. This enables progressive model downshifting. Shows per-call savings vs opus and cumulative session savings.
Args: model: The Claude model used — "haiku", "sonnet", or "opus". tokens_used: Approximate tokens consumed by the Agent call. complexity: The task complexity that was routed — "simple", "moderate", "complex".
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| complexity | No | moderate | |
| tokens_used | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behaviors. It mentions reporting and tracking, but does not clarify if the tool modifies state or is read-only, nor does it discuss authentication or idempotency.
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 concise, front-loaded with purpose, and efficiently structured with a clear parameters section; no wasted words.
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 presence of an output schema, the description adequately covers behavior and output hints (savings shown), but lacks explicit mention of mutation vs read-only, leaving slight ambiguity.
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?
With 0% schema coverage, the description adds meaning by explaining each parameter: model options, tokens approximation, and complexity levels, though some details could be more precise.
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 reports token usage for budget tracking and specifies when to call it, but it does not explicitly differentiate from sibling tools like llm_check_usage or llm_update_usage.
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?
Explicitly says to call after using an Agent with haiku/sonnet for budget tracking and progressive downshifting, but does not include when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_update_usageA
Update cached Claude usage from the JSON API response.
Call this with the result from browser_evaluate(FETCH_USAGE_JS). Accepts the full JSON object from the claude.ai internal API.
The cached data is used by llm_classify for real budget pressure instead of token-based estimates.
Args: data: JSON response from the claude.ai usage API (via browser_evaluate).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains that the tool updates cached data and its downstream use, but does not disclose potential side effects, permissions, or error behavior. A middle score is appropriate.
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 reasonably concise, starting with a clear purpose. The bullet point and additional context are helpful, though some sentences could be more tightly integrated. Still efficient overall.
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 presence of an output schema, the description adequately covers input, usage context, and relationship to other tools (llm_classify). It explains the significance of the cached data for budget pressure, making the tool's role 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?
With 0% schema description coverage, the description adds significant meaning to the single parameter 'data' by specifying it should be the JSON response from the claude.ai usage API. Without this, the schema only declares an object type.
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 verb 'Update' and the resource 'cached Claude usage', and specifies that it accepts the result from browser_evaluate(FETCH_USAGE_JS), distinguishing it from sibling tools like llm_check_usage and llm_track_usage.
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?
Explicitly instructs to call this with the result from browser_evaluate(FETCH_USAGE_JS) and that it accepts the full JSON object from the claude.ai internal API. Also explains that cached data is used by llm_classify for budget pressure, providing clear context for when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_usageA
Unified usage dashboard — Claude subscription, Codex, external APIs, and savings.
Shows a complete picture of all LLM usage across all providers in one view.
Args: period: Time period — "today", "week", "month", or "all".
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | today |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes what the tool shows but does not disclose behavioral traits such as read-only access, side effects, data aggregation process, or authentication requirements. The description adds minimal behavioral context beyond stating it is a dashboard.
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 three sentences: a headline, an elaboration, and a parameter explanation. It is front-loaded with the core purpose and concise with no redundant 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?
Given the presence of an output schema, the description does not need to detail return values. It adequately explains the tool's scope (unified dashboard across providers, savings) and the period parameter. Minor gap: could mention that it aggregates data, but the output schema likely covers structure.
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 has 0% description coverage, and the description compensates by explicitly listing valid values for the 'period' parameter ('today', 'week', 'month', 'all') and explaining its purpose. This adds meaning beyond the schema's default and type.
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 it is a 'unified usage dashboard' covering 'Claude subscription, Codex, external APIs, and savings', which is a specific verb-resource combination. It distinguishes itself from siblings like llm_check_usage or llm_track_usage by emphasizing a comprehensive overview across multiple providers.
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 usage for a comprehensive view via phrases like 'complete picture' and 'across all providers', but does not explicitly state when to use this tool versus alternatives like llm_check_usage or llm_track_usage. No exclusions or scenarios are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_videoB
Generate a video — routes to Gemini Veo, Runway, Kling, or other video models.
Args: prompt: Description of the video to generate. model: Optional model override (e.g. "gemini/veo-2", "runway/gen3a_turbo", "fal/kling-video"). duration: Video duration in seconds (default: 5).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| prompt | Yes | ||
| duration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear full responsibility. It mentions routing to multiple models but lacks any details on behavior such as asynchronous processing, error handling, rate limits, or what happens when a specified model is unavailable. The description does not disclose potential costs or permissions needed.
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 concise: one sentence plus a labeled argument list. Every part serves a purpose. It could be slightly more structured (e.g., separating the general behavior from arguments), but it is not wasteful.
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 that an output schema exists, the description does not need to detail return values. However, it omits important contextual information such as whether the tool returns immediately or asynchronously, error scenarios, or cost implications. The tool's complexity (video generation, multiple models) suggests that more completeness would be beneficial.
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 has 0% description coverage, so the description adds value by explaining each parameter: prompt ('Description of the video to generate'), model (with examples like 'gemini/veo-2'), and duration ('Video duration in seconds (default: 5)'). However, the descriptions are minimal and do not include constraints (e.g., duration range, model availability) beyond the defaults.
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 'Generate a video — routes to Gemini Veo, Runway, Kling, or other video models.' This specifies the verb (generate) and resource (video), and distinguishes it from sibling tools like llm_audio and llm_image by mentioning routing to multiple video models.
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?
Usage guidance is implied through the tool name and description (use for video generation), but there is no explicit statement of when to use this versus alternatives, nor any when-not-to-use scenarios or prerequisites. For example, it does not mention that this tool may be slower or require more credits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Many tools have overlapping purposes, e.g., llm_route, llm_auto, llm_query, llm_code, llm_generate, llm_analyze, llm_research all route tasks to LLMs based on complexity or task type. Additionally, multiple savings/usage tools (llm_savings, llm_gain, llm_digest, llm_team_report, llm_team_push, llm_session_spend) create confusion. While descriptions differentiate them, the sheer number of similar tools makes it hard for an agent to select the correct one.
The vast majority of tools follow a consistent `llm_<verb>_<noun>` or `llm_<noun>` pattern in snake_case. The five `agoragentic_*` tools are a separate prefix but still consistent within their own domain. Minor inconsistency: some tools use verb+noun (e.g., llm_check_usage, llm_set_profile) while others are just noun (llm_health, llm_budget). Overall, the pattern is clear and predictable.
With 60 tools, the server is severely over-scoped for an MCP server. A typical well-coherent server has 3–15 tools; this has 60, many of which are redundant or could be consolidated (e.g., multiple savings report tools, multiple file system helpers). The high count overwhelms the agent and reduces coherence.
The tool set covers an exceptionally broad domain: task routing, classification, evaluation, savings tracking, profile management, file system operations, orchestration, media generation, setup, health checks, and team collaboration. Few obvious gaps exist; almost any operation related to LLM routing is present. The only minor omission is perhaps a direct tool for model comparison or A/B testing, but overall completeness is high.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI model routing on your own vendor keys: pick the best model per prompt, or route and run it.
AI routing, memory, guardrails, and governance. Routes across Claude, GPT, Gemini.
Image, video, music and text generation across 100+ models through one endpoint.
Enterprise AI Control Plane: governance, guardrails, spend tracking, compliance & smart routing.
Related MCP Servers
- AlicenseCqualityFmaintenanceAn AI router that connects applications to multiple LLM providers (OpenAI, Anthropic, Google, DeepSeek, Ollama, etc.) with smart model orchestration capabilities, enabling dynamic switching between models for different reasoning tasks.33637MIT
- -licenseNot gradedqualityNot gradedmaintenanceIntelligent routing service that selects optimal AI models based on capability requirements and normalizes input/output formats across multiple providers like OpenAI, Anthropic, Google, and others.
- FlicenseNot gradedqualityDmaintenanceAutomatically routes queries to the most suitable AI model based on task type, cost constraints, and performance needs, supporting multiple providers and customizable priorities.
- AlicenseBqualityDmaintenanceRoute prompts intelligently across Claude, Gemini, and GPT-4o, automatically picking the best model for every task while minimizing token cost.518MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ypollak2/llm-router'
If you have feedback or need assistance with the MCP directory API, please join our Discord server