autoPay: true.
Auth: key / grant · Charges: real funds if autoPay
Arguments
filters fields: require (exact opaque slug — returned only if payable and healthy, else fails closed with BCK.ROUTER.0031, never substituted), prefer (exact opaque slug, moved up when a payable match), exclude (never chosen), category (matches tags, not category names), protocol (x402 or mpp), network, maxPriceLabel (e.g. "$0.05", best-effort).
Returns
WithautoPay: false, a proposal (nothing charged):
chosenis the winner; itsinvokeUrlis the Router’s opaque alias, never the merchant’s host. Pay it byslug.shortlistis the payable candidates in pick order. Each carries a closedmatchReason,gateReason, per-itemrankingSource, and one scale-specific score. Read the order, not the numbers — the scores sit on different scales.healthyis alwaystruehere.- With
autoPay: true, the same fields plusresult(the upstream call and the payment receipt). Read the outcome fromresult.payment.status—Settled,Issued(attempted, not confirmed) orFailed— not frompaidalone.instructionsis always present and names the next step.
Refusals
Any other
autoPay refusal (cap exceeded, wallet short, card declined) comes back as a plain tool error (isError: true) carrying the Router’s own message — see pay_service’s refusals. If unsure whether it charged, check list_payments and retry only with the same requestId.
Try it
Ask your assistant:Find the best Nevermined service for the current weather in Lisbon.Call it directly (
autoPay defaults to false, so this proposes and charges nothing):