# Grandet price lookup — service 0.3.0

Look up the cheapest API for a model, anonymously, over MCP or HTTP. No account or API key. Install Grandet Skill for me: https://grandet.ai/download.md

## Quick start

- MCP (Streamable HTTP, anonymous): `https://grandet.ai/mcp`. Main tool: `grandet_find_cheapest_api`.
- HTTP: `https://grandet.ai/api/v1/board?model=claude-sonnet-4-6&view=compact&lang=en`
- Send the user's model name as `model`. A unique match is used; an ambiguous one returns `NEEDS_CLARIFICATION` with up to two candidates in `resolution.candidates`. Ask the user which one they mean.
- Machine contract: https://grandet.ai/public-data/price-finder.json

## What to read in the response

| Field | What it is |
|---|---|
| `official[]` | The model maker's own regular price, in cash. `currency` is `USD` or `CNY`; `input` and `output` are per 1,000,000 input or output tokens; also `cacheRead`, `cacheWrite`, `conditions`, `observedAt`, `sourceUrl`. |
| `listings.inference[]` | Up to two inference providers (services that sell model calls for cash), same fields. An entry with `aggregator: true` (or a condition with `aggregator: true`) is a platform that routes to other providers. |
| `boards[]` | One board per unit: `USD_CREDIT`, `CNY_CREDIT`, `USD`, `CNY`. Never compare numbers across boards. |
| `boards[].listings.lowest` | The lowest prices, at most two different sites, among quotes within the freshness limit. This is the answer for that unit. |
| `boards[].listings.gated` | Lower prices behind a condition the site states (minimum top-up, members only, enterprise only). |
| `boards[].listings.reference` | Lower prices that need a second look: cross-site outliers, review flags, older quotes. `reviewReasons` and `riskSignals` say why. |
| `boards[].listings.folded` | `[{client, count, lowerThanLowestCount}]`: groups the site limits to another client. Send `targetApp` with that client to see them. |
| Each row | `sourceId` (site), `plan` (group), `modelName`, `blended` (price per 1,000,000 total tokens at the workload in `scope.mix`), `input`/`output`/`cacheRead`, `unit`, `observedAt`, `freshness` (`FRESH` or `STALE`), `listing.hint` (the site's own condition, at most 50 characters), `integration`. |
| `integration` | How to connect: `baseUrl` with `baseUrlMode` (`BASE` usable, `SUGGESTION` confirm with the user, `INFO_ONLY` or `NONE` not usable), `tokenGroup` (the group to pick when creating the token), `model`. In `view=compact`, `integration.card` points into the shared top-level `integrationCards`. |

Units: `USD_CREDIT` and `CNY_CREDIT` are site credit, not cash. What credit costs in real money depends on each site's top-up rate, which Grandet does not convert yet. Do not compare credit prices with official or inference cash prices, and do not describe a relay as N% cheaper than official.

Older fields `recommended`, `alternative`, `cheapest` and `rows` keep their earlier meanings for older clients and may include rows the `listings` blocks leave out. New clients read `listings`.

## Example (trimmed, values change with each release)

```json
{
  "official": [
    {"vendor": "Anthropic", "currency": "USD", "unit": "PER_MILLION_TOKENS", "input": "3", "output": "15", "cacheRead": "0.30", "cacheWrite": "3.75",
     "conditions": [{"cacheWriteTTL": "5m"}], "observedAt": "2026-10-16T01:39:42Z", "sourceUrl": "https://platform.claude.com/docs/en/about-claude/pricing"}
  ],
  "listings": {
    "inference": [
      {"vendor": "DeepInfra", "currency": "USD", "unit": "PER_MILLION_TOKENS", "input": "3.00", "output": "15.00",
       "conditions": [{"context": "976k"}], "observedAt": "2026-10-16T01:39:50Z", "sourceUrl": "https://deepinfra.com/pricing"}
    ]
  },
  "boards": [
    {
      "unit": "USD_CREDIT",
      "listings": {
        "lowest": [
          {"sourceId": "oojj.top", "plan": "aws0-ex", "modelName": "claude-sonnet-4-6", "blended": "0.3", "observedAt": "2026-10-10T07:28:27Z", "freshness": "FRESH",
           "integration": {"baseUrl": "https://oojj.top", "baseUrlMode": "BASE", "tokenGroup": "aws0-ex", "model": "claude-sonnet-4-6"}}
        ],
        "gated": [],
        "reference": [
          {"sourceId": "api.pezayo.com", "plan": "codex anthropic", "blended": "0.018", "observedAt": "2026-10-10T07:20:09Z", "freshness": "FRESH",
           "riskSignals": ["REVIEW_FLAG"], "reviewReasons": ["CROSS_SOURCE_OUTLIER"]}
        ],
        "folded": [{"client": "claude-code", "count": 88, "lowerThanLowestCount": 0}]
      }
    }
  ]
}
```

Read as: official price input 3 / output 15 USD per million tokens; DeepInfra the same in cash; lowest relay oojj.top group "aws0-ex" at 0.3 USD credit per million total tokens (credit, not cash); api.pezayo.com is listed only as a reference because it is more than 20 times below most sites for the same model; 88 more quotes are limited to Claude Code.

## Parameters

`/api/v1/board` and `grandet_find_cheapest_api` take the same parameters. Unknown parameters return 400.

| Parameter | Use |
|---|---|
| `model` or `name` | Exactly one. `model`: catalogue ID, exact model name or a natural name. `name`: the catalogue's 20-character hexadecimal raw-name ID. |
| `lang` | `en` or `zh-CN`. |
| `limit` | Rows per block, 1–20. |
| `view` | `compact` (shared connection cards, smaller) or `full`. |
| `mix` | Workload shares: presets `chat` (75/0/25/0), `coding` (20/70/10/0), `long_output` (35/0/65/0) as input/cache-read/output/cache-write, or custom shares totalling 100. Default `chat`. Presets are estimates. |
| `targetApp` | The app that will use the API, when the user names it (including "here"). Selects matching protocols and connection steps. |
| `endpointType` | `openai`, `openai-response`, `anthropic` or `gemini`, only when the user named a protocol. |
| `currency`, `channel`, `plans` | Limit to one unit; `standard`, `declared-nonstandard` or `all` channels; `best` (one group per site) or `all` groups. |
| `asOf`, `releaseSet` | Pin the evaluation time and release. Without them, the request is evaluated at request time. |
| `host`, `skillVersion`, `skillBuild` | Statistics only: which app sent the request and which Skill build. `host` never chooses the route or workload. |
| `os` | `windows`, `macos`, `linux` or `unknown`, for connection steps. |

The legacy `client` parameter still works as an alias for `targetApp`. Target priority: `targetApp`, then `client`, then generic. With only `host=codex` and no target, the lookup is generic chat with no Codex protocol filter.

## Statuses you may see

| Status | Meaning |
|---|---|
| `NEEDS_CLARIFICATION` | The model name matches more than one model. Ask the user which. |
| `NO_ELIGIBLE_RECOMMENDATION` (board `status`) | No offer on this board can be listed under these conditions; the reason is returned. Do not switch to another model. |
| `PRICE_ONLY_UNVERIFIED_APP_ROUTE` | Prices are listed, but how to connect this app (for example Cursor, or an app Grandet has not recorded) is not verified. |
| `EXPLICIT_PROTOCOL_UNVERIFIED_APP_ROUTE` | Prices are filtered by the protocol you named; connecting the app with it is not verified. |
| `NEEDS_CONNECTION_DETAILS` | The app is known but has no recorded setup for this platform; `nextStep` says what is missing. |
| HTTP 409 | The release changed between requests. Read `https://grandet.ai/api/v1/catalog-version` and retry once. |

Known conflicts between an app, its platform and a protocol stay errors. Do not remove constraints or switch to legacy parameters to get around them.

## Connecting

Each row's `integration` (or its shared card in `integrationCards`) gives `configurationFormat`, `configurationPath`, `docsUrl` and `steps`. Replace `{{model}}` and `{{tokenGroup}}` in `stepsTemplate` with the row's values.

- Claude Code with `LAUNCH_ENVIRONMENT`: set the documented environment variables in the terminal that starts Claude Code.
- Configuration files: use the documented JSON, JSONC, TOML or YAML path. `GUI_FIELDS` applies only to apps with a documented settings screen.
- `baseUrl` and `baseUrlMode` come from the address the site itself declares, with evidence and observation time. On New API sites `tokenGroup` is the full group name.
- The user enters their own key locally. This service never asks for keys.

Grandet Skill can do the connection for the user: preview, backup, write after confirmation, a free key check and undo. See https://grandet.ai/download.md .

## Other tools

| MCP tool | HTTP | Use |
|---|---|---|
| `grandet_find_free_credits` | `GET /api/v1/free-credits?q=&kind=&userCanMeet=&lang=&page=&limit=` | Official free tiers and relay free credit, with card, ID, payment, invite, application and renewal conditions. |
| `grandet_resolve_model` | `GET /api/v1/models?q=<name>&scope=groups` | Model ID only. `/api/v1/models` rejects `lang` and `limit`. |
| `grandet_quote_evidence` | — | The original quote behind a row: `provider` is the row's `sourceId`, plus `model` and optional `rowId` or `offerPage`. |
| `grandet_list_apps` | — | Recorded apps, their profiles and protocols. Use only when you need app facts. |
| `grandet_glossary` | `GET /api/v1/glossary?q=<term>&lang=zh-CN` | Relay slang. Send only `q` and `lang`; statistics parameters return 400 here. |

Identical model, mix, target, limit, release and time give the same result over HTTP and MCP. Version 0.3.0 names this service contract; release and deployment identities change independently.

## 中文说明

- 查价：MCP `https://grandet.ai/mcp`（匿名），或 `GET https://grandet.ai/api/v1/board?model=<模型名>&view=compact&lang=zh-CN`。模型名直接传；有歧义时返回 `NEEDS_CLARIFICATION`，问用户选哪个。
- 读结果：`official` 是官方现金价，`listings.inference` 是推理服务商现金价，输入、输出都按每百万 token；每张榜 `boards[]` 的 `listings.lowest` 是有效期内的中转站最低价（每百万总 token），`gated` 是有门槛的更低价，`reference` 是需要再看一眼的更低价（含较旧报价），`folded` 是限定其他客户端的分组。
- 单位：`USD_CREDIT`、`CNY_CREDIT` 是站内额度，不是现金，不能和官方价、推理服务商价直接比，也不能跨榜比。
- `host` 只用于统计来源，不决定线路；用户说了要接到哪个应用，就传 `targetApp`。只传 `host=codex` 时按通用聊天用量查。
- `PRICE_ONLY_UNVERIFIED_APP_ROUTE`：价格照常给，但这个应用怎么接 Grandet 还没核实。`NEEDS_CONNECTION_DETAILS`：应用已知，但这个系统上没有记录接法，看 `nextStep`。
- 接入字段：`integration.baseUrl`、`baseUrlMode`、`tokenGroup`（建令牌时选的分组）。Key 由用户在本机填写，本服务不索取。
- 免费额度：`GET https://grandet.ai/api/v1/free-credits?q=gemini`，或 MCP `grandet_find_free_credits`。
- 帮我安装 Grandet Skill：https://grandet.ai/download.md

## Current Skill build / 当前 Skill 构建

`grandet-skill-0.3.0-build.20261018` · public product version 0.3.0.
- zip: 435666 bytes; SHA-256 `8fffbb70384bd56a633f9f2b6cd1608ed9f432906ae60f8691cb79ba736a4a9d`
- skill: 133539 bytes; SHA-256 `ac485e25def0cfbd462136a8b62f12c5dd7369060f1f3e06828a958427377838`

Complete installation, verification, update and receipt opt-out: https://grandet.ai/download.md
