https://router.fluxapay.xyz/api/agentmail/{CREATOR_UID}Add an email address or domain to an allow or block list for your mail.
Register a custom sending domain ($1/month); returns the DNS records to create at your registrar.
Compose a draft (plain, reply, or forward) in one of your inboxes; nothing is sent yet.
Create a real email inbox your agent owns; the address comes back as output.email.
Remove an email address or domain from an allow or block list.
Permanently delete a draft from one of your inboxes.
Permanently delete one message from an inbox you own; this is not reversible.
Permanently delete one of your email threads and all its messages.
Get one of your domains fresh from the provider — verification status and per-record DNS state.
Get one draft from one of your inboxes (recipients, subject, body, attachments).
Forward a message from an inbox you own to new recipients.
Get one of your inboxes fresh from the provider (address, display name).
List the entries on one of your allow or block lists.
List the custom sending domains you own (name, state, renewal).
List the drafts in one of your inboxes, with filters and pagination.
List the email inboxes you own (address, state).
List the messages of an inbox you own, newest first, with label and time filters.
List conversation threads across all your inboxes, with filters and pagination.
Read one message from an inbox you own: headers, body and attachment metadata.
Get a time-limited download URL for one attachment of a message in an inbox you own.
Get a time-limited download URL for a message's original .eml file.
Delete a custom domain you own. Immediate and permanent.
Release an inbox — it is deleted IMMEDIATELY and all its mail is lost.
Reply to a message in an inbox you own; set replyAll to answer every recipient.
Full-text search the messages of an inbox you own, best match first.
Full-text search over the threads in all your inboxes (senders, subjects, bodies).
Send a draft as-is; returns the sent message's message_id and thread_id.
Send an email from an inbox you own; returns the new message and thread ids.
Get one thread from your inboxes, including its full message list.
Get a thread attachment's metadata and a time-limited download URL (not the bytes).
Edit an existing draft: recipients, subject, body, attachments, labels, or schedule.
Change an inbox's display name (the address itself is immutable).
Add or remove labels on a message; labels are the only mutable field.
Add or remove labels on one of your email threads (the only mutable field).
Trigger the provider's DNS verification check on one of your domains.
Copy this prompt and paste it into your AI agent (like Claude, GPT-4, etc.) to enable automatic X-402 payment handling.
** Your task ** Call the API at: https://router.fluxapay.xyz/api/agentmail/{CREATOR_UID}
Follow the steps below in order.
** Step 1 - Install FluxA Wallet CLI **
npm install -g @fluxa-pay/fluxa-wallet
Or use without installing: npx fluxa-wallet <command>
** Step 2 - Register agent **
fluxa-wallet init --name "<YOUR_AGENT_NAME>" --client "<YOUR_CLIENT>"
The response may include an authorization URL. Present the user with options: [Yes, open the link] [No, don't open]. If YES: run 'open "<URL>"' to open in their browser.
Verify: fluxa-wallet status
** Step 3 - Discover endpoints **
curl https://router.fluxapay.xyz/api/agentmail/{CREATOR_UID}
Returns JSON with: name, description, endpoints (paths, methods, descriptions, prices), paymentRequired, and networks.
** Step 4 - Choose payment method **
Ask the user: [On-chain USDC (Base)] or [FluxA Monetize Credits]
If USDC:
- --currency USDC
- --amount in atomic units (6 decimals, e.g., 100000 = 0.10 USDC)
If Credits (1 credit = 1 USDC):
- --currency FLUXA_MONETIZE_CREDITS
- --amount in 2-decimal units (e.g., 10 = 0.10 credits, 100 = 1.00 credits)
** Step 5 - Create an intent mandate **
x402 v3 uses intent mandates: the user pre-approves a spending plan (budget + time window), then the agent makes autonomous payments within those limits.
fluxa-wallet mandate-create \
--desc "Spend up to <BUDGET> for <DESCRIPTION> valid for <DURATION>" \
--amount <BUDGET_IN_UNITS> \
--seconds <DURATION_IN_SECONDS> \
--currency <USDC or FLUXA_MONETIZE_CREDITS>
Options:
- --desc (required): Human-readable spending plan description
- --amount (required): Budget in units for the chosen currency (see Step 4)
- --seconds (optional, default 28800 = 8h): Duration in seconds
- --currency (optional, default USDC): USDC or FLUXA_MONETIZE_CREDITS
** Step 6 - Get user to sign the mandate **
The response from Step 5 includes mandateId and authorizationUrl (TTL: 10 minutes).
Present the user with options: [Yes, open the link] [No, don't open]. If YES: run 'open "<authorizationUrl>"' to open in their browser.
** Step 7 - Wait for mandate to be signed **
fluxa-wallet mandate-status --id <MANDATE_ID>
Poll until mandate.status is "signed". The response also includes remainingAmount.
Important: Use --id, not --mandate.
** Step 8 - Call the API **
curl https://router.fluxapay.xyz/api/agentmail/{CREATOR_UID}
Optionally add the X-Agent-ID header for agent attribution (its value is the agent_id from 'fluxa-wallet status'): curl -H "X-Agent-ID: <YOUR_AGENT_ID>" https://router.fluxapay.xyz/api/agentmail/{CREATOR_UID}
If it returns HTTP 402, continue to Step 9.
** Step 9 - Pay via x402 v3 **
Pass the complete HTTP 402 response body as --payload:
fluxa-wallet x402-v3 \
--mandate <MANDATE_ID> \
--payload '$PAYLOAD_402'
The payload must contain an accepts array. Do NOT extract individual fields - pass the entire 402 response JSON.
The response includes xPaymentB64 (the payment token).
** Step 10 - Retry with payment token **
Retry the same request with the X-Payment header (optionally add X-Agent-ID for attribution):
curl -H "X-Payment: <xPaymentB64>" <ORIGINAL_API_URL>
Return the raw API response to the user without post-processing.
** Opening links for user **
Whenever you need to open a URL (authorization, approval, or any external link):
1. Present the user with a choice using your interactive options/menu capability (e.g., AskUserQuestion tool)
2. Options: [Yes, open the link] [No, don't open]
3. If YES: run 'open "<URL>"' to open in their default browser
4. If NO: ask how they would like to proceed
** Error handling **
- mandate_not_signed: User hasn't signed yet - ask them to open authorizationUrl
- mandate_expired: Time window passed - create a new mandate
- mandate_budget_exceeded: Budget too low - create a new mandate with a higher limit
- agent_not_registered: No Agent ID - run 'fluxa-wallet init' first
- Invalid payload: missing accepts array: Pass the full 402 response JSON