Skip to main content
Glama

Server Details

Cheapest API for any model across official, inference and relay providers; find free credits

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
hanzohanzhe/Grandet
GitHub Stars
1,102
Server Listing
Grandet
ChatGPT
–
Claude
–

TDQS

A4/5.0

Scored across 6 tools

Disambiguation4/5

The tools target distinct facets: price ranking (find_cheapest_api), free-credit discovery, glossary lookup, app profiles, raw evidence, and model-name resolution. There is some overlap around model/supplier selection, but descriptions explicitly bound each tool's usage ('use only when...', 'not before every recommendation'), which mitigates misselection.

Naming Consistency4/5

All names share a consistent grandet_ prefix and snake_case formatting, and most follow a verb_noun pattern (find_cheapest_api, list_apps, resolve_model, quote_evidence). grandet_glossary is a noun-only outlier, a minor deviation from the otherwise predictable convention.

Tool Count5/5

Six tools is well-scoped for a relay price/model-discovery service, with each tool covering a clearly separate concern (pricing, credits, glossary, apps, evidence, model resolution). No tool appears redundant or padding the surface.

Completeness4/5

The surface covers the core discovery lifecycle: resolving ambiguous model names, comparing prices, checking free credits, reading app profiles and raw evidence, and interpreting glossary terms. It lacks any configuration/connection-setup operation, but the stated purpose (public price and compatibility lookup) is largely covered.

Available Tools

6 tools
grandet_find_cheapest_apiFind a suitable low-cost model API / 寻找便宜且适用的模型 APIA
Read-onlyIdempotent
Inspect

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.

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

NameRequiredDescription
helpNo
scopeNo
boardsNo
schemaNo
coverageNo

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.

grandet_find_free_creditsFind free API credit / 查找免费 API 额度A
Read-onlyIdempotent
Inspect

Find current official free tiers, application-based credits and relay free groups. Return the stated benefit, six requirements, deadline, original observation and claim link. userCanMeet=no_card excludes explicit required/conditional card entries; unknown card requirements remain clearly labelled unknown. Application categories describe programs, not the user’s eligibility. Follow pagination.

NameRequiredDescriptionDefault
qNoModel, vendor or site to search, e.g. "gemini".
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.
kindNo"official" free tiers and credits, "relay" free groups, or "all".
langNoAnswer language: "en" or "zh-CN".en
pageNoResult page, starting at 1.
viewNo"compact" (default): about 18 KB for a typical query. "full": every field, often over 250 KB.compact
limitNoResults per page, 1–20.
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.
userCanMeetNoOnly offers the user can meet: "any", "no_card" (no payment card) or "student".
skillVersionNoGrandet Skill version when called from the Skill, e.g. "0.3.0". Omit otherwise.

Output Schema

NameRequiredDescription
helpNo
totalNo
offersNo
schemaNo
coverageNo
qualificationNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description earns credit above that by disclosing what a result contains (stated benefit, requirements, deadline, observation, claim link) and how pagination behaves, though it says nothing about rate limits or freshness guarantees of the catalogue.

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

Conciseness4/5

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

Front-loaded with the purpose and then moves straight into filter semantics and pagination with no filler sentences. Slightly dense and telegraphic in places, which costs it a perfect score, but every sentence carries information.

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?

For a 13-parameter, optional-argument search tool with an output schema present, the description covers purpose, the two non-obvious filter semantics and pagination — the items an agent is most likely to get wrong. Return-value explanation is redundant given the output schema, and no gaps materially block correct invocation.

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 coverage is 100%, so the baseline is 3, but the description genuinely adds meaning beyond the schema: it explains that userCanMeet=no_card excludes explicit required/conditional card entries while unknown card requirements stay labelled unknown, and that application categories describe programs rather than user eligibility. That clarifies filter semantics the schema leaves ambiguous.

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?

States a specific verb ('Find') and a well-scoped resource ('official free tiers, application-based credits and relay free groups'), which is clearly distinct from grandet_find_cheapest_api and the resolver/glossary siblings. It doesn't name an alternative sibling explicitly, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives conditional guidance for the no_card filter and tells the agent to 'Follow pagination', which is real usage direction, but never says when to choose this tool over grandet_find_cheapest_api or grandet_quote_evidence. Usage is implied rather than contrasted with alternatives.

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

grandet_glossaryRelay terminology / 中转站术语A
Read-onlyIdempotent
Inspect

Look up the published Grandet relay glossary. Site labels are source claims and glossary terms explain them; they do not verify quality. Query q or category and follow pagination. Unknown terms include up to three related FAQ links.

NameRequiredDescriptionDefault
qNoTerm or phrase to look up, e.g. "倍率" or "token group".
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
pageNoResult page, starting at 1.
limitNoResults per page, 1–20.
categoryNoLimit to one glossary category.
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.
skillBuildNoGrandet Skill build ID when called from the Skill. Omit otherwise.
skillVersionNoGrandet Skill version when called from the Skill, e.g. "0.3.0". Omit otherwise.

Output Schema

NameRequiredDescription
faqNo
termsNo
schemaNo
paginationNo
suggestionsNo

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations, the description discloses that glossary terms explain source claims but "do not verify quality," and that unknown terms return up to three related FAQ links. These are useful behavioral details not present in the schema or annotations. Auth, rate limits, and return format are not covered, but the output schema and annotations already handle much of that.

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

Conciseness5/5

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

The description is four short sentences and front-loads the core purpose. Every sentence adds useful information: purpose, epistemic caveat, query guidance, and unknown-term behavior. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 100% schema description coverage, the rich annotations, and the presence of an output schema, the description covers the remaining gaps well. It explains purpose, the non-verification caveat, pagination, and unknown-term behavior without needing to restate optional attribution parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter semantics are already well documented. The description reinforces q/category and pagination but adds no syntax or format details beyond what the schema already provides. A baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: "Look up the published Grandet relay glossary." It also distinguishes the glossary from verification tools by explaining that terms explain site labels but "do not verify quality." This separates it from siblings such as grandet_quote_evidence or grandet_find_cheapest_api.

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?

The description gives clear invocation context: "Query q or category and follow pagination." It also sets expectations for unknown terms, but it does not explicitly state when not to use the tool or name an alternative sibling. The purpose itself makes the appropriate use case clear.

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

grandet_list_appsGrandet application profiles / Grandet 应用接入清单A
Read-onlyIdempotent
Inspect

Read the shared Grandet application list and inference profiles before selecting a supplier. App profiles determine API compatibility; MCP capability alone does not prove an inference route or Skill installation. Use only when the target app ID, supported protocol or configuration variant is uncertain.

NameRequiredDescriptionDefault
appNoCatalogue app ID to show, e.g. "openclaw". Omit to list every app.
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
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.
skillBuildNoGrandet Skill build ID when called from the Skill. Omit otherwise.
skillVersionNoGrandet Skill version when called from the Skill, e.g. "0.3.0". Omit otherwise.

Output Schema

NameRequiredDescription
appsNo
schemaNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the safety profile is covered. The description adds genuinely useful context beyond that: app profiles determine API compatibility and 'MCP capability alone does not prove an inference route or Skill installation,' which shapes how the agent should interpret results. Return format is not described, but an output schema exists to carry that.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action and followed by the usage condition and the interpretive caveat. No hedging, no repetition, and every sentence carries new information relevant to invoking the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 0 required parameters, a complete output schema, and full annotation coverage, the description only needs to convey purpose and when to call it, which it does. The added note that MCP capability is not proof of an inference route closes the main interpretive gap an agent would face here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including app, host, targetApp, lang, skillBuild, and skillVersion is already documented, with host explicitly marked as attribution-only. The description adds no parameter-level detail (e.g., how app vs targetApp interact) beyond what the schema states, so the baseline of 3 applies.

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 description names a specific verb and resource: reading the shared Grandet application list and inference profiles. It is clearly distinguishable in intent from siblings like grandet_find_cheapest_api or grandet_resolve_model, though it does not explicitly name those alternatives. The phrase 'inference profiles' is slightly vague but is clarified by the surrounding sentences.

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?

It gives an explicit condition for use: 'Use only when the target app ID, supported protocol or configuration variant is uncertain,' which tells the agent when this lookup is warranted. It also supplies the rationale that app profiles, not MCP capability, determine API compatibility and Skill installation. It stops short of naming a concrete alternative tool to use when the app ID is already known.

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

grandet_quote_evidenceInspect a provider quote / 查看报价依据A
Read-onlyIdempotent
Inspect

Read one provider's paged public declarations for a model and optional rowId. Use only when a detail matters, not before every recommendation. A missing row on one page is not proof of absence; follow pagination if needed. This does not test model quality or spend money.

NameRequiredDescriptionDefault
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.
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.
rowIdNoThe rowId of the selected row, to read that exact declaration.
providerYesThe sourceId of the row to inspect (the site host, e.g. "api.example.com"), not the operator ID.
offerPageNoPage of this provider's declarations, starting at 1. Follow it when rowId is absent.
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.
skillVersionNoGrandet Skill version when called from the Skill, e.g. "0.3.0". Omit otherwise.

Output Schema

NameRequiredDescription
rowsNo
schemaNo
paginationNo
websiteUrlNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely non-obvious behavior: results are paginated, a missing row on one page is not proof of absence, and the call neither tests model quality nor spends money.

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

Conciseness4/5

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

Three sentences with no filler, front-loading the read operation before the usage caveat and the pagination warning. The opening clause is dense with undefined jargon, which costs a little readability, but nothing is redundant.

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?

An output schema exists, so return values need not be described, and the description still covers pagination semantics and the scope of what the call does not do. For a read-only 12-param tool the remaining gap is minor: no note on attribution-only params (host, lang, skillBuild) being optional.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across 12 parameters, so the schema already carries the heavy lifting and the baseline is 3. The description restates the model/rowId pairing and page-following rule but adds no format, precedence or default detail beyond what the schema documents.

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?

States a specific verb and resource: reads one provider's paged public declarations for a model plus optional rowId. It is distinguishable from list/find siblings by its single-provider, single-row scope, though the term "declarations" is domain jargon that is never defined and the title's "quote evidence" framing isn't reconciled with it.

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?

"Use only when a detail matters, not before every recommendation" is an explicit when-to-use and when-not-to-use rule, which is rare and valuable. It stops short of naming the alternatives (grandet_find_cheapest_api, grandet_resolve_model) that an agent should prefer for discovery, so routing is implied rather than stated.

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

grandet_resolve_modelResolve a model name / 识别模型名称A
Read-onlyIdempotent
Inspect

Look up public model identifiers when a requested name is ambiguous. Results are a page of candidates, not a cheapest-provider ranking. Prefer an exact officialId match; do not silently substitute a different model generation.

NameRequiredDescriptionDefault
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
nameYesModel name text to look up, e.g. "sonnet" or "deepseek v4".
pageNoResult page, starting at 1.
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.
skillBuildNoGrandet Skill build ID when called from the Skill. Omit otherwise.
skillVersionNoGrandet Skill version when called from the Skill, e.g. "0.3.0". Omit otherwise.

Output Schema

NameRequiredDescription
helpNo
schemaNo
statusNo
candidatesNo
paginationNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive and a closed world, so the safety profile is covered. The description adds real context beyond that: output is a page of candidates rather than a ranked answer, and ambiguous matches should not be silently substituted across generations. It does not discuss rate limits or disambiguation fallbacks.

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

Conciseness5/5

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

Three short sentences, zero filler, front-loaded with the purpose and immediately followed by the result-shape caveat and the matching rule. Every sentence earns its place.

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 and full schema coverage, the description need not explain return values or parameters; it covers purpose, result shape, and disambiguation policy for a 7-parameter tool. A note on paging behavior/termination would have closed the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (name, host, lang, page, targetApp, skillBuild, skillVersion) is already documented in the schema, including which are attribution-only and when to send targetApp. The description adds no parameter-level detail, so the baseline of 3 applies.

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

Purpose5/5

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

Specific verb+resource: 'Look up public model identifiers when a requested name is ambiguous.' It also explicitly distinguishes itself from the sibling grandet_find_cheapest_api by stating results are 'not a cheapest-provider ranking,' so an agent can route without opening either schema.

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?

States the triggering condition ('when a requested name is ambiguous') and the resolution rule ('Prefer an exact officialId match; do not silently substitute a different model generation'). It implicitly excludes the pricing use case by naming the cheapest-provider sibling, but does not enumerate other alternatives or say when to stop paging.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • Changedgrandet_find_cheapest_api4 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"
        +}
    • Changedgrandet_find_free_credits3 fields changed
      • addedInput schema / properties / skillBuild / maxLength
        Added value: +256
      • removedInput schema / properties / skillBuild / pattern
        Removed value: -"^[a-zA-Z0-9._-]{1,96}$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "coverage": {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    "help": {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    "offers": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "qualification": {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    "schema": {
        +      "type": "string"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgrandet_glossary5 fields changed
      • addedInput schema / properties / host
        Added value: +{
        +  "description": "The assistant or app making this call, e.g. \"claude-code\" or \"codex\". Attribution only; it does not change results.",
        +  "pattern": "^[a-zA-Z0-9._/-]{1,64}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / skillBuild
        Added value: +{
        +  "description": "Grandet Skill build ID when called from the Skill. Omit otherwise.",
        +  "maxLength": 256,
        +  "type": "string"
        +}
      • addedInput schema / properties / skillVersion
        Added value: +{
        +  "description": "Grandet Skill version when called from the Skill, e.g. \"0.3.0\". Omit otherwise.",
        +  "maxLength": 32,
        +  "type": "string"
        +}
      • addedInput schema / properties / targetApp
        Added value: +{
        +  "description": "Catalogue 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.",
        +  "pattern": "^[a-zA-Z0-9._/-]{1,64}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "faq": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 3,
        +      "type": "array"
        +    },
        +    "pagination": {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    "schema": {
        +      "type": "string"
        +    },
        +    "suggestions": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "terms": {
        +      "items": {},
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgrandet_list_apps3 fields changed
      • addedInput schema / properties / skillBuild / maxLength
        Added value: +256
      • removedInput schema / properties / skillBuild / pattern
        Removed value: -"^[a-zA-Z0-9._-]{1,96}$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "apps": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "schema": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgrandet_quote_evidence3 fields changed
      • addedInput schema / properties / skillBuild / maxLength
        Added value: +256
      • removedInput schema / properties / skillBuild / pattern
        Removed value: -"^[a-zA-Z0-9._-]{1,96}$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "pagination": {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    "rows": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "schema": {
        +      "type": "string"
        +    },
        +    "websiteUrl": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgrandet_resolve_model3 fields changed
      • addedInput schema / properties / skillBuild / maxLength
        Added value: +256
      • removedInput schema / properties / skillBuild / pattern
        Removed value: -"^[a-zA-Z0-9._-]{1,96}$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "candidates": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "model": {},
        +          "name": {},
        +          "officialId": {},
        +          "sourceCount": {}
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "help": {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    "pagination": {
        +      "additionalProperties": {},
        +      "type": "object"
        +    },
        +    "schema": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "maximum": 599,
        +          "minimum": 400,
        +          "type": "integer"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
  2. 6 tool updates
    • First observedgrandet_find_cheapest_api
    • First observedgrandet_find_free_credits
    • First observedgrandet_glossary
    • First observedgrandet_list_apps
    • First observedgrandet_quote_evidence
    • First observedgrandet_resolve_model

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.