Skip to main content
Glama

Obscurify.ai MCP server

npm MCP Registry License: MIT

Give your AI agent private access to 200+ other models. This Model Context Protocol server lets Claude Desktop, Claude Code, Cursor, VS Code, Codex, opencode and any other MCP client ask Claude, GPT, Gemini, Llama, DeepSeek, Qwen and more through Obscurify.ai.

Obscurify.ai is a privacy-focused, OpenAI-compatible AI platform. Text requests only use zero-data-retention routes, prompts and responses aren't stored on its servers, and accounts are a random 16-digit account number with no email, phone or password.

Tools

Tool

What it does

ask

One prompt to any model, with an optional system prompt, reasoning_effort, max_tokens and temperature. Returns the reply plus model, tokens and cost.

chat

Multi-turn: pass the whole messages history and get the next reply.

second_opinion

The same prompt to 2-5 models in parallel, every answer side by side. Good for checking a claim, reviewing code or a plan, or breaking a tie.

list_models

Model IDs with context window, price per million input/output tokens, tool support and the plan each needs. Filter by name, plan, price or tool support. Works without a key.

generate_image

Text-to-image with Stable Diffusion models (SDXL, SD 1.5, LCM). Returns the image. list: true shows the models and prices.

balance

Balance, plan, usage this billing period, and whether the account can use frontier and uncensored models.

Defaults are cheap and fast: ask and chat use deepseek/deepseek-v4-flash, and second_opinion asks deepseek/deepseek-v4-flash, meta-llama/llama-3.3-70b-instruct and qwen/qwen3.8-27b. Pass model / models to use anything else, e.g. anthropic/claude-sonnet-5.5 or openai/gpt-5.5.

Related MCP server: Gemini CLI MCP Server

Get an API key

  1. Create an account at obscurify.ai. You get a random account number: no email, no password.

  2. Add a balance (card, Monero, Bitcoin or Lightning). The API works on every plan with a positive balance. Frontier models need the Casual plan or higher, and uncensored models need Pro (pricing).

  3. On obscurify.ai/account, click Show API Key and copy the sk-obs1_... key.

Calls cost money from your balance at each model's listed price (model cards). Every reply shows what it cost.

Setup

The server runs with npx -y @obscurify/mcp (Node.js 20 or newer) and reads the key from OBSCURIFY_API_KEY.

Claude Code

claude mcp add obscurify -e OBSCURIFY_API_KEY=sk-obs1_... -- npx -y @obscurify/mcp

Add -s user to make it available in every project.

Claude Desktop

Settings → Developer → Edit Config, then add to claude_desktop_config.json:

{
  "mcpServers": {
    "obscurify": {
      "command": "npx",
      "args": ["-y", "@obscurify/mcp"],
      "env": { "OBSCURIFY_API_KEY": "sk-obs1_..." }
    }
  }
}

Restart Claude Desktop.

Cursor

Add the same mcpServers block to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

{
  "mcpServers": {
    "obscurify": {
      "command": "npx",
      "args": ["-y", "@obscurify/mcp"],
      "env": { "OBSCURIFY_API_KEY": "sk-obs1_..." }
    }
  }
}

VS Code (GitHub Copilot agent mode)

Create .vscode/mcp.json. VS Code asks for the key once and stores it securely:

{
  "inputs": [
    { "type": "promptString", "id": "obscurify-key", "description": "Obscurify.ai API key", "password": true }
  ],
  "servers": {
    "obscurify": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@obscurify/mcp"],
      "env": { "OBSCURIFY_API_KEY": "${input:obscurify-key}" }
    }
  }
}

Codex CLI

codex mcp add obscurify --env OBSCURIFY_API_KEY=sk-obs1_... -- npx -y @obscurify/mcp

or in ~/.codex/config.toml:

[mcp_servers.obscurify]
command = "npx"
args = ["-y", "@obscurify/mcp"]
env = { OBSCURIFY_API_KEY = "sk-obs1_..." }
# Optional: don't ask before each paid call (ask, chat, second_opinion, generate_image)
default_tools_approval_mode = "approve"

The tools that spend from your balance are marked as not read-only, so Codex asks before running them unless you set default_tools_approval_mode.

opencode

opencode mcp add obscurify --env OBSCURIFY_API_KEY=sk-obs1_... -- npx -y @obscurify/mcp

That writes this to opencode.json (add --global for your global config):

{
  "mcp": {
    "servers": {
      "obscurify": {
        "type": "local",
        "command": ["npx", "-y", "@obscurify/mcp"],
        "environment": { "OBSCURIFY_API_KEY": "sk-obs1_..." }
      }
    }
  }
}

Windsurf, Cline, Zed and other clients

Use the command npx -y @obscurify/mcp with the environment variable OBSCURIFY_API_KEY in the client's MCP settings.

Docker

docker build -t obscurify-mcp https://github.com/Obscurify-ai/obscurify-mcp.git
docker run -i --rm -e OBSCURIFY_API_KEY=sk-obs1_... obscurify-mcp

Streamable HTTP

For clients that connect over HTTP, run the server yourself:

OBSCURIFY_API_KEY=sk-obs1_... npx -y @obscurify/mcp --http --port 3000
# MCP endpoint: http://127.0.0.1:3000/mcp   health: /health

It binds to 127.0.0.1 unless you pass --host. Each request may carry its own key as Authorization: Bearer sk-obs1_..., which takes precedence over OBSCURIFY_API_KEY, so one server can serve several accounts. The HTTP mode is stateless.

Configuration

Variable

Default

OBSCURIFY_API_KEY

(none)

Your sk-obs1_... key. Without it only list_models and generate_image list work.

OBSCURIFY_DEFAULT_MODEL

deepseek/deepseek-v4-flash

Model for ask and chat when none is given.

OBSCURIFY_SECOND_OPINION_MODELS

deepseek/deepseek-v4-flash,meta-llama/llama-3.3-70b-instruct,qwen/qwen3.8-27b

Comma-separated models for second_opinion.

OBSCURIFY_BASE_URL

https://obscurify.ai/v1

API base URL.

OBSCURIFY_TIMEOUT_MS

180000

Per-request timeout. second_opinion caps each model at 55 s so the answers that do arrive come back.

Example prompts

  • "Ask Gemini and GPT what they think of this migration plan, then summarise where they disagree." (second_opinion)

  • "Find the cheapest model with tool calling and a 1M context." (list_models)

  • "Have Llama 3.3 70B rewrite this paragraph for a general audience." (ask)

  • "How much have I spent on Obscurify this month?" (balance)

Privacy

The server is a thin client: it sends your prompts to https://obscurify.ai with your key and nothing else. No telemetry, no logging to disk, no file access. What Obscurify.ai keeps is described in its privacy policy: prompts and responses are not stored, and identities are scrambled before requests reach model providers. Providers still see the prompt text, so don't send secrets you wouldn't send to the model itself.

Tested

On 2026-10-28 with a Pay As You Go key, every tool was called from MCP Inspector 2.12 (CLI), Claude Code 2.1, Codex CLI 0.165 (both from the local build and from npx -y @obscurify/mcp), and the SDK client in scripts/e2e.mjs over stdio and Streamable HTTP. opencode 2.1 connects and lists the tools.

Development

npm install
npm run build
OBSCURIFY_API_KEY=sk-obs1_... node scripts/e2e.mjs stdio --image   # live end-to-end test, costs well under a cent
OBSCURIFY_API_KEY=sk-obs1_... node scripts/e2e.mjs http
npx @modelcontextprotocol/inspector node dist/index.js

Releases: bump the version in package.json and server.json, then push a vX.Y.Z tag. The workflow publishes to npm with provenance and to the MCP Registry.

License

MIT

Available Tools

6 tools
askAsk a modelA

Send one prompt to any Obscurify.ai model and get its reply. Useful for delegating a subtask to a cheaper or specialised model, getting an outside view, or using a model you don't otherwise have. Prompts go through zero-data-retention routes and are not stored by Obscurify.ai. Default model: deepseek/deepseek-v4-flash (fast and cheap). Use list_models to find other model IDs. For follow-ups that need earlier turns use chat; to compare several models use second_opinion.

NameRequiredDescriptionDefault
modelNoModel ID such as "anthropic/claude-sonnet-5.5" or "openai/gpt-5.5". Default: deepseek/deepseek-v4-flash.
promptYesThe full prompt. The model sees nothing else, so include any context it needs.
systemNoOptional system prompt.
max_tokensNoCap on the reply length in tokens (default 4096). Reasoning models spend some of these thinking.
temperatureNoSampling temperature, 0-2. Omit for the model's default.
show_reasoningNoInclude the model's reasoning text, when it returns one (default false).
reasoning_effortNoHow hard a reasoning model should think. Ignored by models without reasoning. Omit for the model's default.

TDQS

A4.3/5.0
Behavior4/5

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

Adds genuinely non-obvious context beyond the annotations: zero-data-retention routing and that Obscurify.ai does not store prompts, plus the default model and its cost/speed tradeoff. Annotations already declare openWorldHint=true and destructiveHint=false, and the description is consistent with both. It stops short of covering latency, per-call billing, or what the reply payload looks like.

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

Conciseness4/5

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

Four sentences, front-loaded with the action and then the routing guidance; nothing is buried. Slight redundancy in restating the default model that the schema already carries, which keeps it from being maximally tight.

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

Completeness4/5

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

Covers what an agent needs to call this correctly: single-turn scope, privacy posture, default model, and where to go for alternatives. With no output schema, the omission of return-shape detail (token usage, finish reason) is a minor gap rather than a blocker.

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

Parameters3/5

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

Schema description coverage is 100%, so all seven parameters are already documented with defaults, ranges and enum values; the description's default-model note duplicates the schema's own 'model' field text. It adds only the cross-reference to list_models for discovering valid model IDs, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('send one prompt to any Obscurify.ai model and get its reply') and immediately fixes the scope as single-shot, which is what separates it from the sibling chat tool. The one-line rationale about why you'd delegate to another model adds intent, not just mechanics.

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

Usage Guidelines5/5

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

Names the alternatives and the conditions that select them: follow-ups needing earlier turns go to chat, comparisons go to second_opinion, model discovery goes to list_models. Both exclusions and the pointer for valid model IDs are explicit, leaving nothing to inference.

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

balanceAccount balance and planA
Read-only

Show the Obscurify.ai account's balance (USD), plan, included credit used this billing period, token usage, and whether it can use frontier and uncensored models. Use it before a large batch of calls, or when a call fails with a balance (402) or plan (403) error.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds useful context about what status information is exposed and why an agent would check it, though it does not mention caching or freshness of the balance data.

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

Conciseness5/5

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

Two compact sentences: the first defines what is returned, the second gives usage triggers. No filler, and the most important information comes first.

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

Completeness4/5

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

With no output schema, the description must explain return values, and it enumerates the key fields well. It could go slightly further on response shape or error behavior, but it is sufficient for an agent to call this zero-parameter tool correctly.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. There is no parameter syntax to explain, and the description correctly does not invent any.

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

Purpose5/5

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

States a specific verb and resource: shows the account's balance, plan, credit usage, token usage, and model access. It is clearly distinguishable from generation-focused siblings like ask, chat, and generate_image.

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

Usage Guidelines5/5

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

Explicitly says to use it before large batches and when a call fails with 402 (balance) or 403 (plan) errors. This gives concrete trigger conditions that an agent can act on without inference.

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

chatMulti-turn chatA

Continue a multi-turn conversation with an Obscurify.ai model. Pass the whole history in messages (the server keeps no state) and get the next assistant reply. For a single question, ask is simpler. Default model: deepseek/deepseek-v4-flash.

NameRequiredDescriptionDefault
modelNoModel ID. Default: deepseek/deepseek-v4-flash.
messagesYesConversation so far, oldest first. The last message is usually from the user.
max_tokensNoCap on the reply length in tokens (default 4096). Reasoning models spend some of these thinking.
temperatureNoSampling temperature, 0-2. Omit for the model's default.
show_reasoningNoInclude the model's reasoning text, when it returns one (default false).
reasoning_effortNoHow hard a reasoning model should think. Ignored by models without reasoning. Omit for the model's default.

TDQS

A4.2/5.0
Behavior4/5

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

The annotation set (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false) already tells the agent this is a non-destructive but stateful open-world call. The description earns credit beyond that by disclosing the critical operational fact that the server keeps no state, so the entire history must be resent each turn. It does not mention cost, rate limits, or truncation behavior for long histories.

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

Conciseness5/5

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

Three short sentences, each doing distinct work: what it does, the statefulness contract, and the routing alternative. The default model is front-loaded at the end where a caller will look for it, and there is no filler.

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

Completeness4/5

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

With six parameters, full schema coverage, and annotations, the description covers the essentials: statelessness, the history contract, and the sibling comparison. The lighter note is return shape — there is no output schema, so a brief mention of what the reply contains (assistant text plus optional reasoning text) would close the remaining gap.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter is already documented in the schema, including the default model, token cap, and reasoning-effort enum. The description reinforces that `messages` carries the whole history (explaining why via statelessness) and repeats the default model, but adds little beyond the schema text. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource (continue a multi-turn conversation with an Obscurify.ai model), specifies exactly what the caller must supply (the whole history in `messages`), and names the sibling it is not (`ask`). An agent can distinguish it from `ask` and `second_opinion` without opening either schema.

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

Usage Guidelines4/5

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

Explicitly routes single-question use to the sibling `ask`, which is the key decision point for this tool family. It does not address the other siblings (`second_opinion`, `generate_image`, `list_models`) or state any when-not-to-use condition beyond that one comparison.

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

generate_imageGenerate an imageA

Generate an image from a text prompt with Obscurify.ai's Stable Diffusion image models (SDXL, SD 1.5 and LCM checkpoints). Returns the image. Costs a fraction of a cent per image from the account balance. Pass list: true to see the available image models and prices instead.

NameRequiredDescriptionDefault
listNoList image models and prices instead of generating.
seedNoSeed for reproducible results.
modelNoImage model ID (default "realvis-xl-v4", photorealistic). Others include "juggernaut-xl-v10" and "animagine-xl-v-3-1" (anime). Use list: true for all.
widthNoWidth in pixels (default: the model's).
heightNoHeight in pixels (default: the model's).
promptNoWhat to draw. Required unless list is true.
negative_promptNoThings to keep out of the image.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare that this is a non-readonly, non-destructive, open-world, non-idempotent operation, so the safety profile is covered. The description adds useful operational context: it returns the image and incurs a small cost from the account balance, which is exactly the kind of behavioral detail annotations do not convey.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core purpose, followed by return/cost behavior and the alternative listing mode. Every sentence earns its place with no repetition or filler.

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

Completeness4/5

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

Given seven parameters, full schema coverage, and no output schema, the description supplies the important missing pieces: what is returned and that generation costs money. It could specify the image return format or link cost more explicitly, but overall an agent has enough to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already well documented in the input schema. The description mentions prompt, `list: true`, and model families, but adds little parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: generate an image from a text prompt using named Stable Diffusion models. It also distinguishes the tool's listing mode and names the underlying provider, so an agent can immediately understand that this is image generation rather than chat or balance lookup.

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

Usage Guidelines4/5

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

It clearly explains when to use the tool for generation and when to pass `list: true` to inspect available image models and prices instead. It does not explicitly discuss when to prefer a sibling tool such as `list_models`, but the image-generation context is clear enough that this is a minor gap.

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

list_modelsList modelsA
Read-only

List Obscurify.ai chat models with their IDs, context window, price per million input/output tokens (USD), tool-calling support and the plan they need (any = every account with a balance; casual = Casual or Pro; pro = Pro only). Filter by name, plan, price or tool support. Use it to find a model ID for ask, chat or second_opinion, or the cheapest model with what you need. Doesn't need an API key.

NameRequiredDescriptionDefault
planNoOnly models usable on this plan: any (Pay As You Go and up), casual, or pro (everything).
sortNoSort order (default id). price = cheapest output first.
limitNoMax rows (default 60).
searchNoCase-insensitive text to match in the model ID or name, e.g. "claude", "deepseek", "coder".
tools_onlyNoOnly models that support tool/function calling.
max_output_priceNoOnly models whose output price is at most this many USD per million tokens.

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely useful context beyond that: the returned field set and the meaning of each plan tier (any/casual/pro). It does not cover pagination or defaults for limit/sort, which are left to the schema.

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

Conciseness5/5

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

Three tight sentences: what it returns, how to filter, and why to call it. No filler, and the field list is front-loaded before the filtering guidance.

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

Completeness4/5

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

No output schema exists, yet the description enumerates the return fields, so an agent knows what comes back. Minor gap: it doesn't state default limit or that results are paginated/truncated, which matters for a 6-param listing tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning by expanding the plan enum into concrete user tiers ('any = every account with a balance; casual = Casual or Pro; pro = Pro only'), disambiguating the one parameter most likely to be misunderstood.

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

Purpose5/5

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

Specific verb 'List' plus resource 'Obscurify.ai chat models', with the returned fields enumerated (IDs, context window, pricing, tool support, plan). It clearly distinguishes itself from ask/chat/second_opinion by framing itself as the model-discovery step for those tools.

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

Usage Guidelines5/5

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

Explicitly states when to use it: 'Use it to find a model ID for ask, chat or second_opinion, or the cheapest model with what you need.' It also gives the filter-to-goal mapping ('Filter by name, plan, price or tool support') and notes no API key is required, removing a likely blocker.

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

second_opinionSecond opinion from several modelsA

Send the same prompt to 2-5 different models at once and return every answer side by side, so you can compare them, check a claim, review code or a plan, or break a tie. Default models: deepseek/deepseek-v4-flash, meta-llama/llama-3.3-70b-instruct, qwen/qwen3.8-27b.

NameRequiredDescriptionDefault
modelsNoModel IDs to ask (2-5). Pick different families for independent views.
promptYesThe full prompt, with all the context the models need.
systemNoOptional system prompt for every model.
max_tokensNoCap on the reply length in tokens (default 4096). Reasoning models spend some of these thinking.
reasoning_effortNoHow hard a reasoning model should think. Ignored by models without reasoning. Omit for the model's default.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already cover the safety profile (non-destructive, non-idempotent, open-world). The description adds useful behavior: the fan-out to 2-5 models and the default model set. It omits cost/latency implications of N parallel calls and what happens when one model errors or is unavailable, which matters for a non-idempotent multi-call tool.

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

Conciseness5/5

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

Two sentences, front-loaded with the mechanism and the return shape, followed by the defaults. Every clause carries information; nothing is padding.

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

Completeness4/5

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

No output schema exists, and the description compensates by describing the side-by-side return. With all five parameters documented and defaults stated, the only real gap is partial-failure behavior and cost/latency expectations when querying up to five models.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns above that by naming the three default model IDs and the 2-5 range, which the schema does not supply. It adds no extra guidance on system/max_tokens/reasoning_effort beyond what the schema already documents.

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

Purpose5/5

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

States a specific action (send the same prompt to 2-5 models at once) and a specific return shape (every answer side by side). The multi-model fan-out is inherently what separates it from the single-conversation siblings ask/chat, so an agent can route without opening the schema.

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

Usage Guidelines4/5

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

Gives concrete use cases: compare answers, check a claim, review code or a plan, break a tie. That's clear positive guidance, but it never says when not to use it or names a sibling alternative (e.g. ask/chat for a single-model exchange).

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

Tool Schema Changelog

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

  1. 6 tool updatesv0.1.0
    • First observedask
    • First observedbalance
    • First observedchat
    • First observedgenerate_image
    • First observedlist_models
    • First observedsecond_opinion

TDQS

A4.3/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: single prompt (ask), multi-turn chat, multi-model comparison (second_opinion), account balance, model discovery, and image generation. The ask/chat and ask/second_opinion boundaries are explicitly clarified in the descriptions, so an agent can select correctly.

Naming Consistency3/5

All names use snake_case, but the convention is mixed: list_models and generate_image are verb_noun, ask and chat are simple verbs, while balance and second_opinion are noun phrases. The names are still readable, but there is no predictable single pattern.

Tool Count5/5

Six tools are well-scoped for an AI model gateway: text completion, multi-turn chat, comparison, model listing, balance check, and image generation. Each tool earns its place without obvious redundancy or missing operational categories at this size.

Completeness4/5

The surface covers the core lifecycle for an AI proxy: discover models, check balance, send single or multi-turn prompts, compare models, and generate images. Minor gaps exist, such as richer model details or additional modalities, but core workflows are not blocked.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Bridges Google's Gemini CLI with MCP-compatible clients and integrates OpenRouter API for access to 400+ AI models. Provides 33 specialized tools enabling multi-AI workflows, collaborations, and debates between Claude, Gemini, and other LLMs.
    142
    -
  • A
    license
    A
    quality
    D
    maintenance
    Hosted multi-model AI media + chat MCP server. Generates images, video, audio, face-swaps and talking-avatars, and chats across 300+ models (Claude, GPT, Gemini, DeepSeek…) - all from one balance and one API key.
    16
    MIT