auxiliar-mcp · Open-source MCP server · MIT
Your agent asks. The benchmarks answer.
An MCP server that answers "which web-access API should I use for this job?" from measured public evals — not training-data folklore. Every answer carries its rank, run date, raw numbers and honest caveats, plus a route your agent can call immediately through the gateway.
$ claude mcp add auxiliar -- npx auxiliar-mcp
Data, not vibes
Left alone, an agent picks tools from whatever its training data absorbed — months stale and shaped by marketing. auxiliar-mcp answers from benchmark runs: every provider exercised on the identical public task corpus, per job, with the run date on every number.
Every number has a receipt
Answers state their rank (#n of m scored), the raw measured metrics behind it, when the run happened, and the caveats — the #1 pick still tells your agent when not to use it. Weak scores are published, not hidden.
Answer → API call, one step
Recommendations aren't reading material — they return the exact route on the gateway: api.auxiliar.ai/{provider}/{native-path}, callable with one auxiliar key. No new account, no new secret, no SDK swap.
Four tools, one question answered well
"What's the best provider for this job?" — asked as a pick, a leaderboard, a deep-dive, or a how-do-I-call-it.
recommend_tools
job, optimize_for?, max_latency_ms?, max_cost_usd?, limit?
The best provider(s) for a job, ranked by measured quality, latency p50, cost per success and error rate. Optimize for balanced, quality, cost or latency; set hard latency/cost ceilings and anything over them is excluded — and listed, with the reason.
get_scorecard
job
The full leaderboard for one job: every scored provider, best first, raw metrics and run dates included. For when your agent should compare all the options rather than be handed a pick.
get_provider
slug
One provider in full: its gateway route and call pattern, entry pricing, when to choose it, when to avoid it, and all of its dated scorecards across every job it was measured on.
about_auxiliar
—
The gateway's operating contract, machine-readable: base URL, auth header, route rule, what an empty balance returns, and where to get a key. Enough for an agent to go from zero to a working call on its own.
What an answer looks like
Real output of recommend_tools({"job": "scrape"}) — abridged for length, no values altered.
{
"job": "scrape",
"optimize_for": "balanced",
"latest_run": "2026-06-22",
"total_scored": 10,
"candidates": [{
"name": "Firecrawl",
"rank": 1,
"of": 10,
"composite": 9.81,
"measured_on": "2026-06-20",
"display": "Anti-bot bypass 100% ·
Markdown clean 9.6 / 10 · Latency p50 962 ms ·
Cost $0.0021 / success · Errors 0%",
"why": "Best-in-class — clears every
anti-bot vendor.",
"caveats": "You're cost-sensitive on hard
targets — stealth + JSON stack ~5–9× the
base credit.",
"call": "https://api.auxiliar.ai/firecrawl/
<native-path>",
"pricing_entry": "~$0.83 / 1k (credit/page)"
}],
"excluded_by_constraints": [],
"gated_not_scored": []
}
"rank": 1, "of": 10
Ten providers ran the identical scrape corpus. This is a measured ranking, not a directory listing — and the losers' scorecards are published too.
"measured_on": "2026-06-20"
No number is quoted without its run date. Your agent can judge freshness instead of trusting it.
"caveats": "…"
Even the winner discloses when it's the wrong choice. A recommender that can't say "not for this" isn't one.
"call": "https://api.auxiliar.ai/…"
The recommendation is executable as-is: the provider's native path and parameters, one Authorization: Bearer header, upstream keys injected server-side.
"excluded_by_constraints", "gated_not_scored"
Nothing is silently dropped. Providers filtered by your latency/cost ceiling are listed with the reason; providers that couldn't run the shared corpus are flagged, not omitted.
13 jobs it can rank
Your agent describes the job; the server answers from the providers measured on it — 70 scorecards across the catalog, latest run 2026-06-22.
search
11 scored
Web search: query → ranked results
serp
4 scored
Google SERP verticals (web, news, images, places, scholar) as structured JSON
answer
7 scored
Question → synthesized answer with cited sources
scrape
10 scored
One URL → clean page content/markdown, anti-bot handled
crawl
5 scored
Site → enumerate and fetch many pages
extract_ai
4 scored
Page → structured fields from an AI/natural-language schema
extract_rules
3 scored
Page → structured fields via CSS/XPath rules
scrape_domain
6 scored
Domain-specific scrapers for hard targets (e-commerce, social)
screenshot
8 scored
URL → rendered page image
act
6 scored
Declarative page interactions (click, fill, scroll) in one call
act_agent
2 scored
Autonomous natural-language browser agent for multi-step goals
parse
3 scored
PDF/document → text (OCR where supported)
watch
1 scored
URL → change detection / monitoring
Why an agent can trust the ranking
A recommender is only as good as its incentives. Ours are structural.
One corpus, every provider
Each job has a fixed public task corpus, and every capable provider runs the same one. Scores aren't self-reported or scraped from marketing pages — they're measured by our benchmark fleet and published, weak results included.
The ranking can't take a cut
The gateway's entire margin is a flat fee when you top up credits — the same 5.5% whether your agent routes to the #1 provider or the #8. Steering you toward pricier tools earns us nothing, so the benchmarks have nothing to sell.
Live data that declares itself
The server loads auxiliar.ai/evals.json at runtime (cached one hour) and falls back to a bundled snapshot offline — every response says which via data_source. It's the same dataset behind the human-readable scorecards at /tools.
Open source, no key required
MIT-licensed, source on GitHub, published on npm as auxiliar-mcp. The discovery tools work with no account at all — a key (with $5 free credit, no card) only enters when your agent acts on a recommendation.
Runs anywhere MCP runs
Claude Code, Claude Desktop, Cursor, or any MCP client. Node 18+, stdio transport, zero config.
# Claude Code
claude mcp add auxiliar -- npx auxiliar-mcp
// Any MCP client config { "mcpServers": { "auxiliar": { "command": "npx", "args": ["auxiliar-mcp"] } } }
On the roadmap · v1.0
From advisor to operator
Today the server recommends; v1.0 executes — search, scrape, extract and crawl through the gateway from inside the MCP, routed by the same measured rankings. The one-line install you add today is the same one that gets those tools.