code with every wallet failure. Fix the call from the
code instead of retrying the same request, because a transfer is not idempotent.
Amount and argument errors
These are safe to fix and call again in the same turn. Nothing was sent to PayBox.
See catalog token transfers for the exact
argument contract.
Approval errors
confirmation_required applies to destructive non-PayBox Mermail tools. Do
not call prepare_destructive_action for paybox_* or legacy Agent Wallet
submit/reject tools.
Upstream PayBox errors
Swap and x402 recovery
- A pending swap is not success. Use its PayBox MCP App only if it shows a
usable signing control, otherwise one returned signing handoff, then call
paybox_get_requestonce only after the user confirms signing or asks for status. The model must not callreopen_signing_window. - Never replace a pending or uncertain x402 payment. Pay with
paybox_pay_x402only —paybox_use_serviceis unpaidmode: "probe"and is not a signing-continuation origin. The authenticated browser may finish signing in the PayBox window; the model must not callpaybox_pay_x402again to resume signing. paybox_continuation_origin_not_found/ Submit failed is not awaiting signature. Reconcile once, then wait for a fresh authorizedpaybox_pay_x402if the origin is missing.- If an HTTP 402 challenge changes origin, resource/action, asset, chain, recipient, or exceeds the approved cap, stop for fresh authorization.
- Charge required_charge = max(live quote, vendor prepaid floor) when a
floor is resolved from same-origin docs or
paybox_get_contract. Covering the live quote is not permission to skip the floor. - Treat
x_paymentas sensitive proof for the exact paid resource only. Never print, log, persist, or send it to another origin. - See swaps and x402 for the full workflow.
Portfolio reads during a PayBox outage
get_agent_wallet can report a connection.status of PAYBOX_UNAVAILABLE with
an empty portfolio and a null portfolio_app. That means PayBox did not answer
that one read, not that the delegated connection ended.
- Read again later instead of telling the user to reconnect or re-authorize.
- Do not present the balances from that response as final; they are missing, not zero.
- The console keeps the last portfolio it loaded on screen while this happens, so what the user sees and what the tool returned can differ briefly.
NOT_CONNECTED, and an expired delegation shows
REAUTH_REQUIRED. Those need the user: paste connect_handoff.console_url or
reauth_handoff.console_url from get_paybox_connection / get_agent_wallet,
or print mermail wallet connect-url / reauth-url. Never send the user to
Claude, ChatGPT, or Codex connector settings for PayBox authorization.
Transfer amount rules
The argument contract these errors refer to.