request_payment
Requests a payment from the user via a wallet approval popup; the transaction is sent only after the user confirms with their password.
Instructions
Asks the user to make a payment. The wallet app opens an approval window, and the payment is only sent once the user approves it with their password (it waits up to 5 minutes). The one exception is autopay, which the user turns on themselves — only then can a payment be approved automatically, and only within an unlocked session, a small limit, and a trusted address. Arguments: to (recipient address), amount (decimal string), token (USDC by default, or ETH), memo (what the payment is for — the user reads it to decide, so always fill it in), and optionally agent_id (the recipient's ERC-8004 number, if a service told you one — the wallet then shows the user whether the address matches that agent's registered wallet). Per-payment and daily limits and the emergency lock are enforced by the app. Never send a password as an argument — the user types it in the app. Returns: status (approved/rejected/failed), tx_hash, and an explorer link.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient address (42 characters, starting with 0x). | |
| memo | No | What the payment is for — the user reads this in the approval window, so fill it in. | |
| token | No | Token: "USDC" (default) or "ETH". | |
| amount | Yes | Amount as a decimal string, for example "1.5". | |
| agent_id | No | Optional: the recipient's ERC-8004 agent number, if you know it from the service's own documentation or agent card. The wallet reads that agent's on-chain record and tells the user whether the address you are paying is the one registered for that agent. A mismatch is the useful part — a match is not proof of anything, since anyone can register. Leave it out if you don't know it; a wrong number just produces a "no such agent" note. |