Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Nevermined Catalog

REMOTE · MCP.LIVE.NEVERMINED.APP · SCANNED SEP 29

Discover and pay for services from the Nevermined Catalog using a spend-capped budget.

63 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability62
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6259 tokens (~521/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "pay_service" implies "pay" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

Install

How do I install the Nevermined Catalog MCP server?

Nevermined Catalog is a hosted endpoint at https://mcp.live.nevermined.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.live.nevermined.app

# add to Claude Code
claude mcp add --transport http nevermined-io-catalog 'https://mcp.live.nevermined.app/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "nevermined-io-catalog": {
      "url": "https://mcp.live.nevermined.app/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "nevermined-io-catalog": {
      "type": "http",
      "url": "https://mcp.live.nevermined.app/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.nevermined-io-catalog]
url = "https://mcp.live.nevermined.app/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "nevermined-io-catalog": {
      "type": "remote",
      "url": "https://mcp.live.nevermined.app/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add nevermined-io-catalog --url 'https://mcp.live.nevermined.app/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  nevermined-io-catalog:
    url: "https://mcp.live.nevermined.app/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "nevermined-io-catalog": {
      "Transport": "http",
      "Url": "https://mcp.live.nevermined.app/mcp"
    }
  }
}
# add to Vellum
assistant mcp add nevermined-io-catalog -t streamable-http -u 'https://mcp.live.nevermined.app/mcp'
// mcp.json
{
  "mcpServers": {
    "nevermined-io-catalog": {
      "type": "http",
      "url": "https://mcp.live.nevermined.app/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 29 Sept 26 63

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 29 Sept 2026 · Probed https://mcp.live.nevermined.app/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_256_GCM_SHA384 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.live.nevermined.app CN=YR1,O=Let's Encrypt,C=US 31 Aug 2026 29 Nov 2026 RSA 2048 SHA256-RSA 69b6d0fe9f875d72ff5bfa4a4d43b792158
SANs: mcp.live.nevermined.app
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.live.nevermined.app. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
app. present 23684 8 Verified
nevermined.app. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=15724800; includeSubDomains

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.live.nevermined.app/mcp Verified 200
http (plaintext) http://mcp.live.nevermined.app/mcp HTTPS enforced 308 https://mcp.live.nevermined.app/mcp
MCP tools · 12 exposed · ~6,259 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
get_budget ~307

Read the spending budget pay_service spends from: its cap, what has been spent, what remains, how many payments were made (and the limit, if any), and when it expires. Reading costs nothing and charges nothing. Use it whenever the human asks how much is left, or before a run of paid calls. Money is in CENTS: `capCents` is whole cents; `spentCents` and `remainingCents` can carry up to four decimals because the budget is charged per call at 1/10,000 of a cent (e.g. `"1.632"` = 1.632¢), and `spentCents + remainingCents = capCents` while the budget is within its cap. Tell the human `message` as it stands and never substitute a figure of your own: the budget includes routing fees and rounding, so adding up your calls will not match it. With no `delegationId` it reads the budget pay_service would use; that only includes budgets that can still pay, so `{"status":"no_active_delegation"}` also covers a budget that ran out or expired — pass the `delegationId` from an earlier pay_service result to read that one anyway. Requires your Nevermined API key on the Authorization header.

NameTypeReqDescription
delegationIdstring–A specific delegation to read (every paid pay_service result carries one). Omit it to read the budget pay_service spends by default.

No output schema declared.

No examples provided.

get_payment_result ~233

Read the result of a paid call, by its `paymentId`. Use it when `pay_service` answered `{"status":"pending"}` (the service was still working when the Router stopped waiting — the payment is made and the call keeps running), or to recover a result whose response you lost. Reading costs nothing and charges nothing. `state: "Pending"` — still running, call again in a few seconds. `state: "Ready"` — `status` is the service's HTTP status and `body` its response (`bodyEncoding` says whether it is parsed JSON, text, or base64). `state: "Failed"` — the call ended without a response; `failureReason` says why. `{"status":"not_available"}` — nothing to return: results are kept for 24 hours for the account that paid, and only then. Do NOT call pay_service again to get a pending result: that returns the same pending answer. Requires your Nevermined API key on the Authorization header.

NameTypeReqDescription
paymentIdstringyesThe `paymentId` a pay_service result returned.

No output schema declared.

No examples provided.

get_service ~499

Fetch one catalog service by its slug with metadata and a `requestShape` block. Read each endpoint's `payServiceArgs` before `pay_service`, replacing any `pathParams` placeholders. Some endpoints carry a checked invoke contract: `invokePath` (the example's invoke path, possibly empty; `payServiceArgs.path` uses it only for a `paid-run`/`challenge` example — for a `docs` example it is that example's value, not the path to send), `requestExample` (a body, query or headers that worked), `responseFields` (where the useful data sits in the response) and `exampleEvidence`: `paid-run` when a real paid call returned that shape, `challenge` when a gateway that validates before pricing accepted the request (the response is unobserved), `docs` when it comes from provider documentation and is unverified (`contractEvidence` is the older paid-run/fixture form). Only a `paid-run` or `challenge` example is pre-filled into `payServiceArgs`; a `docs` example is a reference to adopt deliberately. When `pathParams` is non-empty and `payServiceArgs.path` is already filled, the values are the example's: substitute your own. An `endpointCheck` (`unpaid-route-403` / `unpaid-route-404` with `checkedAt`) records that an unpaid call to that endpoint through the Router failed on that date, so the example is not confirmed to work. An endpoint may carry `requestSchema`, the merchant-declared JSON Schema of its request (`properties.query` → `search`, `properties.body` → `body`; sanitised, not verified — see `requestSchemaSource`), or `noParameters: true`; endpoints with neither and no checked example require provider documentation. An endpoint's `quote`, when present, is the merchant's live per-call price on the rail and network the Router pays it on (`amountAtomic` in the asset's `decimals`); it excludes the Router's routing fee, which the budget is also charged. An endpoint may publish `maxRequestBytes`: a larger `body` is refused before any payment. An unknown slug returns an error. Discovery…

NameTypeReqDescription
slugstringyesThe service slug (from search_services).

No output schema declared.

No examples provided.

list_categories ~35

List the categories of paid services in the Nevermined Agent Services Catalog, with a count per category. Discovery only; no payment.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_payments ~318

List your Router payments: the unified ledger across every service and delegation, newest first, at most 1000 records. Each record carries its `id` (the `paymentId` get_payment_result takes), `createdAt`, `status`, `protocol`, `network`, `requestId`, `delegationId` and `amount` in the asset's smallest unit (see `assetDecimals`), not in cents. Each row also carries `deliveryStatus`: `delivered` (request settled), `charged_not_delivered` (request failed and the merchant charge was observed), `charged_unconfirmed` (charge observed; delivery unconfirmed), `not_charged` (reconciliation proved no merchant charge), or `pending` (charge outcome unknown). On SPT and card rails, `pending` is not proof of no charge; flag `charged_not_delivered` to the user. Use this tool to reconcile an uncertain payment or find a paymentId; it does not return service responses (use get_payment_result) or the remaining budget (use get_budget, whose figures include fees and rounding). Reading costs nothing. Requires your Nevermined API key on the Authorization header.

NameTypeReqDescription
delegationIdstring–Only payments charged to this delegation.
fromstring–ISO-8601 lower bound on `createdAt`, inclusive. An unparseable value is an error.
tostring–ISO-8601 upper bound on `createdAt`, inclusive. An unparseable value is an error.

No output schema declared.

No examples provided.

pay_service ~1,497

Pay for a catalog service from your spend-capped delegation and return the vendor response. This charges real funds. Call `get_service` FIRST: its `requestShape.endpoints[]` lists the callable paths with their HTTP method and price, and each `payServiceArgs` is the `slug`/`path`/`method` to pass here, after replacing any `pathParams` placeholder in `path` with a real value. A bare slug reaches the service base URL, which for a multi-endpoint API answers 404 instead of a payment challenge; only a single-endpoint service is called by slug alone. Send the endpoint's `payServiceArgs`: they carry an example only when it is `paid-run` or `challenge`. A `docs` example (and its `invokePath`) is unverified — use it only deliberately, filling any path parameter with the entity you want; otherwise build `body` from the endpoint description or the provider's docs. `method` may be omitted: it is taken from the catalog endpoint matching `path` (POST when the catalog names none) and echoed back under `request`. Repeating an identical call (same arguments, no `fresh`) charges nothing new: on a deployment running API 1.48 or later it is answered within 24 hours from the first call's stored result, or its `pending` answer; on an older deployment it comes back as `already_paid`. For an ASYNC service, where you submit once and then poll a status endpoint with the same id, set `fresh: true` on every poll INCLUDING THE FIRST: otherwise each later poll reuses the first poll's idempotency key and gets the first poll's stored answer (or `already_paid`) back, so the status never advances. `fresh` makes each poll a distinct, separately billed call (the merchant charges per status call). Leave `fresh` off the submit and off any retry of a call whose outcome is unsure, because with `fresh` a retry is not de-duplicated and is charged again. A completed call returns `paid`, `upstreamStatus` (the vendor's HTTP status) and `response` (its body); `paid: true` with a non-2xx `upstreamStatus` may sti…

NameTypeReqDescription
body––Request payload sent to the vendor.
delegationIdstring–Delegation to charge when you authenticate with an API key; defaults to your active one. An OAuth-connected caller always spends from the grant it approved, so a value here does not choose the delega…
freshboolean–Set true on every POLL of an async status endpoint, including the first: each call mints a fresh idempotency key so the poll advances, instead of later polls reusing the derived key and getting the f…
headersobject–Extra headers for the vendor call.
maxTotalCentsinteger–Maximum whole cents this call may cost, including the buyer fee (compared exactly, so rounding alone never exceeds it). The price the service quotes on its 402 can differ from the catalog price label.
methodstring–HTTP method for the vendor call. Omit to use the method the catalog records for the endpoint matching `path`; falls back to POST when the catalog records none.
pathstring–Router suffix appended to the service base. Read `get_service`'s `requestShape.endpoints[].payServiceArgs.path`: a checked `invokePath` may be empty even when the display path is not. Replace every `…
requestIdstring–Idempotency key. Leave unset — a retry of the same call is de-duplicated automatically. Only set a NEW value if you intend a genuinely separate, additional charge. To poll an async status endpoint, p…
searchstring–Query string without ?, for a slug-routed GET (e.g. flight_iata=AA217).
slugstringyesThe service slug to pay for.

No output schema declared.

No examples provided.

payment_summary ~186

Count your Router payment requests: `total` is how many there were in the period (uncapped, unlike list_payments) and `series` is that count per day (`date`, `value`), oldest first. `chargedNotDelivered` is the count of failed payments in the period whose merchant charge was observed; flag a non-zero count to the user. This reports numbers of payments, not money: for what has been spent or what is left use get_budget, and for amounts per payment use list_payments. Reading costs nothing. Requires your Nevermined API key on the Authorization header.

NameTypeReqDescription
fromstring–ISO-8601 lower bound on `createdAt`, inclusive. An unparseable value is an error.
tostring–ISO-8601 upper bound on `createdAt`, inclusive. An unparseable value is an error.

No output schema declared.

No examples provided.

quote_service ~840

Price ONE call to a catalog service WITHOUT paying it: it charges nothing, signs nothing and reserves no budget. Pass exactly what you would pass to `pay_service` (the same `slug`, `path`, `method`, `search`, `headers`, `body` and `delegationId`): the Router sends that request to the service unpaid, reads the price it asks for, and returns the rail (`protocol`), the network and merchant amount (`settlement`) and the fee-inclusive total (`fee.capChargedCents`, whole cents rounded up; `fee.capChargedMicros` exact, in 1/10,000 of a cent). Unlike the `quote` on a get_service endpoint (the last merchant price the catalog observed, routing fee excluded), this is priced live for your exact request and includes the fee. Because the request really reaches the service, a service that does not charge for it performs it, so take care quoting a method with side effects; and a quote spends the same per-service rate limit as a payment, so quote once per decision rather than polling. It prices the delegation pay_service would charge (`optionSet: "delegation"`, naming its `delegationId`), or, with no delegation set up, what a personal crypto delegation would select (`optionSet: "deployment"`); in that case `nextTool` is `setup_delegation`: set one up and quote again before paying, since the delegation you create can select a different rail and price. It checks neither your remaining budget nor your wallet balance (see get_budget and wallet_balance). Next step (`nextTool: "pay_service"`): if `fee.capChargedCents` fits what you planned to spend, call `pay_service` with the same arguments, the quoted `delegationId`, and `maxTotalCents` set to that figure as a number, so a price rise between the quote and the call is refused instead of paid (the ceiling is whole cents, so a rise within the same cent is still paid). `paymentRequired: false` means the service did not ask for payment for this request; `upstreamStatus` is its answer, and a non-2xx usually means the path, method or body is…

NameTypeReqDescription
body––The request payload you would send; some services price by it.
delegationIdstring–The delegation you would pay with, when you authenticate with an API key; defaults to the one pay_service would use. A card or organization-wallet delegation can select a different rail, and so a dif…
headersobject–The extra headers you would send to the vendor.
methodstring–HTTP method. Omit to use the method the catalog records for the endpoint matching `path` (POST when it records none), exactly as pay_service does.
pathstring–The same `path` you would pass to pay_service: read `get_service`'s `requestShape.endpoints[].payServiceArgs.path` and replace every `pathParams` placeholder. Put query parameters in `search`.
searchstring–Query string without ?, for a slug-routed GET (e.g. flight_iata=AA217).
slugstringyesThe service slug to quote.

No output schema declared.

No examples provided.

route_by_intent ~866

Given a plain-language description of what you need, find, and optionally pay in the same call, the single best payable catalog service, so you do not have to pick among listings yourself. Use it instead of search_services when you want the right service for a task rather than a list to browse: it ranks candidates on Nevermined's own relevance and quality signals (deterministic; no model reads the merchant listings), applies a fail-closed payability gate (listed, healthy, moderated, x402/mpp, not flagged unpayable), and returns the winner as `chosen` (with its opaque invoke handle, never a raw host) plus a ranked `shortlist` and the `rankingSource` used (`semantic` or `lexical`). With `autoPay:false` (the default) it returns the pick only and charges nothing; the next step is normally `get_service` on `chosen.slug`, then `pay_service` with the endpoint you need. With `autoPay:true` it also pays the winner through the same path as pay_service and returns the upstream call in `result`: `result.status` and `result.body` are the vendor's answer, and `result.paid: true` means a payment was attempted, not that it settled, so read `result.payment.status` (`Settled`, `Issued` or `Failed`). autoPay calls the winner at its base URL plus any `path` you pass, and you only learn the winner from this call, so it suits single-endpoint services; a multi-endpoint winner typically answers 404 at its base URL. autoPay requires `requestId`; an API-key caller must also pass `delegationId`, while an OAuth-connected caller spends from the grant it approved and needs none. Outcomes: no listed, payable match → `{"status":"no_fundable_match"}` (broaden the intent or filters; nothing charged), never a wrong pick; `missing_autopay_fields` (nothing charged); on autoPay, `payment_indeterminate` (check `list_payments`, and retry only with the same `requestId`) and `already_paid` (this `requestId` was already paid, see `paymentId`; nothing new billed). Every pick and each of these outcomes carrie…

NameTypeReqDescription
autoPayboolean–When true, also pay and relay the winner in the same call (same path as pay_service); requires requestId, plus delegationId when you authenticate with an API key. Default false → return the pick only…
body––Request body for the paid call (autoPay only).
credentialHeaderstring–Header the Router should carry the minted payment credential in on the paid hop (autoPay only). Send it only when the winning service needs its own auth AND a payment credential (e.g. "Payment"). Ign…
delegationIdstring–Delegation to charge on autoPay. Required when you authenticate with an API key; an OAuth-connected caller spends from the grant it approved, so it can omit this (a value there does not choose the de…
filtersobject–Optional structured narrowing; all fields optional.
headersobject–Extra headers for the paid call (autoPay only).
intentstringyesPlain-language description of the service you need (e.g. "translate English to German").
limitinteger–Shortlist size to return (1–20, default 5).
maxTotalCentsinteger–Refuse a paid quote above this (fee-inclusive), before purchase (autoPay only).
methodstring–HTTP method for the paid call (autoPay only).
pathstring–Subpath appended to the winner when paying (autoPay only).
requestIdstring–Idempotency key — REQUIRED when autoPay is true.
searchstring–Query string (no leading ?) for the paid call (autoPay only).

No output schema declared.

No examples provided.

search_services ~407

Search the Nevermined Agent Services Catalog for paid services, ranked by ARD HYBRID relevance — semantic (meaning) matches merged with lexical (keyword) matches, most relevant first — falling back to pure lexical when the embedding provider is unavailable. A query is required; the other filters are optional. Returns matching listings (vendor, protocol, price label, endpoint). Only the first page is returned: the `pageToken` in the result cannot be passed back to this tool, so to see other matches narrow the query or filters, or raise `pageSize` (up to 100). Discovery only; no payment. To have the platform PICK (and optionally pay) the single best service for a need instead of choosing yourself, use route_by_intent.

NameTypeReqDescription
categorystring–Restrict to services carrying this catalog tag — it filters on tags exactly like `tag`. The category names `list_categories` returns are not stored as tags, so passing one here matches nothing; put a…
pageSizeinteger–Page size, 1–100 (a size of 0 is meaningless and is rejected).
protocolstring–Restrict to a payment protocol. Only x402 and mpp are payable via the Router.
querystringyesWhat you need, in plain language. REQUIRED. Ranked semantically AND lexically (hybrid), most relevant first — a query describing the need ("translate documents to German") matches on meaning, not onl…
tagstring–Restrict to services carrying this catalog tag (e.g. a protocol or domain keyword from a listing's `tags`). Combined with `category` it widens the match to either value rather than narrowing it.

No output schema declared.

No examples provided.

setup_delegation ~510

Start the spending-delegation ceremony and return ONE URL for a human to open. Use this when `pay_service` returns `{"error":"no_delegation"}` — it is the way out of that state. It sets up a stablecoin (crypto) delegation that spends from the human's personal wallet, so that wallet also needs funds on the network a service settles on (see `wallet_balance`); it does not enroll a card or create a card delegation. The human sets the currency, spending cap, duration and transaction limit themselves in the browser; you CANNOT set them and must not ask the human to pass them to you. Returns `{"status":"human_action_required","url":…}` — relay the url, wait for the human to confirm, then simply call `pay_service` again. `{"status":"already_active"}` means a usable spending budget is in place — for an OAuth commerce caller it is the grant approved on the consent screen — and nobody needs to do anything: tell the human `message` as it stands (it states the cap, spent, remaining and expiry the API reports, in a voice written to be relayed), then follow `instructions` and call pay_service. The url embeds a short-lived session token, so treat it as sensitive and give it only to the account owner. Other outcomes: `delegation_setup_unavailable` (this deployment cannot run the ceremony) and `delegation_setup_failed` (the session could not be started) produce no URL; `return_url_not_allowed` means drop or fix `returnUrl`; a `human_action_required` answer with `delegationCheck: "failed"` means an existing budget could not be ruled out, so follow its `instructions` and try pay_service first. Requires your Nevermined API key on the Authorization header.

NameTypeReqDescription
returnUrlstring–Where the human's browser should land after they authorise. Only a localhost callback (http://127.0.0.1:<port>/…) or an origin this Nevermined deployment has allow-listed is accepted; a rejected valu…

No output schema declared.

No examples provided.

wallet_balance ~561

Read the balances of YOUR OWN PERSONAL wallet — the funding source the crypto rails PULL from when pay_service charges a PERSONAL delegation. It answers `how much do I have, and on which chain`. Reading costs nothing and charges nothing. WHAT IT DOES NOT COVER, so you do not mis-diagnose: a delegation backed by an ORGANIZATION wallet is paid from that wallet, not this one; and a CARD delegation has no wallet at all — there `BCK.ROUTER.0009` is the card ISSUER declining, with nothing to top up, so this tool does not apply and the answer is a different card. BY RAIL: on MPP the wallet is checked BEFORE anything is signed, and the `BCK.ROUTER.0009` you get back already names the wallet and the chain — what it never says is HOW MUCH is there, which is what this tool supplies. On x402 there is NO balance pre-check and `BCK.ROUTER.0009` is never raised: the credential is minted, budget is reserved, and a short wallet only surfaces when the merchant's on-chain transfer fails — by which point your budget is already committed, and the reserve comes back only once the reconciler has seen the authorization expire unconsumed. So on that rail read the balance BEFORE you pay, not after. By default this reports EVERY network this deployment settles on, and you must read the one the merchant quoted: a healthy balance on one chain says NOTHING about the other, and most services settle on only one of them. Pass `network` (a chain id) to read a single chain. A token whose `atomic`/`formatted` is `null` was NOT READ (the on-chain read failed) — that is not a zero balance, and reporting it as empty is wrong; a chain that could not be read at all comes back as an entry with `error` instead of `balances`. This tool diagnoses and fixes nothing: there is no on-ramp and you cannot top your own wallet up, so a genuine shortfall is a stop condition — report the network and the amount to your human, and do not retry the payment. Requires your Nevermined API key on the Authorization header.

NameTypeReqDescription
networkinteger–Chain id to read. OMIT IT to see every network this deployment serves, which is what you want unless the merchant already told you which chain it settles on. A chain id this deployment does not serve…

No output schema declared.

No examples provided.

Common questions

What is the Nevermined Catalog MCP server?

Nevermined Catalog is an MCP server listed in the public MCP registry as io.github.nevermined-io/catalog. Discover and pay for services from the Nevermined Catalog using a spend-capped budget. This page covers its hosted endpoint (https://mcp.live.nevermined.app/mcp).

Is the Nevermined Catalog MCP server safe to use?

Nevermined Catalog scores 63 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Nevermined Catalog MCP server expose?

Nevermined Catalog exposes 12 tools: list_categories, search_services, get_service, pay_service, quote_service, and 7 more. Their descriptions and schemas cost roughly 6,259 tokens of context every time the server is loaded.

Does the Nevermined Catalog MCP server require authentication?

No. We connected to Nevermined Catalog without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Nevermined Catalog MCP server still maintained?

Nevermined Catalog is still listed as active in the MCP registry. We last reached this channel on 29 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.