InferIndex

io.github.InferIndex由 GitHub 账号 InferIndex 发布v1.0.0更新于 Oct 24, 2026

LLM API prices across 70+ providers: cheapest offer, comparisons, history and cost estimates.

已验证Streamable HTTP可网页运行云端与基础设施金融AI 与机器学习

概览

AI 生成的概览

远程 MCP 服务器,让助手比较 60 多家供应商的 LLM API 价格、查看价格历史、估算成本,并权衡自建托管与调用 API

可以做什么
按名称或部分名称查找已收录的模型 id,优先返回最佳匹配,并可按上下文长度、工具调用、JSON、视觉、区域、不用于训练、开放注册等条件筛选,还可附带用量数据用于成本估算。比较单个模型的当前报价,每个供应商和来源一行,按价格从低到高排列,并附量化精度、使用条件和可靠性。按天数、日期区间或指定日期查看各报价的价格历史以及模型实验室的官方价格。估算工作负载的每次请求和每月成本,计入阶梯定价和提示缓存价格。列出已收录的 GPU 类型及各档位最低租赁价格,以及某一 GPU 的租赁报价。判断在租用 GPU 上自建托管开源权重模型是否比使用最便宜的 API 报价更划算。
适用场景
在为工作负载挑选供应商或模型、判断报价是否有竞争力、追踪价格变化,或在自建托管开源权重模型与付费调用 API 之间做选择时使用。
运行要求
远程 Streamable HTTP 端点;无需安装、账号或密钥。可选通过 x-api-key 请求头传入 API 密钥以提高速率上限。需要能访问该服务的网络;请求按 IP 和按 API 路由限流。
安装前请注意
只读且无需认证,但价格采集自公开列表和解析的网页,应视为采集器最后一次看到的价格,而非计费保证;实际支出前请在供应商自己的页面确认。促销、单位解析错误和经销商加价都可能使数字失真。该 API 处于早期阶段,没有版本化契约,响应结构可能变化。

安装

在 SourceWeft 中

  1. 打开 控制台中的 InferIndex,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.InferIndex%2Finferindex/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "inferindex": {
      "type": "http",
      "url": "https://mcp.inferindex.dev/mcp"
    }
  }
}

README

InferIndex

InferIndex finds the cheapest provider for a given LLM, across more than 60 tracked pricing sources — direct provider APIs and aggregators/routers — with price history and promotion detection.

Live API: https://api.inferindex.dev

Service status: https://status.inferindex.dev (external uptime monitoring)

This repository holds the public documentation, examples and (eventually) a client SDK for that API. The backend itself — collection, parsers, data model — lives in a separate private repository.

bash
curl "https://api.inferindex.dev/cheapest?model=deepseek/deepseek-v3.2"

Example response as of 2026-10-07 — prices, providers and statuses change.

json
{  "query": "deepseek/deepseek-v3.2",  "model": {    "id": "deepseek/deepseek-v3.2",    "name": "DeepSeek: DeepSeek V3.2"  },  "other_matches": [],  "sort": "blended",  "cheapest": {    "provider": "GMICloud",    "via": "openrouter",    "via_name": "OpenRouter",    "offer_url": "https://openrouter.ai/models",    "offer_url_kind": "pricing",    "tier": "standard",    "input_per_1M": 0.2088,    "output_per_1M": 0.3096,    "cache_read_per_1M": 0.0216,    "blended_per_1M": 0.234,    "currency": "USD",    "quantization": "fp8",    "quantization_source": "declared",    "context_length": 163840,    "promo": true,    "also_via": [      "kilo"    ],    "unverified": []  },  "offers": [    {      "provider": "GMICloud",      "via": "openrouter",      "via_name": "OpenRouter",      "blended_per_1M": 0.234,      "…": "…"    },    {      "provider": "Nous Portal",      "via": "nous",      "via_name": "Nous Portal",      "blended_per_1M": 0.234,      "…": "…"    }  ],  "hidden_tiers": {    "flex": 1  },  "filters_unknown": {},  "strict": false}

Prices are in USD per million tokens, converted at the day's ECB rate when the source publishes another currency. blended_per_1M is (3 × input + output) / 4, a rough proxy for a typical chat workload. Each offer appears once, at its cheapest source: via is "direct" or the aggregator it comes from, and also_via lists other sources selling the same offer. promo is false unless a promotion was detected, in which case confidence and price_before_promo are filled in.

Status

Early / actively developed. The API is public and free to use, without authentication, but there is no uptime guarantee, no versioned API contract yet, and endpoints or response shapes may change. If you build something on it, expect to adjust when they do. Feedback and issues are welcome.

Service status: https://status.inferindex.dev (external uptime monitoring). It shows current and past availability; it is not an uptime guarantee.

Why

Provider pricing pages disagree, change without notice, and rarely show what resellers actually charge for the same model. InferIndex collects prices from more than 60 sources, each read from its own listing on its own schedule (from hourly to daily depending on the source), stores every change, and answers "who is cheapest for model X right now" from that history — client requests never trigger a live call to a provider.

Data freshness and limits

  • Cache: successful responses carry Cache-Control: public, max-age=300 (5 minutes) (except /health/ready, never cached). On the custom domain, responses are additionally held in Cloudflare's edge cache for the same 5 minutes.
  • Collection frequency: most sources are polled hourly; a few (exchange rates, model catalog) once a day.
  • Rate limits: 60 requests per minute per IP on /cheapest, /history, /resellers, /self-host, /gpus and /gpu-rentals, counting only requests not answered from cache. An optional API key (x-api-key header) raises this to 300 requests per minute per key; free keys will be offered, self-service sign-up isn't available yet. An invalid key returns 401. Over the limit, requests get 429. The MCP server has its own limits, see Use with AI assistants.
  • Cost estimate: add prompt_tokens, output_tokens, cached_ratio and requests_per_day to /cheapest or /resellers to get an estimated cost per request and per month for each offer, and sort=estimated_cost to rank by it. See docs/api.md.
  • Hidden tiers by default: degraded service tiers (flex, batch — lower priority, variable latency, in exchange for a lower price) are excluded from /cheapest and /resellers unless you ask for them with include_tiers=flex,batch. The number hidden is reported in hidden_tiers.

Reliability of the prices — read this before trusting a number

Data corrections are listed in the changelog.

InferIndex is a comparison tool, not a source of truth. Treat every price as "what our collector last saw", not as a guarantee of what you will be billed:

  • Prices come from public APIs and, for some sources, HTML pages parsed with source-specific code — a page redesign can silently break a parser until it's caught.
  • A price that looks unusually low may be a promotion, a misparsed unit, or a provider that hasn't updated its page yet. InferIndex applies guard rails (rejecting implausible prices, quarantining sudden jumps, flagging outliers against a second reference source) and reports detected promotions with a confidence level, but these are heuristics, not certainties.
  • Reseller aggregators can add their own margin. When a source's pricing model isn't fully understood, it is either excluded or flagged.
  • Always confirm the price on the provider's own page or dashboard before committing to real spend.

Endpoints

RouteWhat it does
GET /cheapest?model=deepseek/deepseek-v3.2Cheapest offer across all active sources, and every matching offer deduplicated and sorted
GET /resellers?model=deepseek/deepseek-v3.2Current prices across every reseller (direct and via aggregators), one line per source, paginated beyond 100 offers
GET /history?model=deepseek/deepseek-v3.2&days=30&granularity=dayPrice history, paginated by cursor
GET /models?search=deepseekSearch tracked models
GET /gpusGPU types tracked for rental prices, with the lowest price of each tier — see GPU rental prices
GET /gpu-rentals?gpu=h100-sxm-80gbRental offers for one GPU, one block per tier — see GPU rental prices
GET /self-host?model=qwen/qwen3-32b&tokens_per_day=50000000Is it cheaper to rent GPUs and run an open-weights model yourself, or to use the cheapest API offer? An estimate, hardware rental only — see how the answer is built
GET /trendingUp to 10 models currently getting attention, recomputed about every 6 hours
GET /index?series=marketWeekly market index, published every Monday since 2026-10-05 — see the methodology
GET /health/liveLiveness only: the service is up, no database access
GET /health/readyReadiness: data freshness and scheduler health, see below
/mcpMCP server for AI assistants, see Use with AI assistants

/cheapest filters

  • sort=blended\|input\|output — sort order (default blended)
  • min_context=100000 — minimum context window
  • quantization=fp8,bf16 — accepted quantizations
  • min_uptime=95 — minimum 30-minute uptime (%), as observed by an aggregator (not measured by InferIndex)
  • tools=true, json=true, vision=true — only offers declared to support tool calling, JSON output, image input
  • region=eu — only offers processed in that region (eu, us, cn, uk, ch, sg, id, my, vn, kr, jp, in, ca, au), per the providers' official documents
  • no_training=true — only offers whose providers state they don't train on prompts
  • no_waitlist=true — only providers whose signup is open to everyone
  • strict=true — also drop offers for which the filtered data is unknown (by default they're kept and flagged in unverified, counted in filters_unknown)
  • include_tiers=flex,batch — include degraded service tiers (excluded by default, see above)
  • explain=true — list every excluded offer with its reason codes (an explanation summary is always included)

Offers also carry conditions (data region, retention, training on prompts, and what it takes to open an account — each with its official source link), quantization_source (whether the compute precision is declared by the source or inferred), and, on /resellers, reliability from the providers' official status pages. See docs/api.md.

/history

granularity=raw returns one row per price change; day / week (weeks start Monday) return one point per period and per offer (provider, quantization, variant) with min, max and last price. Use days or from/to for a period, or at=2026-09-15 for the prices in force at a given moment. Prices are converted to USD at the ECB rate of the day of the price.

Model search (/models):

bash
curl "https://api.inferindex.dev/models?search=deepseek"

Example response as of 2026-09-15 — prices, providers and statuses change.

json
{  "count": 19,  "models": [    { "id": "deepseek/deepseek-v3.2", "name": "DeepSeek: DeepSeek V3.2" },    { "id": "deepseek/deepseek-v4.1-flash", "name": "DeepSeek: DeepSeek V4.1 Flash" }  ]}

/health/ready

Example response as of 2026-09-15 — prices, providers and statuses change.

json
{  "ready": true,  "status": "ok",  "failures": [],  "degraded": [],  "warnings": ["2 price source(s) in error", "1 announcement source(s) in error"],  "prices": { "current_offers": 5664, "latest_check_at": "2026-09-15T05:01:05.639Z", "latest_check_age_minutes": 1.5 },  "watcher": { "active_sources": 84, "errors": 1, "persistent_errors": 0, "latest_check_at": "2026-09-15T05:02:08.890Z", "latest_check_age_minutes": 0.4 },  "schedulers": { "active": 62, "ok": 62, "starting": 0, "late": 0, "not_started": 0 },  "source_errors": { "count": 1, "persistent": 0 },  "version": { "id": "…", "tag": "", "deployed_at": "…" },  "checked_at": "2026-09-15T05:02:34.383Z"}

status is ok, degraded (a non-critical part is having trouble — see the degraded array for which) or unavailable (no usable price data). HTTP 200 for ok/degraded, 503 for unavailable. Useful as an uptime-monitor target if you depend on this API.

Full route and parameter reference: docs/api.md.

Use with AI assistants (MCP)

InferIndex is also available as a remote MCP server, so an AI assistant can look up prices for you:

  • Endpoint: https://mcp.inferindex.dev/mcp (Streamable HTTP) (https://api.inferindex.dev/mcp also works, as an alias)
  • Listed in the official MCP Registry as io.github.InferIndex/inferindex.
  • Read-only, no authentication. An API key can be passed in the x-api-key header.
  • Limits: 120 requests per minute per IP on /mcp, at most 10 JSON-RPC messages per batch and 64 KB per request (otherwise 400 or 413 with JSON-RPC error -32600). Over the rate limit: 429 with JSON-RPC error -32000. Each tool call also counts toward the limit of the API route it uses (/cheapest, /resellers, /history, /self-host, /gpus, /gpu-rentals).
ToolWhat it does
search_models(query)Find the exact id of a model
cheapest(model, …)Cheapest offers, with the same filters as /cheapest (min_context, tools, json, vision, region, no_training, no_waitlist, strict, include_tiers), optional usage (prompt_tokens, output_tokens, cached_ratio, requests_per_day) and limit
compare_providers(model, sort, limit, …)Every offer, one line per provider, with usage conditions and reliability
price_history(model, days | from + to | at, granularity, provider, limit)Offer price history, plus the lab's official prices
estimate_cost(model, prompt_tokens, output_tokens, cached_ratio, requests_per_day)Estimated cost per request and per month, sorted
list_gpus()GPU types tracked for rental prices, with the lowest price of each tier
gpu_rentals(gpu, tier, gpu_count, region, detail)Rental offers for one GPU, one block per tier
self_host_or_api(model, tokens_per_day, utilization, …)Self-host an open-weights model on rented GPUs, or use the cheapest API offer? Hardware rental only, see how the answer is built

Every result includes api_url, the equivalent API call, so you can check or reuse it.

cheapest, compare_providers and estimate_cost return a compact view by default: the winner in detail and one short line per other offer. Pass detail: "full" to get every field of every offer. In the compact view, an absent condition was not published by the provider (it never means "no"), and a flag that is not listed in signals is false.

Setup

For Cline and other agents that install servers themselves, see llms-install.md.

Claude Code

bash
claude mcp add --transport http inferindex https://mcp.inferindex.dev/mcp

With an API key, add --header "x-api-key: YOUR_KEY".

Claude Desktop / claude.ai: Settings → Connectors → Add custom connector, URL https://mcp.inferindex.dev/mcp. Older Claude Desktop versions, in claude_desktop_config.json:

json
{ "mcpServers": { "inferindex": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.inferindex.dev/mcp"] } } }

Cursor: one click, or add it by hand.

[Add to Cursor]

In ~/.cursor/mcp.json:

json
{ "mcpServers": { "inferindex": { "url": "https://mcp.inferindex.dev/mcp" } } }

With an API key, add "headers": { "x-api-key": "YOUR_KEY" } next to "url".

Codex CLI

bash
codex mcp add inferindex --url https://mcp.inferindex.dev/mcp

Or in ~/.codex/config.toml:

toml
[mcp_servers.inferindex]url = "https://mcp.inferindex.dev/mcp"

With an API key, add env_http_headers = { "x-api-key" = "INFERINDEX_API_KEY" } to that table and set the INFERINDEX_API_KEY environment variable.

Contributing

Documentation fixes and example contributions are welcome — open a pull request or an issue. This repository covers the public API surface only; the backend itself is not open source.

License

  • Documentation (this README, docs/): CC BY 4.0. Reuse and adapt it freely, with credit to InferIndex.
  • Code (examples, snippets, client SDK): MIT.

These licenses cover this repository only, not the InferIndex backend or its price data.

来源:README.md,提交 0344797

工具

8

search_models

Search models

Find the exact id of an LLM tracked by InferIndex from a name or partial name (e.g. 'deepseek', 'qwen3 max', 'claude opus'). Returns matching model ids and names, best match first.

输入参数query必填

cheapest

Cheapest offers for a model

Cheapest current API offers for one model across direct providers and aggregators, in USD per 1M tokens (input, output, blended 3:1). Stale prices, and flex/batch tiers, are excluded by default. Optional filters (context, tools, JSON, vision, region, no training on prompts, open sign-up) and usage (tokens per request, requests per day) to get an estimated cost per request and per month. Returns the winner in detail and one short line per following offer. A condition that is absent was not published by the provider, it never means "no"; a flag not listed in signals is false.

输入参数jsonlimitmodel必填toolsdetailregionstrictvisionmin_contextno_trainingno_waitlistcached_ratio另有 4 个

compare_providers

Compare providers for a model

Current offers for one model, one line per provider and source (direct or via an aggregator), cheapest first (10 by default), with price, quantization, signals and training on prompts when published; the cheapest offer comes in detail. Pass detail: "full" for context, every published condition (data regions, sign-up) and reliability from official status pages on each offer.

输入参数sortlimitmodel必填detailregionstrictno_trainingno_waitlistcached_ratioinclude_tiersoutput_tokensprompt_tokens另有 1 个

price_history

Price history of a model

Price history of one model: every offer tracked by InferIndex (daily or weekly min/max/last price in USD, or raw price changes), plus the official price of the model's lab over time. Give either days, or from/to (YYYY-MM-DD), or at (a date) for the prices in effect that day.

输入参数attodaysfromlimitmodel必填providergranularity

estimate_cost

Estimate the cost of a workload

Estimated cost of a workload on one model at each provider: cost per request, and per month if requests_per_day is given, taking the provider's tiered pricing and prompt-cache price into account. Offers sorted by estimated cost, cheapest first: the cheapest in detail, then one short line per offer with its estimated cost.

输入参数limitmodel必填detailcached_ratiooutput_tokensprompt_tokensrequests_per_day

list_gpus

GPU types tracked for rental prices

GPU types whose rental price InferIndex tracks (H100, A100, L40S…), with the lowest price per GPU per hour in USD for each tier (guaranteed, community, spot) and the number of GPUs of that configuration. Prices are per GPU per hour, as published by each provider, and dated. Tiers are different products and are never compared with each other.

无需输入参数。

gpu_rentals

Rental offers for one GPU, by tier

Rental offers for one GPU type: provider, price in USD per GPU per hour, number of GPUs in the published configuration, billing and region when published. One block per tier (guaranteed, community, spot), each with its own cheapest offer, also given per configuration (cheapest_by_gpu_count: the price per GPU of a single GPU and of a multi-GPU node are not comparable); tiers are never compared with each other. guaranteed: capacity the provider presents as not interrupted; community: third-party hosts; spot: interruptible capacity. Prices are as published by the provider, and dated. Get the GPU id from list_gpus.

输入参数gpu必填tierdetailregiongpu_count

self_host_or_api

Self-host an open model or use the API?

Is it cheaper to host an open-weights model yourself on rented GPUs, or to use the cheapest API offer? Returns a one-sentence verdict (headline) and the numbers behind it: the break-even volume in million tokens per day, the throughput the whole configuration must deliver for self-hosting to cost less (required_tokens_per_second: compare it with what your setup does), the break-even utilization when a throughput is known, the GPU configuration and its hourly price, and what the verdict rests on (confidence). Without a volume you still get the verdict and the break-even volume. It is an estimate: the throughput is a published measurement (measured), an estimate scaled from one (derived; estimated for a wide range), or a published minimum (lower_bound: a floor, valid for requests of up to 2,048 tokens in total, that can show self-hosting wins, never that the API is cheaper); or you give your own tokens_per_second. When no published figure decides, the headline gives the break-even volume and the required throughput, to compare with yours, rather than a yes or no, and may point out a dearer setup that published figures do decide (settled_alternative: for comparison, not a recommendation). headline_kind and headline_values give the headline as fields. It declines to give a number (status refused, with a reason) when it cannot do so reliably, for example a closed model, weights that do not fit the requested GPU, or a GPU nobody rents. Hardware rental only: the hourly price the provider publishes for the machine. It does not count the engineering to deploy and run the model, monitoring, redundancy, start-up time, or storage and network costs billed separately.

输入参数gputiermodel必填detailgpu_countutilizationquantizationoutput_tokensprompt_tokenstokens_per_dayweights_marginrequests_per_day另有 1 个

版本历史

1
  1. v1.0.0最新Sep 18, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分