get_account_state through MCP tools/call as follows:
structuredContent. If a result has isError: true, handle the error instead of treating its text as a successful response. Tools that start a workflow return an Operation envelope, except start_instruction_action, which returns a URL handoff.
Scope summary
A missing scope is reported as
insufficient scope: <scope> is required. Request additional user consent within the OAuth client’s registered scopes. events:read and events:consume support event-assisted workflow tracking; they do not replace the scopes above.
get_account_state
Read the current wallet. Input:{}.
Each
paymentMethods[] entry includes:
Read again for every new user question about wallet state or card selection. Do not reuse old results to identify the user’s cards. A purchase using the default card does not require this call first.
set_default_card
Change the wallet default only when the user requests it. First identify exactly one card from a freshget_account_state response.
paymentInstrumentId is required and must be a non-empty string. Returns { changed, account }: account has the get_account_state shape, and changed: false means the card was already the default.
If the card is no longer available, refresh the wallet. If the change was rejected or could not be confirmed, refresh before reporting the result; offer start_payment_method_action with set-default if needed. For a single purchase on a different card, pass its ID to the purchase tool instead of changing the default.
start_payment_method_action
Start user-managed card setup or management.action accepts add, replace, set-default, or remove; it defaults to add.
Returns an Operation with a REDIRECT_USER action. Present next_action.params.redirect_url to the user; its actor: "USER_DEVICE_ONLY" means the user must open it on their device. The agent must not preview it. This call alone does not change a card. Read the same Operation after completion, then refresh get_account_state.
create_purchase_instruction
Create a spending authorization draft and start its activation flow. Use this for explicit authorization management. For Browser Pay, callget_credential directly with the checkout facts; it handles authorization matching and creation.
Each mandate contains:
When supplied,
shippingAddress requires name, line1, city, state, zip, and countryCode: "US". Optional fields are line2, line3, and deliveryContactDetails (an object).
The normal result is an Operation. Supporting hosts may instead receive MCP input_required for a URL interaction; preserve the protocol’s request state and continue with the unchanged original arguments. Accepting or opening the URL is not proof of activation.
Only a same-ID
ACTIVE instruction with a bound card and applicable mandate authorizes spending. An Operation completing is not evidence that a merchant payment occurred.
list_spendable_instructions
List active instructions with usable mandates for one card.paymentInstrumentId is optional. Omit it to resolve the current default card; if no default can be resolved, the result is an empty list. Returns { instructions: [...] }, using the Instruction fields below. Consumed or reserved one-time mandates are filtered out. Match the intended purpose, currency, amount, merchant or category, and validity before using an authorization; the list itself does not approve a new purchase.
get_instruction
Read the authoritative state of one instruction.instructionId is required. The main result fields are:
Fields other than
instructionId may be absent or null; do not turn missing amounts, card IDs, or status into a successful authorization. Additional provider fields may be returned.
start_instruction_action
Get a user-operated link to sign, update, or cancel an instruction.
For update or cancellation, send only
{ "action": "update" } or { "action": "cancel" }. The user selects the instruction on the management page.
Returns { action, actor: "USER_DEVICE_ONLY", url }, with instructionId and paymentInstrumentId when applicable. This is not an Operation; present url to the user and verify the relevant instruction with get_instruction afterward. The link alone does not sign, update, or cancel anything.
start_agent_pay_registration
Start standalone registration for a user-selected card withagent_pay_support: true.
paymentInstrumentId is required. The returned Operation provides a Passkey link for the user’s own device. Read the same Operation or wallet afterward; strongAuthRegistered: true for the same card proves completion. strongAuthReady and authProtocol do not.
If the card is already registered, do not start another registration. If ownership or eligibility cannot be verified, refresh the wallet. Browser Pay and instruction creation handle setup within their own flows; this tool is not a prerequisite for them. Card eligibility does not, by itself, promise availability in every payment scenario.
Risk settings
Both tools take{} and require wallet:read.
An Operation may confirm that a verified save occurred when event permissions are available. Always read
get_risk_rules for the current values, including when the user makes no change or no completion event arrives.
For common waiting, redirect, and error handling, see Operations and next actions.