HydraMCP
HydraMCP is an MCP server that connects Claude Code to multiple AI models (GPT, Gemini, Claude, local Ollama models) for querying, comparing, and synthesizing responses.
list_models: Discover all available models across providers (OpenAI, Google, Anthropic, Ollama, subscription CLIs).ask_model: Query any single model with configurable parameters (temperature, max tokens, system prompt, response format).compare_models: Send the same prompt to 2–5 models in parallel and get side-by-side comparisons with latency and token metrics.consensus: Poll 3–7 models and aggregate responses using voting strategies (majority/supermajority/unanimous), with an optional LLM judge.synthesize: Query 2–5 models and combine their best ideas into a single unified answer via an optional synthesizer model.
Underlying features include circuit breakers for reliability, response caching, metrics tracking, and response distillation for efficiency.
Integrates Google's model ecosystem, allowing agents to query and compare various Google-hosted models alongside other providers.
Allows agents to query Gemini models via existing subscriptions for parallel comparisons and multi-model consensus workflows.
Leverages local models via Ollama for fast, quota-free operations like judging consensus between cloud providers and synthesizing multi-model outputs.
Connects to OpenAI models using existing subscriptions to enable parallel querying, model comparisons, and response synthesis.
Click on "Install 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., "@HydraMCPcompare gpt-4 and claude on the best way to optimize this SQL query"
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.
An MCP server that lets Claude Code query any LLM — compare, vote, and synthesize across GPT, Gemini, Claude, and local models from one terminal.
Quick Start
npx hydramcp setupThat's it. The wizard walks you through everything — API keys, subscriptions, local models. At the end it gives you the one-liner to add to Claude Code.
Or if you already have API keys:
claude mcp add hydramcp -e OPENAI_API_KEY=sk-... -- npx hydramcpRelated MCP server: consensus-mcp
What It Looks Like
Four models, four ecosystems, one prompt. Real output from a live session:
> compare gpt-5-codex, gemini-3, claude-sonnet, and local qwen on this function review
## Model Comparison (4 models, 11637ms total)
| Model | Latency | Tokens |
|----------------------------|-----------------|--------|
| gpt-5-codex | 1630ms fastest | 194 |
| gemini-3-pro-preview | 11636ms | 1235 |
| claude-sonnet-4-5-20250929 | 3010ms | 202 |
| ollama/qwen2.5-coder:14b | 8407ms | 187 |All four independently found the same async bug. Then each one caught something different the others missed.
And this is consensus with a local judge:
> get consensus from gpt-5, gemini-3, and claude-sonnet. use local qwen as judge.
## Consensus: REACHED
Strategy: majority (needed 2/3)
Agreement: 3/3 models (100%)
Judge: ollama/qwen2.5-coder:14b (686ms)Three cloud models polled, local model judging them. 686ms to evaluate agreement.
Tools
Tool | What It Does |
list_models | See what's available across all providers |
ask_model | Query any model, optional response distillation |
compare_models | Same prompt to 2-5 models in parallel |
consensus | Poll 3-7 models, LLM-as-judge evaluates agreement |
synthesize | Combine best ideas from multiple models into one answer |
analyze_file | Offload file analysis to a worker model |
smart_read | Extract specific code sections without reading the whole file |
session_recap | Restore context from previous Claude Code sessions |
From inside Claude Code, just say things like:
"ask gpt-5 to review this function"
"compare gemini and claude on this approach"
"get consensus from 3 models on whether this is thread safe"
"synthesize responses from all models on how to design this API"
How It Works
Claude Code
|
HydraMCP (MCP Server)
|
SmartProvider (circuit breaker, cache, metrics)
|
MultiProvider (routes to the right backend)
|
|-- OpenAI -> api.openai.com (API key)
|-- Google -> Gemini API (API key)
|-- Anthropic -> api.anthropic.com (API key)
|-- Sub -> CLI tools (Gemini CLI, Claude Code, Codex CLI)
|-- Ollama -> local models (your hardware)Three Ways to Connect Models
API Keys (fastest setup)
Set environment variables. HydraMCP auto-detects them.
Variable | Provider |
| OpenAI (GPT-4o, GPT-5, o3, etc.) |
| Google Gemini (2.5 Flash, Pro, etc.) |
| Anthropic Claude (Opus, Sonnet, Haiku) |
Subscriptions (use your monthly plan)
Already paying for ChatGPT Plus, Claude Pro, or Gemini Advanced? HydraMCP wraps the CLI tools those subscriptions include. No API billing.
npx hydramcp setup # auto-installs CLIs and runs authThe setup wizard detects which CLIs you have, installs missing ones, and walks you through authentication. Each CLI authenticates via browser once — then it's stored forever.
Subscription | CLI Tool | What You Get |
Gemini Advanced |
| Gemini 2.5 Flash, Pro, etc. |
Claude Pro/Max |
| Claude Opus, Sonnet, Haiku |
ChatGPT Plus/Pro |
| GPT-5, o3, Codex models |
Local Models
Install Ollama, pull a model, done. Auto-detected.
ollama pull qwen2.5-coder:14bMix and Match
All three methods stack. Use API keys for some providers, subscriptions for others, and Ollama for local. They all show up in list_models together.
Route explicitly with prefixes:
openai/gpt-5— force OpenAI APIgoogle/gemini-2.5-flash— force Google APIsub/gemini-2.5-flash— force subscription CLIollama/qwen2.5-coder:14b— force localgpt-5— auto-detect (tries each provider)
Setup Details
Option A: npx (recommended)
npx hydramcp setup # interactive wizard
claude mcp add hydramcp -- npx hydramcp # register with Claude CodeConfig is saved to ~/.hydramcp/.env and persists across npx runs.
Option B: Clone
git clone https://github.com/Pickle-Pixel/HydraMCP.git
cd HydraMCP
npm install && npm run build
claude mcp add hydramcp -- node /path/to/HydraMCP/dist/index.jsVerify
Restart Claude Code and say "list models". You should see everything you configured.
Architecture
HydraMCP wraps all providers in a SmartProvider layer that adds:
Circuit breaker — per-model failure tracking. After 3 failures, the model is disabled for 60s and auto-recovers.
Response cache — SHA-256 keyed, 15-minute TTL. Identical queries are served instantly.
Metrics — per-model query counts, latency, token usage, cache hit rates.
Response distillation — set
max_response_tokenson any query and a cheap model compresses the response while preserving code, errors, and specifics.
Contributing
Want to add a provider? The interface is three methods:
interface Provider {
healthCheck(): Promise<boolean>;
listModels(): Promise<ModelInfo[]>;
query(model: string, prompt: string, options?: QueryOptions): Promise<QueryResponse>;
}See src/providers/ollama.ts for a working example. Implement it, register in src/index.ts, done.
Providers we'd love to see: LM Studio, OpenRouter, Groq, Together AI, or anything that speaks HTTP.
License
MIT
Available Tools
8 toolsanalyze_fileA
Offload file analysis to a worker model. The file is read server-side — it never enters your context window. You send a file path and a question, and get back only the analysis.
OUTPUT: Markdown with the model's analysis of the file, including file metadata (path, lines, chars), latency, and token usage. If max_response_tokens is set and compression occurred, includes distillation metadata (original tokens, compressed tokens, compressor model, compressor latency).
WHEN TO USE: When you need to analyze, review, or search a file but want to avoid reading it yourself. Especially valuable for large files (1000+ lines) where reading would consume significant context. The file is sent to a large-context model (Gemini 1M) that can process the entire file at once.
FAILURE MODES:
"File not found" → The path is wrong. Retry with the correct absolute path.
"Binary file detected" → Only text files are supported. Do not retry with this file.
"File too large" → The file exceeds 800K chars. Try analyzing a specific section or ask the user to split the file.
"No models available" → CLIProxyAPI or Ollama is not running. Tell the user to start their model provider.
"Model query failed" → Try a different model or check provider status with list_models.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the file to analyze. The file is read server-side — it never enters your context window. | |
| prompt | Yes | What to analyze, find, or review in the file. Be specific for better results. | |
| model | No | Model to use for analysis. Auto-picks a large-context model (Gemini 1M) if omitted. | |
| max_response_tokens | No | Maximum tokens in the response returned to you. If the model's response exceeds this, it will be distilled by a fast model to fit — preserving code, file paths, errors, and actionable details while stripping filler. Omit for no compression. | |
| max_tokens | No | Maximum tokens the analysis model generates (default: 1024) | |
| format | No | Response format — 'brief' for token-efficient summary, 'detailed' for full response | detailed |
| include_raw | No | When true and compression is active, include the original uncompressed response for quality comparison. Use this to verify distillation preserved critical details. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description fully discloses behavior: file read server-side, no context window, output includes metadata, compression via max_response_tokens with distillation, and failure modes. Contradicts no structured data.
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: overview, output format, when to use, failure modes. Front-loaded with purpose. Each sentence adds value, no waste. Appropriate length for a complex 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?
For a tool with 7 parameters and no output schema, the description covers purpose, behavior, output format (Markdown with metadata), compression, and failure modes. Complete enough for an 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?
Schema description coverage is 100%, so baseline is 3. The description adds extra meaning: file_path must be absolute, prompt should be specific, model auto-picks, max_response_tokens triggers distillation, max_tokens default, format enum, include_raw for verification. This goes beyond 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's purpose: offload file analysis to a worker model, keeping the file out of the context window. It uses specific verbs (analyze, review, search) and resources (file, file path, question), distinguishing it from siblings like ask_model or smart_read.
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 'WHEN TO USE' section advises using the tool to avoid reading files, especially large ones. Failure modes explain when to retry (file not found), when not to retry (binary file), and when to ask user (file too large). Provides clear context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_modelA
Query any AI model with a prompt. Returns the model's response with metadata.
OUTPUT: Markdown with the model's response, latency, and token usage. If max_response_tokens is set and compression occurred, includes distillation metadata (original tokens, compressed tokens, compressor model, compressor latency). Shows "Saved: X tokens (Y% smaller)" when compression is active. Shows "(cached)" when response is served from cache.
WHEN TO USE: When you need another model's perspective, analysis, or capabilities. Set max_response_tokens to control how much of your context window this response consumes — the response will be distilled by a fast model to fit the budget while preserving code, file paths, errors, and actionable details. Set include_raw=true to see both compressed and original responses for quality verification.
FAILURE MODES:
"Model query failed (4xx/5xx)" → The model or provider is unavailable. Try a different model or check that CLIProxyAPI/Ollama is running.
"circuit breaker open" → The model failed too many times recently. Try a different model or wait for automatic recovery.
Compression silently skipped → If the compressor model is unavailable or the response already fits the budget, the raw response is returned unchanged. This is not an error.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Model ID to query (e.g. 'gpt-4o', 'gemini-2.5-pro') | |
| prompt | Yes | The prompt to send to the model | |
| system_prompt | No | Optional system prompt to set model behavior | |
| temperature | No | Sampling temperature (0 = deterministic, 2 = creative) | |
| max_tokens | No | Maximum tokens in response (default: 1024) | |
| max_response_tokens | No | Maximum tokens in the response returned to you. If the model's response exceeds this, it will be distilled by a fast model to fit — preserving code, file paths, errors, and actionable details while stripping filler. Omit for no compression. | |
| format | No | Response format — 'brief' for token-efficient summary, 'detailed' for full response | detailed |
| include_raw | No | When true and compression is active, include the original uncompressed response for quality comparison. Use this to verify distillation preserved critical details. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly discloses behavioral traits: compression and distillation details, caching indicators ('(cached)'), failure modes including circuit breaker and model unavailability, and edge cases like compression silently skipped. This compensates fully for the lack of 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 efficiently structured with clear sections (OUTPUT, WHEN TO USE, FAILURE MODES), no redundant sentences, and front-loaded with the core functionality. 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 8 parameters and no output schema or annotations, the description covers expected behavior, output format, parameter usage, failure modes, and edge cases comprehensively. It leaves little ambiguity and provides sufficient context for correct tool 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?
With 100% schema description coverage, the baseline is 3. The description adds significant value by explaining the compression mechanism for max_response_tokens, the verification purpose of include_raw, and the response metadata (latency, token usage, distillation info). It enhances parameter understanding 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's purpose: 'Query any AI model with a prompt. Returns the model's response with metadata.' It uses a specific verb and resource, and the output format distinguishes it from sibling tools like list_models or compare_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?
The description includes a 'WHEN TO USE' section explaining the appropriate context ('When you need another model's perspective, analysis, or capabilities') and provides guidance on parameters like max_response_tokens and include_raw. However, it does not explicitly mention when not to use this tool or compare it to alternatives like consensus.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_modelsA
Query 2-5 models in parallel with the same prompt. Returns side-by-side comparison with latency and token metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| models | Yes | List of model IDs to compare (2-5 models) | |
| prompt | Yes | The prompt to send to all models | |
| system_prompt | No | Optional system prompt for all models | |
| format | No | Response format — 'brief' for token-efficient summary, 'detailed' for full response | detailed |
| temperature | No | ||
| max_tokens | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses parallel execution and return metrics, but lacks details on failure handling, rate limits, or latency implications. Basic transparency 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?
Single sentence, front-loaded with key information, no unnecessary words. 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?
For a tool with 6 parameters and no output schema, the description is minimal. It does not detail return format or error cases. Adequate for basic understanding 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 coverage is 67%, and description adds high-level context of parallel execution and return metrics. However, it does not explain semantics of parameters like temperature or max_tokens beyond schema. Adequate but not exceptional.
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 the action (query multiple models in parallel), the resource (models), and the result (side-by-side comparison with latency and token metrics). It effectively distinguishes from siblings like ask_model.
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 context is implied but no explicit when-to-use or when-not-to-use guidance, nor comparison to siblings. The description does not mention alternatives like ask_model for single model queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consensusB
Query 3-7 models and aggregate responses using voting strategy (majority/supermajority/unanimous). Returns consensus answer with confidence score.
| Name | Required | Description | Default |
|---|---|---|---|
| models | Yes | List of model IDs to poll (3-7 models) | |
| prompt | Yes | The prompt to send to all models | |
| strategy | No | Voting strategy — how many models must agree | majority |
| judge_model | No | Optional model ID to use as judge. Auto-picks if not specified. | |
| system_prompt | No | ||
| temperature | No | ||
| max_tokens | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says it queries and aggregates. Does not disclose performance implications, rate limits, or failure modes (e.g., no consensus).
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?
Single sentence conveying essence with no wasted words. Efficient and 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?
With 7 parameters, no output schema, and no annotations, the description is too minimal. Lacks details on return format, error handling, and default behaviors.
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 57%, description adds context for strategy (enum values) but does not elaborate on system_prompt, temperature, or max_tokens beyond 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?
Description clearly states the action (query and aggregate), resource (models), and result (consensus answer with confidence). Distinguishes from siblings like 'ask_model' and 'compare_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?
Implies use for consensus among models, but lacks explicit when-not-to-use or alternative comparisons. Context is clear but not directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsA
List all available models across all providers. Run this first to see what you can query.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description indicates a simple read-only operation with no side effects. It doesn't delve into authentication or data freshness, but for a list tool with no parameters, the behavioral disclosure 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?
Two short, direct sentences with no unnecessary words. Every piece of information is valuable and 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 (no parameters, no output schema), the description fully covers what it does and when to use it. No missing information for an agent to correctly invoke it.
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 in the schema, so the description doesn't need to add param-level details. It exceeds the baseline by noting the scope ('across all providers'), which adds context beyond the empty 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 lists all available models across all providers, with a specific verb and resource. It also suggests a use case ('Run this first to see what you can query'), distinguishing it from sibling tools that query or compare specific 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?
Implicitly recommends running this tool first before using other model-related tools (like ask_model, compare_models). While it doesn't explicitly state when not to use it or mention alternatives, the context is clear enough for an agent to understand its role as a discovery tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_recapA
Read previous Claude Code sessions from disk and generate a smart-sized recap using a large-context model. Claude never sees the raw session data — only the distilled summary.
OUTPUT: Returns markdown starting with "## Session Recap" containing sections: Project State, What Was Built, Key Decisions, Errors Resolved, Unfinished/In Progress, File Map. Empty sections are omitted. Output size is auto-calculated (1K-30K tokens) based on session density.
WHEN TO USE: At the start of a new session when the user asks to restore context, recall previous work, or continue where they left off.
FAILURE MODES:
"No recent project detected" + list of available projects → Retry with an explicit project path from the list.
"Project directory not found" + available projects → The project path was misspelled or encoded wrong. Retry with a path from the available list.
"No session files found" → The project directory exists but has no sessions. Try a different project.
"No models available" → CLIProxyAPI or Ollama is not running. Tell the user to start their model provider.
"Session Recap Failed" with error details → Both summarization passes failed. Retry with fewer sessions (sessions=1) or a different model.
"Triage Only" heading → Partial success. The triage pass worked but the full recap failed. The output still contains useful structured data. Do not retry.
| Name | Required | Description | Default |
|---|---|---|---|
| sessions | No | Number of recent sessions to recap (default: 3) | |
| project | No | Project path to recap, e.g. 'C:\\Users\\Beast\\Documents\\GitHub\\MyProject'. Auto-detects most recent project if omitted. | |
| focus | No | Optional focus area to filter both triage and recap, e.g. 'auth implementation' or 'database migration'. When set, only events related to this topic are counted and summarized. | |
| model | No | Model to use for recap. Should be a large-context model like Gemini. Auto-picks if omitted. | |
| max_summary_tokens | No | Override the auto-calculated summary budget (in tokens). Auto-calculation ranges from 1K to 30K based on session density. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that Claude never sees raw data, details output sections, and enumerates failure modes. Lacks explicit statement that it is a read-only operation, but this is implied by the purpose.
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?
Well-structured with clear sections (OUTPUT, WHEN TO USE, FAILURE MODES). Slightly verbose due to extensive failure mode details, but each sentence adds value. Front-loaded with essential 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 no output schema and no annotations, the description covers purpose, usage, output format, and failure modes comprehensively. It could potentially include more on return value structure, but the markdown format is sufficiently described.
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 100%, but description adds significant value beyond schema: clarifies auto-detection for project, auto-calculation for max_summary_tokens, and purpose of focus. Provides concrete examples (e.g., 'auth implementation').
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 it reads previous sessions and generates a recap. The verb 'Read' and 'generate' along with the resource 'previous Claude Code sessions' precisely define the tool's action, distinguishing it from sibling tools like analyze_file or ask_model.
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?
Includes an explicit 'WHEN TO USE' section with clear scenarios (start of session, restore context, continue work). Also provides failure modes with retry actions, which guide the agent on next steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_readA
Surgical code extraction from files. Returns ONLY relevant code sections with line numbers — not analysis.
OUTPUT: Markdown with extracted code sections (verbatim, with line numbers), minimal annotations, file metadata, latency, token usage. Shows "Context saved" metric. Unlike analyze_file which returns prose analysis, smart_read returns actual code you can act on directly.
WHEN TO USE: When you need to read a file but only care about specific sections. Use instead of the Read tool when you have a specific intent like "find the auth logic", "show error handling", "extract the database schema". Especially valuable for large files (1000+ lines) where reading the whole file wastes context tokens. For general questions about a file, use analyze_file instead.
FAILURE MODES:
"File not found" → The path is wrong. Retry with the correct absolute path.
"Binary file detected" → Only text files are supported. Do not retry with this file.
"File too large" → The file exceeds 800K chars. Try a specific section.
"No models available" → CLIProxyAPI or Ollama is not running. Tell the user to start their model provider.
"No relevant sections found" → Try a broader query, or use analyze_file for general analysis.
"Model query failed" → Try a different model or check provider status with list_models.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the file to read. The file is read server-side — it never enters your context window. | |
| query | Yes | What to find or extract from the file. Be specific: 'error handling logic', 'the authentication middleware', 'database connection setup', 'how routes are registered'. | |
| model | No | Model to use for extraction. Auto-picks a large-context model (Gemini 1M) if omitted. | |
| max_response_tokens | No | Maximum tokens in the response returned to you. If the extraction exceeds this, it will be distilled by a fast model to fit — preserving code sections while compressing annotations. Omit for no compression. | |
| max_tokens | No | Maximum tokens the extraction model generates (default: 2048, higher than analyze_file to accommodate complete code sections) | |
| format | No | Response format — 'brief' for token-efficient output, 'detailed' for full metadata | detailed |
| include_raw | No | When true and compression is active, include the original uncompressed extraction for quality comparison. Use this to verify distillation preserved code sections. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses behavior: it reads files server-side without entering context, lists output format (Markdown with line numbers), includes failure modes with explanations, and notes autoselection of large-context model. 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 well-structured with clear sections: purpose, output format, when to use, and failure modes. It is front-loaded with the core verb and differentiator, and 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 the tool's complexity (7 parameters, no output schema, multiple failure modes), the description is remarkably complete. It covers output format, parameter behaviors, failure modes, and usage context. All necessary information for correct invocation is present.
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 100% schema description coverage, the description adds significant value beyond the schema. For example, it explains the auto-pick behavior for the 'model' parameter, distillation behavior for 'max_response_tokens', and the purpose of 'include_raw' for quality comparison.
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: 'Surgical code extraction from files' returning only relevant code sections with line numbers. It explicitly differentiates from the sibling tool 'analyze_file' by stating it returns actual code not prose 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?
The 'WHEN TO USE' section provides explicit guidance: use instead of the Read tool for specific intents, especially for large files. It also specifies when not to use: for general questions, use 'analyze_file' instead. This covers usage context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
synthesizeB
Query 2-5 models in parallel, then combine their best ideas into one answer. Returns a synthesized response that's better than any single model.
| Name | Required | Description | Default |
|---|---|---|---|
| models | Yes | List of model IDs to synthesize from (2-5 models) | |
| prompt | Yes | The prompt to send to all models | |
| synthesizer_model | No | Optional model ID to use as synthesizer. Auto-picks if not specified. | |
| system_prompt | No | ||
| temperature | No | ||
| max_tokens | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It reveals parallel execution and combination of best ideas, but omits details on failure handling, timeouts, or the subjective 'better than any single model' claim. Additional context on potential issues 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 two sentences long, front-loads the key action (parallel query and synthesis), and contains no extraneous information. Every word serves a purpose, making it 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?
For a tool with 6 parameters and no output schema, the description is moderately complete. It covers the core functionality and result, but lacks details on parameter usage, return format, and edge cases. Additional information would be beneficial given 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 description adds no information about parameters; it solely describes the tool's operation. With 50% schema coverage (only 3 of 6 parameters have descriptions), the description fails to compensate for the gap, leaving agents to rely on parameter names alone for 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 the tool queries 2-5 models in parallel and combines their ideas into a single answer. It distinguishes itself from siblings like 'ask_model' (single model) and 'compare_models' (comparison, not synthesis), but lacks explicit differentiation from 'consensus' which may have similar purpose.
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 a synthesized answer better than any single model is desired, but provides no when-not-to-use guidance or alternatives. Sibling tools like 'compare_models' or 'consensus' are not mentioned, leaving the agent to infer the best tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool serves a clearly distinct purpose: analyze_file for file analysis, smart_read for code extraction, ask_model for single model queries, compare_models for side-by-side comparison, consensus for voting, synthesize for merging responses, list_models for discovery, and session_recap for session history. No two tools overlap in function.
Most tools use verb_noun pattern (analyze_file, ask_model, compare_models, list_models, session_recap, smart_read) but 'consensus' and 'synthesize' are single verbs without nouns, breaking the pattern. This minor inconsistency does not hinder readability.
With 8 tools, the server covers the core capabilities of model interaction, file analysis, and session retrieval without being overly broad. Each tool seems necessary and the count feels well-scoped for the stated domain.
The tool surface covers the main workflows: file analysis (analyze_file, smart_read), model queries (ask_model, compare_models, consensus, synthesize), and context restoration (session_recap). Missing are tools for managing model configurations, provider settings, or cache control, which would add polish but are not essential.
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that enables multi-provider AI collaboration using models like DeepSeek, OpenAI, and Anthropic through strategies such as parallel execution and consensus building. It provides specialized tools for side-by-side content comparison, quality review, and iterative refinement across different AI providers.41MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables multi-model debate and consensus building through a single tool. It orchestrates multiple AI models from various providers to debate topics and reach validated conclusions with real-time progress tracking.203MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that queries a panel of LLMs from different providers via OpenRouter and returns their answers side by side, optionally synthesizing them to highlight disagreements.121MIT
- FlicenseAqualityCmaintenanceAn MCP server that exposes tools for sub-agent style reasoning across multiple LLM providers, enabling delegation of prompts to various models and running critique loops, debates, red-teaming, and answer ranking.6
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/Pickle-Pixel/HydraMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server