Skip to main content
Every new Agent Wallet transfer uses paybox_request_transfer, including Circle USDC, native ETH/SOL, and reviewed catalog tokens. Read the current tool schema and portfolio before every request; do not reuse a stale schema or invent a fallback path. On full-profile OAuth, a current workspace member can use this live tool through the workspace owner’s active PayBox connection. The member remains the audited actor. This does not expose owner-only legacy proposal tools or connection management and does not broaden the exact transfer the member authorized.

Arguments for paybox_request_transfer

Never convert the amount to base units yourself. Mermail refuses an integer amount for any asset whose decimals it can resolve and answers paybox_amount_requires_decimal, because the same request has produced both the intended value and a 1000x-short one.

How Mermail reads the amount

Mermail resolves the asset’s decimals, converts amount_decimal to the smallest unit, and sends that to PayBox.
  • Circle USDC and chain native assets come from a built-in table.
  • Any other token is resolved through the pricing source (the DefiLlama coins API), cached briefly, and memoized once known.
  • If the lookup fails, Mermail falls back to the built-in table.
  • If no source can prove the decimals, Mermail rejects amount_decimal and asks for base units in amount instead. That is the only case where amount is the right field.

Value guards

The same resolved price protects against a scale mistake reaching the chain. The dust floor only fail-closes on a trusted quote (DefiLlama, including a recent memoized price, or a proven portfolio price). An ambiguous portfolio balance, or no price at all, fails open — so the amount still has to be correct.

Finishing the signature

paybox_request_transfer and an explicitly requested legacy submit_agent_wallet_transfer can both require PayBox interaction. Neither returns a signing plan or approval URL to a model. Those stay browser-only.
  • Through MCP, prefer the host-rendered PayBox MCP App. If it is unavailable or remains on Waiting without a usable action, paste one returned invocation-scoped signing_handoff.console_url. Never ask the user to paste a key or signature and never construct the URL from mailbox/invocation ids.
  • In Agent Chat, the response carries next_step: "finish_signing_in_paybox_transfer_widget" and the user signs in the PayBox widget shown in the conversation.
After the user signs, read provider status once with paybox_get_request. get_paybox_invocation is MCP audit state, not settlement evidence. Do not poll in a loop or restart the transfer to check status.

Errors and recovery

What each transfer error code means and the safe way to recover.