Price one call to a service without paying it: it charges nothing, signs nothing, and reserves no budget. Pass exactly what you’d pass to pay_service; the Router sends that request to the service unpaid, reads the price, and returns a quoteId plus the fee-inclusive total. Needs a credential (API key or OAuth commerce grant).
Auth: key / grant · Charges: nothing
A quote contacts the service. To read the price, the Router sends your request to the service unpaid — the same request a payment starts with. A service that doesn’t charge for it performs it, so take care quoting a method with side effects. The service’s response is never returned to you. A quote also spends the same per-service rate limit as a payment, so quote once per decision; don’t poll.
Arguments
Returns
The rail, the merchant amount, and the fee-inclusive total. fee.capChargedCents is whole cents rounded up; fee.capChargedMicros is exact (1/10,000 of a cent):
optionSet: "delegation" — the delegation pay_service would charge, named in delegationId.
optionSet: "deployment" — you have no delegation yet, so this is what a personal crypto delegation would select; nextTool is setup_delegation. Set one up and quote again before paying — the delegation you create can select a different rail and price.
paymentRequired: false — the service didn’t ask for payment for this request; upstreamStatus is its answer. A non-2xx usually means the path, method or body is wrong.
To pay with the quote pinned, pass quoteId to pay_service before expiresAt with the exact same call arguments. The quote id fixes the challenge and the exact fee-inclusive total; keep maxTotalCents as an independent ceiling.
Refusals (all charge nothing)
Try it
Ask your assistant:
Quote a current-weather call to openweather-mpp for Lisbon before paying.
Call it directly (charges nothing, but reaches the service — see the warning above):