Skip to main content
Glama

Find a suitable low-cost model API / 寻找便宜且适用的模型 API

grandet_find_cheapest_api
Read-onlyIdempotent

Compare Grandet model prices within each unit. Read listings for price-only ordering and conditions; legacy recommended/alternative/cheapest retain their old meanings. Use view=compact for shared connection cards and a short text response. Provide exactly one model or name selector. host records the source only and never selects the inference route. Send targetApp when the user or conversation identifies the intended API application, including explicit use in the current app. With no target, compare directly. An unrecorded app connection permits a price-only recommendation, not a compatibility claim. Omit profile/protocol for a multi-protocol app unless already specified. Existing client remains a legacy target-app alias. Infer coding/chat/long_output from the task; presets are estimates. Use grandet_list_apps only when application facts are needed. Do not request API keys.

Input Schema

NameRequiredDescriptionDefault
osNoOperating system the target app runs on, for connection steps: windows, macos, linux or unknown.unknown
mixNoWorkload used to blend input, cache and output prices into one price per million total tokens. Presets "chat" (default), "coding" and "long_output", or custom input/cache-read/output/cache-write shares totalling 100.
asOfNoEvaluate as of this UTC time (ISO 8601, e.g. "2026-10-16T12:00:00Z"). Omit to evaluate now.
hostNoThe assistant or app making this call, e.g. "claude-code" or "codex". Attribution only; it does not change results.
langNoAnswer language: "en" or "zh-CN".en
nameNoThe catalogue's 20-character hexadecimal raw-name ID (not the name text). Send exactly one of model or name.
viewNo"compact" (default): a short text summary plus the listings, with connection cards shared in integrationCards; about a third of the size. "full": every legacy field, with the whole JSON repeated as text.compact
limitNoRows per block, 1–20 (default 5).
modelNoModel to look up: a catalogue ID, an exact model name or a natural name such as "claude-sonnet-5-5". Send exactly one of model or name. An ambiguous name returns NEEDS_CLARIFICATION with candidates.
plansNo"best" (default) keeps one group per site; "all" lists every group of every site.
clientNoLegacy alias of targetApp. Prefer targetApp.
channelNo"standard" (default) lists ordinary channels, "declared-nonstandard" only channels the site itself labels nonstandard, "all" both.
currencyNoLimit to one unit board: USD_CREDIT or CNY_CREDIT (site credit, not cash), USD or CNY (cash). Never compare prices across units.
targetAppNoCatalogue ID of the app that will use the API, e.g. "openclaw", "claude-code" or "codex". Selects compatible protocols and connection steps. Send it only when the user says where the API will be used.
releaseSetNoPin a published data release by its release-set hash. Omit to use the current release.
skillBuildNoGrandet Skill build ID when called from the Skill. Omit otherwise.
endpointTypeNoLimit to one API protocol. Send it only when the user named a protocol.
skillVersionNoGrandet Skill version when called from the Skill, e.g. "0.3.0". Omit otherwise.
targetProfileNoAn inference profile ID of the target app (see grandet_list_apps). Only together with targetApp or client.

Output Schema

NameRequiredDescriptionDefault
helpNo
scopeNo
boardsNo
schemaNo
coverageNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / skillBuild / maxLength
      Added value: +256
    • removedInput schema / properties / skillBuild / pattern
      Removed value: -"^[a-zA-Z0-9._-]{1,96}$"
    • changedInput schema / properties / view / description
      Previous value: -"\"compact\" (default): a short text summary plus the listings, with connection cards shared in integrationCards; about a third of the size. \"full\": every legacy field, with the whole JSON repeated as text. \"brief\": a short text summary plus one structured body preserving required original fields; size varies with the requested limit and results and can exceed 12,000 characters."New value: +"\"compact\" (default): a short text summary plus the listings, with connection cards shared in integrationCards; about a third of the size. \"full\": every legacy field, with the whole JSON repeated as text."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "boards": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "basis": {
      +            "type": "string"
      +          },
      +          "listings": {
      +            "additionalProperties": {},
      +            "type": "object"
      +          },
      +          "rows": {
      +            "items": {},
      +            "type": "array"
      +          },
      +          "stats": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "count": {
      +                "type": "number"
      +              },
      +              "max": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "median": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "min": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "count",
      +              "min",
      +              "median",
      +              "max"
      +            ],
      +            "type": "object"
      +          },
      +          "unit": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "unit"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "coverage": {
      +      "additionalProperties": {},
      +      "type": "object"
      +    },
      +    "help": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "topics": {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "code": {
      +                "type": "string"
      +              },
      +              "url": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "code",
      +              "url"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "topics"
      +      ],
      +      "type": "object"
      +    },
      +    "schema": {
      +      "type": "string"
      +    },
      +    "scope": {
      +      "additionalProperties": {},
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish a safe read-only, idempotent, closed-world operation, but the description adds real semantics beyond them: host is attribution-only and 'never selects the inference route', an unrecorded app connection yields only a price-only recommendation rather than a compatibility claim, and presets are estimates. These clarify what the tool will and won't assert.

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

Conciseness3/5

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

It is front-loaded with the purpose first, but the body is a run-on sequence of semicolon-joined fragments that reads like release notes ('legacy recommended/alternative/cheapest retain their old meanings'). Much of it earns its place, yet the opaque jargon and lack of grouping reduce scannability for an agent.

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 an output schema present, return values need not be explained, and for a 19-parameter tool the description covers selection rules, attribution semantics, and alternative-tool routing well. Gaps are minor: it never states the core comparison semantics between price units beyond the schema enum, and unit-comparison guidance is thin.

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 description coverage is already 100%, so the baseline is 3, but the description adds constraints the schema does not spell out: 'Provide exactly one model or name selector', that client is a legacy alias of targetApp, that profile/protocol should be omitted for multi-protocol apps, and that targetApp is sent only when the user names an application. This meaningfully supplements the structured fields.

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

Purpose4/5

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

The opening sentence states a concrete verb and resource ('Compare Grandet model prices within each unit'), and the tool is differentiated from grandet_list_apps by an explicit rule ('Use grandet_list_apps only when application facts are needed'). It does not, however, distinguish itself from the other siblings (grandet_resolve_model, grandet_quote_evidence, grandet_find_free_credits), and the 'find cheapest' purpose implied by the name is only indirectly conveyed.

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?

Dense but substantive routing rules: when to send targetApp, when to omit profile/protocol, when host is irrelevant, when to use view=compact, and an explicit alternative tool (grandet_list_apps) with its trigger condition. It gives clear context and several exclusions, though it lacks a clean statement of when NOT to use this tool versus the free-credits or evidence siblings.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.