universal-ai-agent-bridge
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@universal-ai-agent-bridgeAsk the AI council whether to use PostgreSQL or Redis for high-frequency locks."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π Universal AI Agent Bridge = UAAB
One bridge. Every AI agent.
Universal MCP server that connect Claude Code, Codex, Gemini, Antigravity, and other AI agents through a unified, flexible bridge.
π Table of Contents
Related MCP server: spiderswitch
β‘ 30-Second Quickstart for Every Agent
1. Claude Desktop
Add to your claude_desktop_config.json (%APPDATA%\Claude\claude_desktop_config.json on Windows or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"universal-ai-agent-bridge": {
"command": "node",
"args": ["<PATH_TO_REPO>/index.mjs"]
}
}
}2. Claude Code CLI
Add UAAB with a single command:
claude mcp add universal-ai-agent-bridge node <PATH_TO_REPO>/index.mjs3. Cursor & Windsurf
In Settings > Features > MCP:
Name:
universal-ai-agent-bridgeType:
commandCommand:
node <PATH_TO_REPO>/index.mjs
4. Google Antigravity Desktop
Run the automated 1-click setup script:
Windows:
powershell -ExecutionPolicy Bypass -File .\setup.ps1macOS / Linux:
chmod +x setup.sh && ./setup.sh
5. Standalone Terminal CLI
Use UAAB directly from your favorite terminal without any editor or host agent:
# Link globally
npm link
# Test active provider
uaab active
uaab test
# Run a query with streaming
uaab ask "Explain quantum annealing in 3 bullet points" --stream
# Convene multi-model AI council
uaab council "Should we use PostgreSQL or Redis for high-frequency locks?"π₯ Why UAAB? (Comparison Matrix)
Feature | Raw API Keys | Standard MCP Servers | LiteLLM Proxy | Universal AI Agent Bridge (UAAB) |
Agent Support | β Manual code | β οΈ 1 Agent at a time | β οΈ HTTP daemon needed | β Universal (Claude, Cursor, Codex, Gemini, Antigravity) |
Zero Dependencies | β | β οΈ Heavy npm packages | β Heavy Python pip | β 100% Pure Native Node.js ESM |
Cold Start Latency | N/A | ~500ms - 2s | ~1.5s - 3s | β‘ < 15ms Instant Boot |
Zero-Downtime Cascade | β Fails on 429 | β Hard crash | β οΈ Complex YAML | β Built-in Auto-Failover (Dahl β Groq β DeepSeek β Local) |
Local Engine Auto-Scan | β | β | β Manual config | β 1-Click Port Scanner (Ollama, LM Studio, vLLM, 9Router) |
Multi-Model Consensus | β | β | β | β
AI Council Deliberation ( |
Prompt Token Compressor | β Full cost | β Full cost | β | β RTK Engine (Saves 20% - 50% Input Tokens) |
Deterministic Cache | β | β | β οΈ External Redis | β Built-in SHA-256 0ms Cache |
Real-Time Token Ledger | β | β | β οΈ Database required | β Built-in USD & Token Accounting |
ποΈ Multi-Agent Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI Agents & Environments (Claude / Codex / Gemini / AGY) β
β β
β βββββββββββββββββ βββββββββββββββββ ββββββββββββββββββββββββ β
β β Claude Code β β Codex / Cursorβ β Antigravity / Gemini β β
β βββββββββ¬ββββββββ βββββββββ¬ββββββββ ββββββββββββ¬ββββββββββββ β
βββββββββββββΌββββββββββββββββββββββΌββββββββββββββββββββββββΌββββββββββββββββ
β β β
βββββββββββββββββββββββΌββββββββββββββββββββββββ
β JSON-RPC 2.0 over Stdio (MCP Protocol)
βββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββ
β Universal AI Agent Bridge - UAAB (MCP Server) β
β β
β βββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββ β
β β Provider Vault β β Adaptive Client & Engine β β
β β (llm_providers.json) β β (Chat, Fallback, Council, Cache) β β
β βββββββββββββββββββββββββ ββββββββββββββββββββ¬ββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββ
β
βββββββββββββββββββββ¬βββββββββββββββββββββββ΄βββββββββ¬βββββββββββββββββββ
βΌ βΌ βΌ βΌ
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β Dahl β β DeepSeek / β β Local Router β β Local Offlineβ
β Inference β β OpenRouter β β(FreeLLMAPI / β β (Ollama / β
β Cluster β β Groq / Mist β β 9Router) β β LM Studio) β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ βββββββββββββββββ¨ 8 Unbeatable Superpowers
1. π‘οΈ Zero-Downtime Smart Fallback Cascade
Never let a rate limit (429), concurrency spike, or cloud outage (500/502/503) abort your agent's task. If your primary provider fails or hits quota, UAAB automatically cascades across your fallback list (e.g. dahl β groq β deepseek β openrouter β ollama) and delivers the response seamlessly.
2. π Zero-Config Local Port Scanner (llm_autodetect)
Probes ports 11434 (Ollama), 1234 (LM Studio), 20128 (9Router/OmniRoute), 4000 (FreeLLMAPI), 8000 (vLLM), 8080 (LocalAI), and 1337 (Jan) in parallel under 100ms. Discovers live loaded models and mounts them instantly into your active vault.
3. π Smart Prompt Compression (RTK Token-Saver)
Compresses repetitive log polling lines, strips deep stack traces (like giant node_modules paths), and eliminates redundant indentation while strictly preserving syntactical meaning. Slashes context costs by 20% to 50%.
4. βοΈ Multi-Model Council Consensus (llm_council)
Query multiple distinct LLM architectures in parallel (e.g., DeepSeek-R1 for chain-of-thought logic, MiniMax/Claude for structural code, Groq Llama-3.3 for lightning sanity check). An automated Chief Justice model analyzes candidate outputs, cross-examines discrepancies, flags subtle bugs, and synthesizes the final consensus verdict.
5. β‘ 0ms Deterministic Response Cache (llm_cache)
Identical queries and repetitive code checks yield instant 0ms responses via canonical SHA-256 hashing. Includes configurable TTL and LRU eviction to maximize developer speed and eliminate wasted API spend.
6. π° Real-Time Token & Cost Ledger (ledger.mjs, llm_get_analytics)
Local persistent accounting logs exact prompt tokens, completion tokens, and dollar expenditures. Pre-configured rate cards for Dahl, DeepSeek, Groq, OpenRouter, and 100% free local models (Ollama/LM Studio).
7. π Live SSE Streaming with Token Velocity Telemetry
Built-in Server-Sent Events engine streams tokens in real-time, isolates <think> / reasoning_content deltas, and measures Time-To-First-Token (TTFT) and tokens/sec velocity.
8. π Expert Persona Presets Vault (presets.mjs)
Instant cognitive lens switching:
security-auditor: Zero-trust code audits, injection detection, auth vulnerabilities.systems-architect: High-scale distributed architecture, CAP theorem analysis.code-simplifier: Clean code, cyclomatic complexity reduction, readability.quant-trader: Mathematical rigor, low-latency execution algorithms.Custom presets created easily via chat or CLI.
π Supported Providers Matrix
Category | Providers | Default Models |
High-Throughput Clusters |
| |
Cloud Frontier APIs |
| |
Local Multiplexers | Any multiplexed model | |
100% Offline Local Engines |
|
π οΈ MCP Tools Reference
Once connected, your AI agents have access to 14 built-in tools:
Tool | Purpose | Key Arguments |
| Query any LLM with optional reasoning extraction |
|
| Benchmark answers from 2+ models side-by-side |
|
| Multi-model deliberation & synthesis |
|
| Scan localhost ports for running engines | None |
| Compress text to save input tokens |
|
| Query live available models from endpoint |
|
| Measure ping latency & validate keys |
|
| Add, edit, remove, or switch providers |
|
| Inspect token usage & USD costs |
|
| Inspect or flush response cache |
|
| List, use, or create expert personas |
|
| Generate images via |
|
| Generate video via |
|
π» CLI Reference (uaab / agy-llm)
Usage:
uaab list List all configured providers in vault
uaab active Show current active provider
uaab set <provider_key> Switch active default provider
uaab test [provider_key] Test connection & measure latency
uaab models [provider_key] Fetch live models list from provider
uaab add <key> <url> [key] [model] Add or update a provider endpoint
uaab cascade [set prov1 prov2...] Configure zero-downtime failover cascade
uaab scan Auto-scan local ports for running AI engines
uaab compress <text> Compress prompt text & calculate savings
uaab council [--members p1:m1,p2] Convene multi-model AI council
uaab ledger [clear] View token consumption & estimated USD costs
uaab preset [list|show|add|del] Manage expert personas & prompt presets
uaab ask [--preset p] <prompt> Quick test query using active provider
uaab remove <provider_key> Remove a provider from vaultπ Security & Zero-Leakage Privacy
100% Local-First: UAAB runs entirely on your machine.
Zero Third-Party Telemetry: No middleman server tracks your prompts, code, or tokens.
Direct Encrypted Transport: All API requests travel directly between your machine and your designated base URL using TLS/HTTPS.
Safe Secrets Handling: Provider keys in
llm_providers.jsonand.envare automatically ignored by Git.
π€ Contributing
Contributions make the open-source community an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated!
Fork the Project
Create your Feature Branch (
git checkout -b feature/AmazingFeature)Commit your Changes (
git commit -m 'Add some AmazingFeature')Push to the Branch (
git push origin feature/AmazingFeature)Open a Pull Request
π License
Distributed under the MIT License. See LICENSE for more information.
Available Tools
13 toolsllm_autodetectA
Auto-scan local network ports for running AI servers (Ollama on 11434, LM Studio on 1234, 9Router/OmniRoute on 20128, FreeLLMAPI on 4000, vLLM on 8000, LocalAI on 8080, Jan on 1337). Detects online engines, lists their active models, and automatically syncs them into your Antigravity vault.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_sync | No | If true (default), automatically adds/updates discovered local engines into your provider vault. | |
| timeout_ms | No | Timeout in milliseconds per probe (default 1200). | |
| custom_ports | No | Optional additional local ports to probe (e.g. [8001, 9000]). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It does disclose the key mutation trait β that discovered engines are 'automatically sync[ed] into your Antigravity vault' β and the network-probing behavior. However, it does not disclose side effects like whether existing vault entries are overwritten, whether probing can be disruptive, or any failure behavior when no servers respond. Adequate but not rich.
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?
A single dense sentence is front-loaded with the verb and target ('Auto-scan local network ports for running AI servers'), and the port enumeration is genuinely useful operational detail rather than padding. It is slightly dense β seven server/port mappings plus a three-part outcome clause β but nothing is wasted.
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-required-parameter detection tool, the description covers the core behavior well: what is scanned, what is discovered, and what happens to the vault. Since there is no output schema, the description could more explicitly specify the return shape (though 'lists their active models' hints at it). Minor gaps β no mention of the no-results case or how vault conflicts are resolved β keep it just short of 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 100% β all three optional parameters (auto_sync with its default and effect, timeout_ms with its default, custom_ports with an inline example) already carry full semantics in the schema. The description adds no parameter-level detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Auto-scan local network ports' / 'Detects online engines') with a concrete resource ('running AI servers', 'Antigravity vault') and enumerates the exact servers and ports probed (Ollama, LM Studio, vLLM, etc.). This clearly distinguishes it from siblings like llm_test_connection, llm_list_models, and llm_manage_providers β an agent can tell this is the discovery/sync tool without opening a schema.
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 is implied but never stated explicitly. The description conveys this is for detecting and syncing local AI servers, but it does not name alternatives (e.g., llm_test_connection for testing a single known endpoint, llm_manage_providers for manual vault edits) nor provide when-not-to-use guidance. The sibling names hint at the boundaries, but the description itself leaves the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_cacheA
Manage the Dynamic Response Cache for external LLMs. Inspect cache hit rates, view token and USD savings, prune expired entries, or clear the cache.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of entries to display when action is 'inspect'. Default is 10. | |
| action | Yes | Action to perform: 'stats' (view hit rate, savings, and disk usage), 'inspect' (view recent cached responses), 'prune' (evict expired entries), or 'clear' (empty entire cache). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It mentions the actions, but does not warn that 'clear' empties the entire cache (a destructive, irreversible operation) or that 'prune' only removes expired entries. While the enum descriptions in the schema clarify the actions, the tool description itself omits risk-related context, which is a notable gap for a mutating 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 a tight two-sentence summary that front-loads the core purpose ('Manage the Dynamic Response Cache') and then lists the four actions in a single sentence. There is no redundancy or fluff; every word contributes to understanding the tool.
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 only two parameters (one enum) and no output schema. The description covers the actions and their effects reasonably well, but it omits any caution about the destructive nature of 'clear' and does not hint at what return values to expect (e.g., stats output). Given the mutating capability, the description should at least flag irreversibility. It is adequate but not fully 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 100%: both 'action' and 'limit' are described in the schema with clear meanings. The tool description does not add new parameter-level information beyond what the schema providesβit only repeats the action names. Since the schema already does the heavy lifting, the description meets the baseline for this dimension.
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: 'Manage the Dynamic Response Cache for external LLMs' and enumerates the specific actions (inspect hit rates, view savings, prune, clear). It is distinct from all sibling tools, which focus on generation, compression, or model management, so there is no ambiguity about its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the toolβwhenever cache management is neededβand lists the four concrete actions. It does not explicitly name alternatives or exclusions, but given that no sibling tool overlaps with cache operations, the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_compareB
Benchmark and compare responses to the exact same prompt across multiple models or providers in parallel (e.g. Dahl vs DeepSeek vs Groq vs Ollama).
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The prompt to send to all candidate models. | |
| candidates | Yes | List of target models/providers to compare. | |
| system_prompt | No | Optional system prompt for all candidates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses parallel execution and the use of an identical prompt, but omits other behavioral aspects such as required credentials, potential for network calls, error handling, or return format. This is minimal transparency for a tool that makes external calls.
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, focused sentence that front-loads the core action and provides concrete examples. 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?
The tool is moderately complex with nested candidate objects, but the description does not describe the output format, error behavior, or how to interpret results. With no output schema, this is a significant 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?
The schema already provides descriptions for all three parameters, and the description adds no additional parameter-level information. Since schema coverage is 100%, the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('benchmark and compare') with a clear resource ('responses to the exact same prompt') and scope ('across multiple models or providers in parallel'). It also names example providers, making the purpose unmistakable and distinguishing it from potential siblings like llm_council.
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 comparing models but does not explicitly state when to use it vs alternatives. It does not mention any sibling tools or exclusions, leaving the decision to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_compress_promptA
Compress any prompt, code block, log output, or stack trace using RTK Smart Compression to strip redundant whitespace, duplicate lines, and deep library frames while maintaining code semantics. Returns token savings metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text or code to compress. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and mostly fulfills it: it discloses the exact transformations (strip redundant whitespace, duplicate lines, deep library frames), the semantic preservation guarantee, and that token savings metrics are returned. The precise return payload β whether the compressed text accompanies the metrics β is left implicit, a moderate gap given there is no output 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?
Two sentences with zero filler: the purpose and transformation details are front-loaded, and the return-value hint earns its place as a deliberate second sentence. Technical specificity ('deep library frames', 'token savings metrics') is included without bloat.
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 one-parameter, pure-transformation tool with no output schema and no annotations, the description covers what it processes, how it transforms the input, and what it returns. The only notable gap is the unspecified return format, which is mitigated by 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 description coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it specifies acceptable input forms (prompts, code, logs, stack traces) and the compression strategy, which the schema's bare 'The text or code to compress' does not convey.
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 a specific verb and resource ('Compress any prompt, code block, log output, or stack trace') and names the mechanism (RTK Smart Compression). None of the 12 sibling tools (llm_generate_image, llm_query, llm_cache, etc.) perform compression, so an agent can immediately distinguish it.
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 enumerates the applicable input types (prompt, code block, log output, stack trace), providing clear context for when to invoke it. It does not name an alternative or state when-not-to-use conditions, but no sibling tool competes for this task, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_councilA
Multi-Model Consensus & Council Deliberation. Broadcasts a complex problem, code architecture, or security audit in parallel to multiple LLM council members (e.g. Dahl, DeepSeek, Groq, Ollama), then automatically uses a designated Chief Justice / Synthesizer model to critique, cross-examine, and deliver the single optimal consensus solution.
| Name | Required | Description | Default |
|---|---|---|---|
| judge | No | Chief Justice / Synthesizer configuration. Defaults to active default model. | |
| prompt | Yes | The complex task, technical dilemma, code bug, or architectural question for council deliberation. | |
| members | No | List of council member models/providers. Defaults to active provider + fallback chain if omitted. | |
| temperature | No | Sampling temperature for member generation (default 0.7). | |
| system_prompt | No | Optional system prompt applied to all council member models. | |
| synthesis_instruction | No | Custom adjudication instructions for the Chief Justice (e.g. 'Focus on lowest latency and minimal memory footprint'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It accurately discloses the core orchestration behavior: parallel broadcast to multiple members, automatic judge critique/cross-examination, and delivery of a single consensus solution. However, with no annotations at all, the description leaves important operational traits unstated, such as external API/cost implications, credential requirements, and behavior if a member fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core mechanism is front-loaded, and the examples ('Dahl, DeepSeek, Groq, Ollama') add useful specificity without bloating the 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?
For a complex 6-parameter nested tool with no annotations and no output schema, the description gives a solid conceptual frame and tells the agent what kind of result to expect ('single optimal consensus solution'). It does not cover return shape, failure behavior, or operational caveats, so it is only minimally complete for safe and 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 schema already provides 100% parameter description coverage, including defaults for judge and members. The description reuses the same conceptual labels like 'Chief Justice' and 'council members' without adding parameter-specific syntax, constraints, or relationships 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 opens with 'Multi-Model Consensus & Council Deliberation' and clearly states it broadcasts problems in parallel to multiple LLM members and synthesizes via a Chief Justice. This gives a specific verb, resource, and workflow that conceptually separates it from single-query siblings like llm_query. It does not explicitly contrast sibling tools, so it just misses the top score.
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?
It names concrete use cases β 'complex problem, code architecture, or security audit' β giving an agent clear when-to-use context. It does not name alternatives or state when not to use the council, so it provides clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_generate_imageA
Generate an image using ANY external /v1 endpoint that supports image generation (e.g., SiliconFlow, Together AI, OpenAI DALL-E, OpenRouter, or local ComfyUI/Diffusers bridge). Saves the generated image locally and returns an embeddable file path.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Image dimensions, e.g. "1024x1024", "1792x1024", "1024x1792". Default "1024x1024". | |
| model | No | The image generation model (e.g. "black-forest-labs/FLUX.1-schnell", "dall-e-3", "stabilityai/stable-diffusion-3-medium"). | |
| prompt | Yes | Detailed description of the image to generate. | |
| api_key | No | API key for authentication. | |
| provider | No | Provider alias from vault (e.g. "siliconflow", "together", "openai", "openrouter"). | |
| endpoint_url | No | Ad-hoc /v1 base URL supporting /v1/images/generations. |
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 of behavioral disclosure. It does disclose two important behaviors: the image is saved locally and the tool returns an embeddable file path. It does not mention authentication requirements, what happens when no provider is specified, rate limits, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences. The main action is front-loaded in the first sentence, the provider examples are parenthetical and useful, and the second sentence conveys the output expectation without 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?
The description covers the core contract: generate, save locally, return an embeddable path. However, with six parameters, no output schema, and no annotations, it omits operational details such as how the provider is resolved when only prompt is given, whether endpoint_url is required, and the concrete format of the returned file path.
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 100%, so the baseline of 3 applies. The tool description adds no parameter-level detail beyond what the schema already provides; for example, endpoint_url is already documented in the schema as an 'Ad-hoc /v1 base URL supporting /v1/images/generations.'
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 opens with a specific action and resource: 'Generate an image' via 'ANY external /v1 endpoint', then lists concrete examples such as SiliconFlow, Together AI, and DALL-E. It also states the outcome ('saves the generated image locally and returns an embeddable file path'), which clearly differentiates it from siblings like llm_generate_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: whenever you need to generate an image through a supported external /v1 endpoint. However, it does not explicitly state when not to use it, nor does it point at alternatives such as llm_generate_video for video generation or other non-generation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_generate_videoC
Generate a video using an external /v1 endpoint that supports video generation (e.g., SiliconFlow LTX-Video, Together, MiniMax Hailuo Video, or custom video bridge).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Video model name (e.g., "Lightricks/LTX-Video", "kling", "cogvideox"). | |
| prompt | Yes | Detailed description of the video to generate. | |
| api_key | No | API key for authentication. | |
| duration | No | Duration in seconds (e.g. 5). | |
| provider | No | Provider alias from vault. | |
| endpoint_url | No | Ad-hoc /v1 base URL supporting /v1/videos/generations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions 'external /v1 endpoint' but does not disclose authentication requirements (api_key), potential costs, output format, or whether the operation is synchronous. The description implies a write operation but lacks details on side effects or response handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action. The list of provider examples adds some value but is somewhat verbose. Overall, it is concise and to the point.
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 6 parameters and no output schema, the description is insufficient. It does not explain the expected return value, error handling, or prerequisites like providing an API key. The agent would need to infer usage from parameter names and external knowledge, which is not ideal for a complex 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 schema description coverage is 100%, so the baseline is 3. The description adds context about provider examples (SiliconFlow, Together, MiniMax) but does not clarify parameter relationships or usage beyond what the schema provides. It does not compensate for any missing semantic details, but the schema is adequate.
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 ('Generate a video') and the resource ('video'), and mentions the external /v1 endpoint, which distinguishes it from sibling tools like llm_generate_image. However, it does not explicitly contrast it with alternatives, so differentiation is somewhat implied rather than stated.
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?
There is no guidance on when to use this tool versus other generation tools like llm_generate_image or llm_query. The description does not mention specific scenarios, prerequisites, or exclusions, leaving the agent to infer usage from the tool name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_get_analyticsA
Retrieve comprehensive cost, token usage, and latency analytics from the Antigravity Local LLM Ledger. View total tokens spent, estimated USD expenditure, breakdowns per provider (Dahl, Groq, DeepSeek, Ollama) and per model, or reset ledger statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of recent query transactions to include (default 20). | |
| model | No | Optional filter: get analytics or transactions for this specific model. | |
| action | No | Action to perform: 'get' (default) returns current analytics and recent transactions; 'clear' resets the ledger counters. | |
| provider | No | Optional filter: get analytics or transactions specifically for this provider alias. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions the 'reset' action but does not warn about the destructive nature of clearing the ledger, potential data loss, or any side effects. It also does not describe the return format or whether the operation is read-only by default. The description is vague about the consequences of the 'clear' action, which is a significant gap for a tool that can mutate state.
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 with no filler. The primary purpose (retrieve analytics) is front-loaded, and the reset capability is mentioned in the second sentence. Every phrase contributes value, and the structure is clear and 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?
The tool has 4 optional parameters, no required ones, no output schema, and no annotations. The description explains the high-level return (analytics) but does not specify the exact output structure, the effect of 'clear' beyond resetting, or any limitations like pagination. Given the moderate complexity and missing output schema, the description should provide more detail about the response format and side effects. It is adequate but leaves 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 100%, so each parameter (limit, model, action, provider) already has a clear description. The tool description adds context about what analytics are retrieved (cost, tokens, latency) and mentions provider names, but it does not add meaning beyond what the schema already provides. The baseline of 3 applies because the schema handles 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 retrieves cost, token usage, and latency analytics from a specific ledger, and can reset statistics. It names the resource and specific breakdowns, distinguishing it from sibling tools like llm_query or llm_generate_image which are about querying or generation. The verb 'Retrieve' and 'reset' are explicit and the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear this is the analytics tool, and the action parameter (get/clear) implies when to use each. However, it does not explicitly state when to use this vs alternatives or mention any exclusions. Given siblings are clearly different in function, the context is sufficient, but there is no explicit guidance like 'use this when you need ledger statistics' or 'not for generation'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_list_modelsB
List available models from an OpenAI-compatible /v1 endpoint by calling GET /v1/models.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Ad-hoc API key for the endpoint. | |
| provider | No | The provider alias from the vault (e.g., "dahl", "openrouter", "ollama", "groq"). | |
| endpoint_url | No | Ad-hoc /v1 base URL to inspect directly. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It discloses the HTTP method (GET) but does not explicitly state this is a read-only operation with no side effects, nor does it explain authentication requirements, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with zero filler and front-loads the core purpose. It is appropriately sized for the tool's simplicity, though it omits usage details.
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 no output schema, the description should at least hint at the return format (e.g., list of model IDs) or parameter selection rules. It provides neither, leaving the agent without enough information to call the tool correctly in all 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 100%, so the schema already documents all three parameters. The description adds no additional meaning about how parameters interact (e.g., whether endpoint_url overrides provider) or when each should be supplied.
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 ('List available models') and the specific resource ('OpenAI-compatible /v1 endpoint'), and it names the exact HTTP call (GET /v1/models). This distinguishes it from generation, query, and connection-testing siblings.
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_test_connection, nor how to choose among the three optional parameters (provider, endpoint_url, api_key). The agent is left to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_manage_providersB
Manage configured LLM providers in your Antigravity vault. List all providers, add a new endpoint, set active default, or update API keys.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Human-readable display name for the provider. | |
| action | Yes | Action to perform on the vault. | |
| api_key | No | The API key for authentication. | |
| base_url | No | The OpenAI-compatible /v1 base URL (e.g., "https://inference.dahl.global/v1"). | |
| description | No | Optional description of this provider. | |
| provider_key | No | Unique key/alias for the provider (e.g., "my_vllm", "dahl", "work_proxy"). | |
| default_model | No | Default model name to use when none is specified. | |
| fallback_cascade | No | Array of provider keys to set as the fallback cascade sequence. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It mentions list/add/set/update but does not disclose that remove and set_fallback_cascade are destructive or config-mutating, whether changes persist immediately, or how API keys are stored. This leaves behavioral risk under-specified for a management 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?
A single front-loaded sentence with no filler and clear verb phrases. It is concise and easy to scan, though the compactness sacrifices completeness of action enumeration.
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 an 8-parameter tool with a 7-value action enum and no annotations or output schema, the description is too thin. It ignores remove, get_active, and set_fallback_cascade actions, and gives no usage context for the active default flow. An agent would need to inspect the schema to discover half the tool's behavior.
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 100%, so all eight parameters are already documented structurally. The description adds light context that base_url corresponds to endpoints and api_key to key updates, but it does not explain provider_key, default_model, or fallback_cascade beyond what the schema states. A baseline 3 is appropriate given the schema 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 states a specific resource ('configured LLM providers in your Antigravity vault') and enumerates several distinct actions (list, add endpoint, set active, update API keys). This clearly differentiates it from sibling inference/query tools such as llm_query and llm_list_models. Though it omits some schema actions, the core purpose is 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; it does not name sibling tools or state conditions for choosing it. An agent must infer from the name that this is for provider configuration rather than model interaction. With siblings like llm_list_models and llm_test_connection, explicit routing would be valuable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_presetsB
Manage and inspect expert System Personas and Prompt Presets (e.g. 'security-auditor', 'systems-architect', 'code-simplifier', 'quant-trader', 'fullstack-reviewer', 'explain-like-pro'). List available personas, view system prompts, or save custom domain presets to the vault.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Preset name/key (e.g. 'security-auditor', 'systems-architect', 'my-custom-preset'). | |
| title | No | Display title for the preset. | |
| action | No | Action to perform on preset vault: 'list' (default), 'get', 'create', 'update', 'delete'. | |
| description | No | Short explanation of the persona or domain specialty. | |
| temperature | No | Recommended sampling temperature (0.0 to 1.0). | |
| default_model | No | Optional model to bind to this preset. | |
| system_prompt | No | The system prompt defining the persona expertise and guidelines (required for create/update). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing side effects. It mentions saving to a vault, but it does not disclose that the tool can also update or delete presets, nor does it explain persistence, permissions, or other mutation consequences. This is a significant gap for a CRUD-like 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 short and front-loaded with concrete examplescase. The first sentence could be slightly tighter since 'Manage and inspect' overlaps with the second sentence's action list, but overall it remains concise and scannable.
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 core list/view/save functionality but omits mention of update and delete actions that the schema supports, and it does not describe return values in the absence of an output schema. The examples compensate somewhat, but for a 7-parameter CRUD tool with no annotations, the description is not fully 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 100%, so the schema already documents all seven parameters in detail. The description adds useful example values for the `name` parameter but does not add meaning beyond the schema, so the 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 identifies the resource ('expert System Personas and Prompt Presets') and gives concrete example names. It names the primary actions ('list', 'view', 'save'), which distinguishes it from the sibling generation and query tools without needing to open the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when the agent needs to list, inspect, or save presets. However, it does not explicitly state when not to use it or mention any alternatives, so the usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_queryA
Query ANY external LLM using an OpenAI-compatible /v1 endpoint (e.g. Dahl, DeepSeek, OpenRouter, Groq, Ollama, LM Studio, FreeLLMAPI, 9Router, OmniRoute, or any custom endpoint). Supports reasoning/thinking extraction, custom system prompts, and ad-hoc endpoint overrides.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | The specific model name/ID (e.g., "MiniMaxAI/MiniMax-M2.7", "deepseek-ai/DeepSeek-V4-Flash-0731", "deepseek-reasoner", "llama-3.3-70b-versatile"). If omitted, uses the provider default. | |
| preset | No | Name of system persona or prompt preset to apply (e.g. 'security-auditor', 'systems-architect', 'code-simplifier', 'quant-trader', 'fullstack-reviewer', 'explain-like-pro', or custom preset name). Automatically injects specialized system prompt and optimal temperature. | |
| prompt | Yes | The user prompt or query to send to the model. | |
| stream | No | Enable SSE streaming mode with live token telemetry (Time-To-First-Token and tokens/sec velocity calculation). Default is false. | |
| api_key | No | Ad-hoc API key to use with the endpoint_url or provider. | |
| fallback | No | Enable smart zero-downtime fallback cascade if the primary provider returns HTTP 429 (rate limit) or 5xx error. Default is true. | |
| provider | No | The provider alias to use from vault: "dahl", "openrouter", "deepseek", "groq", "ollama", "lmstudio", "freellmapi", "9router", "omniroute", "cerebras", or custom name. Defaults to active provider. | |
| cache_ttl | No | Cache time-to-live in seconds. Default is 86400 (24 hours). Use 0 for indefinite caching. | |
| use_cache | No | Check and store responses in the local dynamic response cache (0ms instant hits, zero token expenditure). Default is true. | |
| max_tokens | No | Maximum tokens to generate. | |
| temperature | No | Sampling temperature (0.0 to 1.0). Default is 0.7. | |
| endpoint_url | No | Ad-hoc OpenAI-compatible /v1 base URL (e.g., "https://inference.dahl.global/v1" or "http://localhost:11434/v1"). Overrides the provider vault. | |
| system_prompt | No | Optional system instructions or role specification. | |
| fallback_chain | No | Custom array of provider keys to try in sequence if primary fails (e.g. ["dahl", "groq", "deepseek", "ollama"]). | |
| compress_tokens | No | Enable RTK Smart Prompt Compression to strip redundant whitespace, duplicate logs, and deep library stack traces, saving 20%-40% on input tokens. Default is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the disclosure burden. It discloses ad-hoc endpoint overrides, reasoning extraction, and custom system prompts, but it does not mention that the tool makes external network calls, may incur token costs, reads/writes a local cache, or enables automatic fallback on provider errors. These are meaningful behaviors for an agent, though the description is not misleading and does not contradict any 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?
Two compact sentences with no filler. The core action and resource are front-loaded, followed by a short feature list that adds value without restating parameter names or repeating schema 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?
For a 15-parameter tool with no annotations and no output schema, the description is not fully complete: it omits streaming, caching, fallback cascade, token compression, and cost/network implications. The rich 100%-coverage input schema compensates for parameter-level detail, making the description minimally viable but not comprehensive.
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?
All 15 parameters have schema descriptions (100% coverage), so the schema already carries the per-parameter semantics. The description adds only high-level grouping such as 'custom system prompts' and 'ad-hoc endpoint overrides' rather than detailed parameter meaning, which keeps it at the baseline for high schema 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 uses the specific verb 'Query' plus a clear resource ('external LLM via OpenAI-compatible /v1 endpoint'), lists concrete provider examples, and names distinct capabilities like reasoning extraction and endpoint overrides. This clearly differentiates it from the sibling generation and management tools, even without naming them.
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 general text queries to any external LLM and highlights useful capabilities, but it does not explicitly state when to use this tool versus siblings like llm_compare, llm_autodetect, or llm_generate_image. No exclusions or alternative routing guidance is provided, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
llm_test_connectionA
Test connectivity, latency, and credentials for any LLM endpoint or configured provider.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Ad-hoc API key for testing. | |
| provider | No | The provider alias to test (e.g., "dahl", "groq", "ollama", "openrouter"). | |
| endpoint_url | No | Ad-hoc /v1 base URL to test directly. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It discloses that the tool checks connectivity, latency, and credentials, which adds useful context, but it does not state whether any state is modified, what request is sent, or whether the tool is safe to run repeatedly. The description is not contradictory, but it leaves side-effect ambiguity.
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 front-loaded sentence with no filler. It conveys the tool's purpose, scope, and key checks (connectivity, latency, credentials) without redundant wording.
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 three optional parameters and no output schema, the description provides a reasonable overview but omits practical details like what happens when neither provider nor endpoint_url is supplied, and what form the test results take. An agent could invoke it, but might not know how to interpret the response or choose between the two target parameters.
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 100%, and the schema already explains each parameter. The description adds context that provider and endpoint_url are alternative targets and that api_key relates to credentials, but it does not go beyond the schema in explaining parameter interactions or optionality.
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 names a specific action ('Test connectivity, latency, and credentials') and a clear resource scope ('any LLM endpoint or configured provider'). This distinguishes it from sibling generation/query tools like llm_query and llm_generate_image, 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 implies the tool is for verifying connectivity or credentials before use, but it does not explicitly state when to prefer it over alternatives or provide exclusions. An agent has to infer usage from the phrase 'test connectivity, latency, and credentials' rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v1.0.0- First observed
llm_autodetect - First observed
llm_cache - First observed
llm_compare - First observed
llm_compress_prompt - First observed
llm_council - First observed
llm_generate_image - First observed
llm_generate_video - First observed
llm_get_analytics - First observed
llm_list_models - First observed
llm_manage_providers - First observed
llm_presets - First observed
llm_query - First observed
llm_test_connection
TDQS
Scored across 13 tools
Most tools have clear purposes, but llm_query, llm_list_models, and llm_test_connection could be confused - a user might call query when they only want to list models, or test_connection when checking availability. llm_generate_video and llm_generate_image are distinct by media type, but llm_compare, llm_council, and llm_query all involve sending prompts to multiple models, though their outputs differ significantly.
All tools follow a consistent 'llm_' prefix with descriptive verb_noun naming (generate_video, list_models, test_connection, manage_providers). Minor inconsistency: 'llm_autodetect' is a verb alone without an object, and 'llm_cache' is a noun-only name rather than a verb_noun pair, but overall the pattern is predictable and readable.
13 tools is well within the ideal range for a domain-focused server. The tools cover distinct operational areas: querying, generation, model management, caching, analytics, and multi-model orchestration, each earning its place without unnecessary duplication.
The surface covers core LLM operations: querying, listing models, testing connections, managing providers, generating content, comparing models, and caching. Missing operations like streaming responses, stopping/canceling ongoing requests, or batch processing are minor gaps for a local dev tool, but the main workflows are complete.
Maintenance
Related MCP Connectors
Connect MCP clients to 2,000+ AI models without managing provider API keys.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI applications to access 20+ model providers (including OpenAI, Anthropic, Google) through a unified interface for text and image generation.230MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that enables agents to dynamically switch between multiple AI models (OpenAI, Anthropic, Google, etc.) with unified protocol-driven configuration and capability discovery.Apache 2.0
- FlicenseAqualityBmaintenanceUnified MCP server for querying multiple LLM providers (Gemini, OpenAI, Anthropic, etc.) with advanced routing, cost optimization, and fallback resilience.23 npm-
- FlicenseNot gradedqualityCmaintenanceUnified AI Agent SaaS Connector & Multi-Provider Gateway connecting to 1,000+ SaaS platforms, vector databases, and 500+ LLM models via MCP, REST API, and CLI.-