OpenNodes
Server Details
Discover verified AI inference nodes, get the best node+model per task, pre-price chains.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- opennodes-io/opennodes
- GitHub Stars
- 0
- Server Listing
- opennodes
TDQS
Scored across 5 tools
Most tools target distinct resources/actions: search_offerings (browse), get_node (provider), get_offering (single listing card), recommend (advisor), estimate (price a chain). However, recommend returns a cost estimate and estimate prices chains, so their boundary is mildly blurry, and get_node vs get_offering could momentarily trip an agent despite the explicit 'use get_offering for the full card' guidance.
Three tools follow a clear verb_noun pattern (get_node, get_offering, search_offerings), but two are bare verbs with no object (estimate, recommend), breaking the convention. Still readable, but the mix keeps it below fully consistent.
Five tools is well-scoped for a registry/discovery-plus-advisor server: browse, two levels of detail, a recommendation entry point, and a pre-cost estimator. Each tool earns its place with no obvious redundancy.
The discovery, vetting, selection, and pre-pricing lifecycle is covered end to end, with cross-references between tools. Minor gaps remain (no explicit enumerate/list-all-nodes tool, and no invocation tool if that is in scope), but core workflows have a path.
Available Tools
5 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?
Annotations already declare readOnly/idempotent/openWorld, so the bar is lower, yet the description adds real value: it states what is returned (per-step cost bounds in USD, the pinned card_revision, chain totals) and guarantees no invocation or charge. This is genuine behavioral context beyond the structured fields.
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 key frame ('Pre-price an invocation chain BEFORE spending money') and three dense sentences that each carry information (step forms, return contents, usage). Slightly packed but nothing is wasted.
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, but the description compensates by naming the return payload (cost bounds, card_revision, totals) and the enforceability of the estimate. For a one-parameter nested tool this covers what an agent needs to call and interpret it, leaving only minor details like chain-size limits 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% (baseline 3), but the description adds conceptual meaning: each step is either a concrete offering or a `select` query that picks the best-ranked match, plus expected input/output tokens. This explains the dual-mode `steps` structure better than the schema alone, and ties `select` to search_offerings semantics.
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 and resource: 'pre-price an invocation chain BEFORE spending money,' with the scope (chain, not single offering) and the two step forms made explicit. An agent can distinguish this cost-estimation tool from search_offerings/get_offering 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use: 'compare routes or budget a multi-model pipeline,' and notes the safety condition ('nothing is invoked or charged'). It references search_offerings implicitly ('same as search_offerings') but does not name a specific alternative for actually invoking the chain, so no explicit when-not routing.
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 already declare readOnly/idempotent and openWorld, but the description adds genuinely new behavioral facts: the `task` text is sent to the registry, features are extracted and the text discarded, and passing `features` locally keeps the prompt private. It also discloses the return contents (score components, cost estimate pinned to the node's card revision, optional two-step scenario). No rate limits or error behavior, but the privacy/data-flow disclosure is valuable beyond the 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?
The purpose and the 'use this first' trigger are front-loaded, followed by input paths, then outputs, then alternatives. Every sentence carries distinct information (routing, privacy, return shape) with no filler 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?
With no output schema and a nested `policy` object, the description compensates by enumerating what comes back (ranked candidates, score components, cost estimate, cheaper two-step option, MCP tool categories) and by clarifying the two mutually exclusive input modes. Nothing needed to call it correctly 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 description coverage is 100%, so the schema already documents every parameter, including the task-vs-features privacy tradeoff and the effect of est_output_tokens on cost. The description restates the same mutual-exclusivity rule without adding syntax, format, or examples beyond it, so the baseline of 3 applies.
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 states a specific verb+resource (recommend the best AI node + model for a task) with a precise scope, and explicitly names the siblings it is not (search_offerings for browsing, estimate for pricing a chain). An agent can distinguish it from the other four tools 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 trigger condition, and the closing sentence routes the agent to alternatives with the condition that selects each (browse → search_offerings; price a specific chain → estimate). Both when-to-use and when-not-to-use are covered.
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 }: 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. | |
| family | No | Model family or exact artifact, e.g. "llama-3.3" or "qwen3". Matches model.family or model.artifact exactly. | |
| 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". | |
| min_context | No | Minimum context window in tokens, e.g. 32768. | |
| 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, and openWorld, so the safety profile is covered. The description adds meaningful context the annotations cannot: the returned envelope ({ offerings, total }), the per-offering fields (pricing in USD per MTok, trust tier, probe results, rank explanation), and the breadth of the underlying catalog. It does not discuss rate limits or result ordering guarantees beyond the sort enum.
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 scope, then return shape, then sibling routing. Every sentence carries information, though the return-field enumeration sentence is dense and could be trimmed slightly.
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 an 11-parameter, no-required-args search tool with no output schema, the description compensates by naming the return envelope and key fields, plus the data sources searched. Nothing an agent needs in order to call it correctly 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 description coverage is 100%, so the schema already documents all 11 parameters in detail. The description only adds the AND-combination semantics of filters, which is a minor addition. Baseline 3 is appropriate where the schema does the heavy lifting.
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 and resource ('Search AI inference offerings') and immediately scopes the corpus: registry nodes AND imported catalogs (OpenRouter, Hugging Face, models.dev, local). An agent can distinguish it from get_offering and recommend 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes to alternatives with the selecting condition: 'Use get_offering for one offering's full card, recommend to let the advisor choose.' It also states that all filters are optional and combine with AND, removing ambiguity about call behavior.
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.
5 tool updates
- First observed
estimate - First observed
get_node - First observed
get_offering - First observed
recommend - First observed
search_offerings
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 gradedqualityCmaintenanceOpenAI-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 gradedqualityCmaintenanceEnables listing and discovery of DePIN infrastructure capacity (storage, compute, GPU, etc.) with real USDC/USDT settlement across multiple chains.MIT
- AlicenseAqualityFmaintenanceUnified 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.547 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.