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
24 providers 70 dated scorecards 13 jobs covered latest run 2026-06-22

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.