initialize → notifications/initialized → tools/list → tools/call, echoing the Mcp-Session-Id header. Any spec-compliant MCP client handles this for you — point it at the URL with the token from the OAuth flow and the tools load automatically.
Expose the tools dynamically
Register every tooltools/list returns instead of hardcoding names. Tools Agentcard ships later then appear in your integration with zero code change. If you ever need a denylist, make it config-driven and default it to empty.
By default the granular shopping tools aren’t advertised in
tools/list — the conversational buy tool covers the whole shopping flow. They remain callable by name; each tool page says which group it’s in.Approval gates
Sensitive calls can pause for explicit approval. When create_card or get_card_details returns a status ofapproval_required with an approval_id, nothing has happened yet — resolve it with approve_request. Auto-approve when the user just asked for the action; confirm with them first before revealing card credentials.
Whether those cards are live or test is set by the OAuth client your app connected with: a sandbox client mints test cards (no real charge), a production client mints live cards (which requires an active subscription). See Production.
Funding and KYC
Cards are funded from the user’s Agentcard wallet. Ifcreate_card reports that KYC or wallet funding is needed, relay the message to the user — they complete it in their own account — then retry. If a deposit is still confirming, wait the suggested interval and retry.