Skip to main content
Refill your Nevermined credits within the human-set monthly limit. Charges one pack of 10,000 credits that never expire to the card your human enrolled — no new human approval — and only when your spendable credits are below the call you’re about to make. This charges the human’s card. Needs a credential (API key, or a commerce OAuth grant that enabled credit top-ups at consent). Turning top-ups on and setting the monthly limit stay with the human, in the Nevermined App — this tool charges a pack within that limit, it does not create or change it. With your own API key and top-ups on, a credits call that runs out charges a pack on its own (see pay_service). Through an OAuth connection it never does — so for an OAuth-connected agent (the Claude.ai, ChatGPT or Fleet connectors) top_up_credits is the only way to get a pack. Either way, call it to refill before a call, so the credits are in place when you make it. Auth: key / grant (grant must allow top-ups) · Charges: real funds, the human’s card

Arguments

Returns

The pack’s result and where your top-up spend stands this month. Dollar amounts are before tax. The MCP relays the API body unchanged and adds an instructions string — follow it.
  • creditsAdded is a decimal string, set on every bought — replayed or not. Only replayed: false means this call charged the pack; replayed: true means this requestId had already bought one and nothing new was charged.
  • operatorUrl is a link to hand the human; it’s set on needs_attention and disabled, null otherwise.
  • A pack was charged on bought with replayed: false, is being or may have been charged on pending, and may have been charged on a needs_attention whose message says the outcome is unconfirmed. Every other status charged nothing. Relay message to the human whenever a pack was or may have been charged.
To read the limit before you decide, without charging anything, use GET /api/v1/credits/topups/pack (enabled, monthlyLimitUsd, maxMonthlyLimitUsd, boughtThisMonthUsd, packPriceUsd, paused) — it serves both credential kinds. (The topups block on GET /api/v1/credits/balance carries the same, but balance takes a plain API key.)

Outcomes

Read status (see the charge rule above — bought/pending/unconfirmed needs_attention are the ones where the card may have been touched).

Errors

A refusal comes back as an error result, not an HTTP status (through the MCP tool you never see one) — each carries a code, a message and an instructions string; follow instructions:
  • { "error": "topup_failed", "code", "message", "instructions" } — the top-up was refused. Coded consent/credential refusals: BCK.OAUTH.0040 (the grant lacks top-up consent), BCK.OAUTH.0030 (not a commerce grant), BCK.OAUTH.0038 (an organization context), and 404 BCK.CREDIT_TOPUPS.0001 (top-ups aren’t available to this account or deployment).
  • { "error": "topup_unsupported" } — this deployment’s API is too old for top-ups.
  • a credential-refused result — re-authorize, or set your API key.
A new requestId per top-up; the same one only to re-send. When you drive the REST route directly, on any non-2xx other than a coded 4xx refusal, or no response at all, re-send with the same requestId — the charge may have landed, and the id returns that pack instead of charging a second one. Even a coded pre-charge 4xx on a reused id can follow an earlier call that did charge: keep the same id and read get_budget rather than starting a new top-up (with a plain API key, GET /api/v1/credits/topups/purchases also lists the packs; an OAuth grant can’t read it). A needs_attention whose message says the outcome is unconfirmed may already have charged — same rule.
An OAuth grant needs Let this assistant top up my Nevermined credits ticked at consent, separately from the credit-spend box. A grant allowed to spend but not to top up is refused here with BCK.OAUTH.0040; a top-up-only grant can’t spend (BCK.OAUTH.0041 on the stablecoin routes, BCK.OAUTH.0037 on the credits route). Reconnect with the right boxes — see Who can spend your credits.

Try it

Ask your assistant:
My credits are low and the next call needs about 1,000. Top up within my limit, then make the call.
Call it directly (⚠️ charges the human’s card — rehearse on https://mcp.sandbox.nevermined.app/mcp first):
The REST equivalent is POST /api/v1/credits/topups/pack with the same { "requestId", "forCallCredits" } body and your API key.