OpenNodes
Server Details
Discover verified AI inference nodes, get the best node+model per task, pre-price chains.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- opennodes-io/opennodes
- GitHub Stars
- 0
- Server Listing
- opennodes
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
The tools mostly target clearly distinct resources and actions: search_offerings browses offerings, recommend acts as an advisor, estimate prices a specified chain, and get_node/get_offering retrieve different detail levels. There is minor potential overlap between recommend and estimate because both can return cost estimates, and between find_locations and find_residency because both concern geography, but the descriptions give explicit routing guidance.
Most names are readable snake_case action names, with find_locations, find_residency, get_node, get_offering, and search_offerings following a clear verb-plus-object pattern. The bare verbs estimate and recommend are minor deviations from that pattern but remain clear and consistent with the registry vocabulary.
Seven tools is well-scoped for a read-only AI inference registry and advisor: search, recommend, estimate, node detail, offering detail, location, and residency. Each tool earns its place and the surface does not feel bloated or thin.
The tool set covers the core registry workflows: discovering offerings, recommending models, estimating costs, inspecting nodes and offerings, and checking locations and residency commitments. Minor gaps remain, such as no direct node/provider search by name and no dedicated model-level lookup or comparison tool, but agents can work around these through search_offerings and get_node.
Available Tools
7 toolsestimateEstimate the cost of a chainARead-onlyIdempotentInspect
Pre-price an invocation chain BEFORE spending money. Each step is either a concrete offering ("node_id/offering_id") or a select query that picks the best match, plus expected input and output tokens. Returns per-step cost bounds in USD, the pinned card_revision that makes each estimate enforceable at invocation, and chain totals. Use it to compare routes or budget a multi-model pipeline; nothing is invoked or charged.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | Steps in execution order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, it discloses that no invocation or charge occurs and that results are cost bounds rather than a single guaranteed price. It also explains the practical significance of the returned pinned card_revision: making an estimate enforceable at invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool’s purpose, then efficiently covers inputs, outputs, use cases, and side-effect safety. Every sentence contributes operational information without unnecessary background or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the detailed nested schema, the description supplies the mental model needed to invoke the tool and interpret its results: ordered chain steps, per-step USD bounds, enforceable revisions, and totals. The absence of an output schema is mitigated by this explicit return-value summary, while the schema documents the detailed filters and constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description usefully summarizes the step shape—either a concrete offering or a select query, plus token estimates—but this largely repeats the fully documented schema. It adds no further guidance on estimating token counts, selection tie-breaking, or other parameter behavior, so the high schema coverage leaves this at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
“Pre-price an invocation chain” states a specific action and resource, while “compare routes or budget a multi-model pipeline” clarifies its planning role. This clearly distinguishes cost estimation from the discovery- and recommendation-oriented sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit timing (“BEFORE spending money”) and concrete use cases: comparing routes and budgeting a pipeline. “Nothing is invoked or charged” also supplies a clear when-not boundary by ruling out use for execution or payment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_locationsFind where models runARead-onlyIdempotentInspect
Where AI models are served, by country: every known serving site (provider, region, city or facility, live or planned) with its evidence basis (claimed, documented, measured, attested), its source page, a map point (geo: lat, lon, precision; derived when only the region is known), and the models it serves. Sites whose provider publishes no model list are included with a note. Built from node cards, imported catalogs and curated location seeds. Use it to answer "which providers serve which models in Canada" or "what serves gpt-oss within 500 km of Montréal", or to check a residency requirement before choosing an offering; then search_offerings with region to pick one.
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | A point as "lat,lon" in decimal degrees, e.g. "45.50,-73.57" for Montréal. Adds distance_km to each site and sorts nearest first. | |
| basis | No | Minimum evidence for a site: claimed < documented < measured < attested. | |
| model | No | Substring of a model name or artifact, e.g. "gpt-oss" or "command". Keeps only sites serving a match. | |
| status | No | Only live or only planned sites. Omit for both. | |
| country | No | ISO 3166 code; a country also matches its subdivisions, e.g. "CA" matches "CA-QC". Omit for every country. | |
| residency | No | Only sites covered by a residency commitment at least this strong: processing (inference and stored data stay in the area) or storage (data at rest only). | |
| within_km | No | With `near`: only sites within this great-circle distance. Sites known only to the country are excluded, since their point is a placeholder. | |
| availability | No | With a residency filter: count only commitments offered this widely: default (every customer), opt_in (adds settings and regional endpoints), enterprise (adds contract-only offers; the default). | |
| exclude_lineage | No | Comma-separated ISO country codes; drops models whose declared lineage includes any of them, e.g. "CN". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, open-world, idempotent profile, and the description adds substantive context beyond them: data provenance (node cards, imported catalogs, curated location seeds), the evidence ladder, inclusion of sites whose provider publishes no model list (with a note), and placeholder geo points marked `derived`. It also flags that country-only sites are dropped by distance filters, which is exactly the kind of caveat an agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the resource and its fields, then pivots to usage, which is the right order. The single dense paragraph with stacked parentheticals is heavy to parse, and the phrase 'Built from node cards, imported catalogs and curated location seeds' is the least load-bearing sentence, but nothing is truly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields (evidence basis, source, geo with precision, models served) and warns about derived/placeholder points, which is what an agent needs to interpret results. For a 9-parameter, zero-required filter tool it is nearly complete; only the relationship to find_residency is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter descriptions are already detailed (evidence ordering, residency strengths, availability tiers), so the schema carries most of the semantic load. The description contributes mainly by demonstrating parameter combinations in its example queries ('gpt-oss within 500 km of Montréal' implies near + within_km + model), which is a modest addition rather than new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause names a specific resource and scope ('every known serving site ... provider, region, city or facility, live or planned') and enumerates the attributes returned (evidence basis, source page, geo point, models served). This is clearly a location/site lookup, distinct from search_offerings (offerings) and find_residency (commitments), so an agent can route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete trigger questions ('which providers serve which models in Canada', 'what serves gpt-oss within 500 km of Montréal') and an explicit follow-up route: use search_offerings with `region` to pick an offering. The gap is that it also claims to support 'check a residency requirement' without acknowledging the sibling find_residency, leaving ambiguity about which of the two to call for residency questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_residencyFind residency commitmentsARead-onlyIdempotentInspect
What each AI provider officially promises about where prompts, outputs and stored data stay: per provider (cloud, lab API, inference host or router), its commitments, each with a commitment level (processing: inference and stored data stay in the scope; storage: data at rest only; none; unstated), the region codes it covers, who gets it (default, opt_in, enterprise), the programme name, a short statement and the source page with the date it was checked. Includes routers and providers with no known sites. Use it to answer "which providers keep data in the EU by default" before choosing an offering; then find_locations or search_offerings with region.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only providers of this kind. | |
| scope | No | Region code, e.g. "EU", "DE", "US", "CA". Keeps providers with a processing or storage commitment whose scope lies within it. EU and EEA cover their member states. | |
| node_id | No | Only the provider that covers this registry node id. | |
| commitment | No | Minimum commitment: processing, or storage (which also matches processing). | |
| availability | No | With a residency filter: count only commitments offered this widely: default (every customer), opt_in (adds settings and regional endpoints), enterprise (adds contract-only offers; the default). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. Beyond that, the description discloses the semantic model of commitment levels (processing vs storage vs none vs unstated) and notes that routers and providers with no known sites are included — valuable context a caller could not infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is well front-loaded with purpose first and usage second, but the opening sentence is a long comma-chained enumeration that is dense to parse. No sentence is wasted, though the field list could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return content and does so thoroughly: commitment level, region coverage, availability tier, programme name, statement, and source page with check date. That is sufficient for an agent to call it correctly without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds meaning beyond the schema by explaining the commitment taxonomy, which clarifies what filtering by `commitment` actually selects. It also frames the tool's output fields (region codes, availability classes), useful orientation even though it does not detail each parameter's syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 statement — what each AI provider officially promises about where prompts, outputs and stored data stay — and enumerates the returned fields (commitment level, region codes, availability, programme, source page). It is clearly distinguishable from sibling tools like find_locations and search_offerings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete triggering question ('which providers keep data in the EU by default') and explicitly routes follow-up work to find_locations or search_offerings with `region`. Alternatives and sequencing are named rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nodeGet one nodeARead-onlyIdempotentInspect
Who runs a node and how it has behaved: operator, country and regions, endpoints, declared hardware, trust tier and its history (verifications, suspensions, reinstatements, with reasons), recent registry probe results with an availability summary, and its offerings with context window and price. Use it to vet a provider before relying on it; take node_id from search_offerings, recommend or get_offering results. For one offering's full card, use get_offering.
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | Yes | Reverse-DNS node id, e.g. "io.opennodes.demo-node" or "import.openrouter.ai". | |
| offering_limit | No | Maximum offerings to list; imported catalogs can hold hundreds. `offerings_total` always gives the full count. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description goes beyond them by disclosing the returned payload in detail — trust-tier history with reasons, probe results with an availability summary, offerings with window and price — which is the useful behavioral context here since there is no output schema. It does not mention auth requirements or result-size limits, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the payload inventory, then usage and the sibling pointer, in two sentences with no filler. The first sentence is a dense compound list, but every clause names a returned field and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the full burden of describing returns — and it does so comprehensively while also routing to sibling tools. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (node_id format, offering_limit cap) are fully documented in the schema. The description adds only the provenance of node_id, which the schema does not state — marginal but real value, so the baseline 3 holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (get one node) and then enumerates exactly what the record exposes: operator, regions, endpoints, hardware, trust tier and its history, probe results, offerings. It also names the sibling it is not (get_offering) so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ("vet a provider before relying on it"), an explicit input source ("take node_id from search_offerings, recommend or get_offering results"), and an explicit alternative for the adjacent case ("For one offering's full card, use get_offering"). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_offeringGet one offeringARead-onlyIdempotentInspect
Full detail for one offering: endpoints, pricing, serving capabilities (context window, supported features, languages, hardware), data policy, trust tier, and the registry's observed probe results. Take node_id and offering_id from search_offerings or recommend results.
| Name | Required | Description | Default |
|---|---|---|---|
| node_id | Yes | Reverse-DNS node id, e.g. "io.opennodes.demo-node". | |
| offering_id | Yes | Offering id within that node, as returned by search_offerings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so safety is covered without the description. The description goes further by enumerating the richness of the payload, including live 'registry's observed probe results', which tells the agent this is a heavy, authoritative retrieval rather than a cached summary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the payload summary front-loaded and the input-sourcing instruction second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so by listing the exact facets an agent would want (endpoints, pricing, context window, languages, hardware, data policy, trust tier, probe results). Nothing needed to invoke or interpret the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters carry examples, so the baseline is 3. The description adds provenance the schema cannot express — that node_id/offering_id must come from search_offerings or recommend output — which meaningfully reduces wiring mistakes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Full detail for one offering') followed by an explicit inventory of what that detail contains (endpoints, pricing, serving capabilities, data policy, trust tier, probe results). The singular 'one offering' naturally contrasts with the plural sibling search_offerings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs where to source the inputs ('Take node_id and offering_id from search_offerings or recommend results'), which routes the agent correctly relative to those siblings. It does not, however, state any when-not condition or what to do if the ids are unknown/invalid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommendRecommend a node and modelARead-onlyIdempotentInspect
Recommend the best AI node + model for a task, with an enforceable cost estimate and human-readable reasons. Use this first when you know the task but not the model. Pass task (sent to this registry, which extracts features and discards the text) or features already extracted on your side with extractFeatures from @opennodes/core, which keeps the prompt private. Returns ranked candidates with score components, a cost estimate pinned to the node's card revision, an optional cheaper two-step scenario, and MCP tool categories the task likely needs. To browse instead, use search_offerings; to price a specific chain, use estimate.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | The task description or the prompt itself. Sent to the registry for feature extraction; use `features` to keep it private. Give this or `features`. | |
| policy | No | Optional constraints and preferences for the recommendation. | |
| features | No | Features from extractFeatures(prompt) in @opennodes/core: task class, size, language and needs, no prompt text. Give this or `task`. | |
| est_output_tokens | No | Expected answer length in tokens, if known. Improves the cost estimate; otherwise inferred from the task. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint/openWorldHint/idempotentHint; the description adds real context beyond them, notably that `task` text is sent to the registry but discarded after feature extraction, while `features` keeps the prompt private, and that the cost estimate is pinned to the node's card revision. It does not cover latency, rate limits, or failure modes (e.g. what happens when no candidate satisfies the policy), which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then usage, then input/return behavior, then alternatives — a sound order with no filler sentences. The prose is dense with inline code references and a long first sentence, which costs a little readability but not much.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does: ranked candidates with score components, a pinned cost estimate, an optional cheaper two-step scenario, and predicted MCP tool categories. Privacy handling and default behavior for local memory are also disclosed, which is what an agent needs for a 4-param recommendation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description goes further by explaining the privacy semantics of choosing `task` versus `features` and naming the extractFeatures source, which is meaning the schema does not convey. It says nothing extra about `policy`, `est_output_tokens`, or how the two inputs interact when both are supplied, so it is not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Recommend the best AI node + model for a task" states a specific verb and resource, and the closing sentence explicitly separates this tool from search_offerings (browsing) and estimate (pricing a chain). An agent can route between the three siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this first when you know the task but not the model" gives an explicit entry condition, and the alternatives are named with the conditions that select them: search_offerings to browse, estimate to price a specific chain. Both the task-vs-features input paths are also framed as choices (privacy tradeoff).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_offeringsSearch inference offeringsARead-onlyIdempotentInspect
Search AI inference offerings in the OpenNodes registry — registered nodes AND imported catalogs (OpenRouter, Hugging Face Inference Providers, models.dev, local nodes). All filters are optional and combine with AND. Returns { offerings, total, counts }: each offering has node_id, offering_id, model, pricing (USD per MTok), trust tier, serving capabilities, measured probe results, and a rank explanation. Use get_offering for one offering's full card, recommend to let the advisor choose.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text match against the model metadata, offering id, and node id, e.g. "bielik" or "coder". | |
| lang | No | Language with minimum grade, "<iso-code>[:basic|strong|native]", e.g. "pl:strong" or "de". | |
| sort | No | rank = registry ranking (price, trust, reliability); price = cheapest input first; ttft = fastest first token; tps = highest throughput. | rank |
| tier | No | Minimum trust tier. unverified < community (passed automated checks) < verified (identity and context verified) < attested. | |
| limit | No | Maximum offerings to return; `total` still counts every match. | |
| local | No | true: only models that run on the user's own machine (the Ollama library: no server, free, ranked by Ollama pulls, with local.sizes_memory per size). false: only hosted offerings. Omit for both (hosted listed first). The result's counts give { hosted, local }. | |
| family | No | Model family or exact artifact, e.g. "llama-3.3" or "qwen3". Matches model.family or model.artifact exactly. | |
| region | No | Data residency: every pinned region and every live serving site must lie inside this ISO 3166 code, e.g. "CA" (also matches "CA-QC") or "EU" (also matches member states such as "DE"; "EEA" adds IS, LI, NO). | |
| scheme | No | Payment scheme the offering must accept. "free" finds no-cost offerings. | |
| modality | No | What the model consumes/produces. Use "text" for chat and completion models. | |
| supports | No | Comma-separated features the offering must all support: tool_calls, json_mode, vision, streaming. Example: "tool_calls,json_mode". | |
| memory_gb | No | RAM/VRAM the user can give a local model, in GB: keeps local models with a size that fits (4-bit estimate). Hosted offerings are unaffected. | |
| min_context | No | Minimum context window in tokens, e.g. 32768. | |
| jurisdiction | No | Only operators that declare a country inside it: "eea" (EU + Iceland, Liechtenstein, Norway) or comma-separated ISO country codes, e.g. "DE,FI". Registered nodes declare their country; imported listings of known providers carry an inferred one (jurisdiction.basis = "inferred"); listings without a country are excluded. | |
| location_basis | No | Minimum evidence for the serving locations: claimed < documented (the provider's own dated page) < measured (registry probes) < attested. Offerings without known locations are excluded. | |
| exclude_lineage | No | Comma-separated ISO country codes; drops offerings whose declared model lineage includes any of them, e.g. "CN". Offerings that declare no lineage are kept. | |
| max_input_price | No | Maximum input price in USD per million tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered; the description adds genuinely new context: the multi-source registry scope, AND semantics for filters, and the exact return envelope { offerings, total, counts }. It stops short of stating pagination or rate-limit behavior, which is why it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and source scope, then the return shape, then sibling routing — a sensible priority order. It is dense but nearly every clause earns its place; the parenthetical source list and the return-field enumeration are the only slightly heavy stretches.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, zero-required-parameter tool with no output schema, the description does the important compensating work: it enumerates the return fields (pricing, trust tier, capabilities, probe results, rank explanation) and states totals/counts. Per-parameter meanings are left entirely to a very thorough schema, which is acceptable here but keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema carries parameter detail and 3 is the baseline. The description still adds meaning beyond it by declaring that optional filters combine with AND and by explaining that `limit` truncates results while `total` still reflects every match — a cross-parameter behavior the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Search AI inference offerings") and immediately scopes it to two source classes: registered nodes AND imported catalogs (OpenRouter, Hugging Face, models.dev, local nodes). It also names the two sibling tools that serve different intents, so an agent can tell search from get_offering and recommend without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing ("Use get_offering for one offering's full card, recommend to let the advisor choose") and states the filter combinatorics ("All filters are optional and combine with AND"). It lacks an explicit when-not statement such as how it relates to find_locations/find_residency for pure geography questions, but the core selection guidance is clear.
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 tool update
- Changed
recommend1 field changed- changed
Input schema / properties / policy / properties / local_memory_gb / descriptionPrevious value: -"RAM/VRAM this machine can give a local model, in GB. Local models that cannot fit are left out, and the largest size that fits is picked (4-bit estimate). The local stdio server fills this from the machine when it is not given."New value: +"RAM/VRAM this machine can give a local model, in GB. Local models that cannot fit are left out, and the largest size that fits is picked (4-bit estimate). The local stdio server fills this from the machine when it is not given; otherwise catalogue models are scored for a typical 16 GB laptop, and none is picked."
3 tool updates
- Changed
estimate1 field changed- changed
Input schema / properties / steps / items / properties / select / properties / region / descriptionPrevious value: -"Data residency: every pinned region and every live serving site must lie inside this ISO 3166 code, e.g. \"CA\" (also matches \"CA-QC\") or \"EU\"."New value: +"Data residency: every pinned region and every live serving site must lie inside this ISO 3166 code, e.g. \"CA\" (also matches \"CA-QC\") or \"EU\" (also matches member states such as \"DE\"; \"EEA\" adds IS, LI, NO)."
- Changed
recommend1 field changed- changed
Input schema / properties / policy / properties / region / descriptionPrevious value: -"Required data region, e.g. \"CA\" or \"EU\". Offerings pinned to, or served from, other regions are excluded."New value: +"Required data region, e.g. \"CA\" or \"EU\" (EU and EEA include their member states). Offerings pinned to, or served from, other regions are excluded, and so are hosted offerings with no known location; models on this machine or LAN always qualify."
- Changed
search_offerings1 field changed- changed
Input schema / properties / region / descriptionPrevious value: -"Data residency: every pinned region and every live serving site must lie inside this ISO 3166 code, e.g. \"CA\" (also matches \"CA-QC\") or \"EU\"."New value: +"Data residency: every pinned region and every live serving site must lie inside this ISO 3166 code, e.g. \"CA\" (also matches \"CA-QC\") or \"EU\" (also matches member states such as \"DE\"; \"EEA\" adds IS, LI, NO)."
2 tool updates
- Changed
find_locations2 fields changed- added
Input schema / properties / availabilityAdded value: +{ + "description": "With a residency filter: count only commitments offered this widely: default (every customer), opt_in (adds settings and regional endpoints), enterprise (adds contract-only offers; the default).", + "enum": [ + "default", + "opt_in", + "enterprise" + ], + "type": "string" +} - added
Input schema / properties / residencyAdded value: +{ + "description": "Only sites covered by a residency commitment at least this strong: processing (inference and stored data stay in the area) or storage (data at rest only).", + "enum": [ + "processing", + "storage" + ], + "type": "string" +}
- Added
find_residency
4 tool updates
- Changed
estimate3 fields changed- added
Input schema / properties / steps / items / properties / select / properties / exclude_lineageAdded value: +{ + "description": "Comma-separated ISO country codes; drops offerings whose declared model lineage includes any of them, e.g. \"CN\". Offerings that declare no lineage are kept.", + "type": "string" +} - added
Input schema / properties / steps / items / properties / select / properties / location_basisAdded value: +{ + "description": "Minimum evidence for the serving locations: claimed < documented (the provider's own dated page) < measured (registry probes) < attested. Offerings without known locations are excluded.", + "enum": [ + "claimed", + "documented", + "measured", + "attested" + ], + "type": "string" +} - added
Input schema / properties / steps / items / properties / select / properties / regionAdded value: +{ + "description": "Data residency: every pinned region and every live serving site must lie inside this ISO 3166 code, e.g. \"CA\" (also matches \"CA-QC\") or \"EU\".", + "type": "string" +}
- Added
find_locations - Changed
recommend1 field changed- changed
Input schema / properties / policy / properties / region / descriptionPrevious value: -"Required data region, e.g. \"eu\". Offerings pinned to other regions are excluded."New value: +"Required data region, e.g. \"CA\" or \"EU\". Offerings pinned to, or served from, other regions are excluded."
- Changed
search_offerings3 fields changed- added
Input schema / properties / exclude_lineageAdded value: +{ + "description": "Comma-separated ISO country codes; drops offerings whose declared model lineage includes any of them, e.g. \"CN\". Offerings that declare no lineage are kept.", + "type": "string" +} - added
Input schema / properties / location_basisAdded value: +{ + "description": "Minimum evidence for the serving locations: claimed < documented (the provider's own dated page) < measured (registry probes) < attested. Offerings without known locations are excluded.", + "enum": [ + "claimed", + "documented", + "measured", + "attested" + ], + "type": "string" +} - added
Input schema / properties / regionAdded value: +{ + "description": "Data residency: every pinned region and every live serving site must lie inside this ISO 3166 code, e.g. \"CA\" (also matches \"CA-QC\") or \"EU\".", + "type": "string" +}
2 tool updates
- Changed
estimate2 fields changed- added
Input schema / properties / steps / items / properties / select / properties / localAdded value: +{ + "description": "true: only models that run on the user's own machine (the Ollama library: no server, free, ranked by Ollama pulls, with local.sizes_memory per size). false: only hosted offerings. Omit for both (hosted listed first). The result's counts give { hosted, local }.", + "type": "boolean" +} - added
Input schema / properties / steps / items / properties / select / properties / memory_gbAdded value: +{ + "description": "RAM/VRAM the user can give a local model, in GB: keeps local models with a size that fits (4-bit estimate). Hosted offerings are unaffected.", + "minimum": 1, + "type": "number" +}
- Changed
search_offerings2 fields changed- added
Input schema / properties / localAdded value: +{ + "description": "true: only models that run on the user's own machine (the Ollama library: no server, free, ranked by Ollama pulls, with local.sizes_memory per size). false: only hosted offerings. Omit for both (hosted listed first). The result's counts give { hosted, local }.", + "type": "boolean" +} - added
Input schema / properties / memory_gbAdded value: +{ + "description": "RAM/VRAM the user can give a local model, in GB: keeps local models with a size that fits (4-bit estimate). Hosted offerings are unaffected.", + "minimum": 1, + "type": "number" +}
1 tool update
- Changed
recommend1 field changed- added
Input schema / properties / policy / properties / local_memory_gbAdded value: +{ + "description": "RAM/VRAM this machine can give a local model, in GB. Local models that cannot fit are left out, and the largest size that fits is picked (4-bit estimate). The local stdio server fills this from the machine when it is not given.", + "minimum": 1, + "type": "number" +}
Related MCP Connectors
Marketplace where AI agents hire other agents, paid per call in USDC. Plus LLM inference.
BridgeNode — x402 pay-per-request AI inference. OpenAI-compatible API + MCP, Solana USDC, gas-free.
Spot market for AI inference tokens. Buyers pay per draw in USDC on Base; sellers host delivery.
Find GPU sellers for AI inference by model, cheapest first; pay per call with x402 (USDC on Base).
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceOpenAI-compatible inference broker that routes AI requests to the cheapest qualifying model and settles payments per token in USDC on Base L2 via x402 micropayments.MIT
- FlicenseAqualityNot gradedmaintenanceCompute price oracle for AI agents. Compare inference pricing across OpenAI, Anthropic, and DePIN providers like Hyperbolic. Get routing recommendations that save up to 80% on compute costs.5-
- AlicenseNot gradedqualityDmaintenanceEnables listing and discovery of DePIN infrastructure capacity (storage, compute, GPU, etc.) with real USDC/USDT settlement across multiple chains.MIT
- AlicenseAqualityDmaintenanceUnified AI compute API gateway for agents. Access 30+ services and 95+ models across 8 backends (Groq, Together AI, DeepInfra, Fireworks, Replicate, RunPod) with native x402 USDC payments, Stripe, and crypto top-up.564 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.