Skip to main content
Write tools let your AI assistant make changes on your behalf. All write tools require the appropriate permissions, and payments always require your explicit approval in the Moneda mobile app.

Profile

Change your display name shown to other Moneda users.Try asking: “Change my display name to Federico”
Give one of your passkeys a nickname so you can tell your devices apart in the security screen. Maximum 40 characters. Pass the passkey id from get_passkeys, or send an empty label to go back to the provider name. Cosmetic only — it cannot add, remove, or weaken a passkey.Try asking: “Rename my hardware key passkey to Backup Yubikey”

Transaction annotations

Assign a spending category to a transaction (e.g. Groceries, Restaurants, Travel).Try asking: “Categorize my last coffee purchase as Restaurants”
Add or update a personal note on a transaction. Maximum 140 characters.Try asking: “Add a note to my last transaction: Birthday dinner with friends”
Assign spending categories to up to 25 transactions at once.Try asking: “Categorize all my uncategorized transactions from last week”
Add or update notes on up to 25 transactions at once.Try asking: “Add notes to my recent transactions”

External accounts

Save an external crypto wallet to your account. The wallet must support USDC, EURC, CHFAU, CADD, and MXNB on the Base network. You’ll be asked to confirm this before the wallet is saved.Try asking: “Save this wallet address: 0x…”
Save a bank account for withdrawals. Supports EU bank accounts (IBAN) and US bank accounts (ACH routing + account number).Try asking: “Add my bank account”

Contacts

Register an external (non-Moneda) contact with their wallet address or bank account details. EU Travel Rule requires first name, last name, and country of residence.Try asking: “Add John as an external contact with his wallet address”
Add a Moneda user to your contacts by their username.Try asking: “Add @alice to my contacts”

Payments

Payment requests created through MCP are sent to your Moneda mobile app, where you must approve them with biometric authentication. No money moves without your explicit confirmation.
Create a payment request that requires your approval in the Moneda app. Supports transfers to Moneda users, your own external accounts, or contact bank accounts and wallets.Try asking: “Send $50 to @alice” or “Transfer EUR 100 to my bank account”By default the money comes from your main balance. Pass source to pay from earnings (USD and EUR sends) or from one of your single-signature sub-accounts (wallet recipients on Base only). Paying from a sub-account also needs the write:sub_accounts scope.Wallet payouts go out on Base. Payouts to a contact’s wallet on another chain can’t be requested through an agent yet; make those in the Moneda app.
Exchange money between two of your own currency accounts, for example USD to EUR. The money lands in your own account in the target currency, and nothing moves until you approve the request in the Moneda app. Supported currencies: USD, EUR, CHF, CAD, MXN.Try asking: “Exchange $100 into euros”
Propose a recurring payment, for example $50 every month to a Moneda user or a contact’s wallet. You review it in the Moneda app, including the most it can ever send, and nothing is scheduled until you approve and sign with your passkey. Proposals you don’t approve expire after 48 hours.Try asking: “Send @alice $50 every month starting October 1”
Propose moving money from your main account into one of your sub-accounts. Nothing moves until you approve and sign in the Moneda app. Requires the write:sub_accounts scope.Try asking: “Put $200 into my Travel vault”
Propose moving money from a sub-account back to your main account. For joint accounts that need more than one approval, use propose_sub_account_multisig_proposal. Requires the write:sub_accounts scope.Try asking: “Move €50 from my Travel vault back to my account”
Propose a swap inside a sub-account, for example USD into Bitcoin. The funds stay in the sub-account, and you see the live price and sign in the Moneda app. Requires the write:sub_accounts scope.Try asking: “Swap $100 to Bitcoin in my Savings vault”
Propose freezing a sub-account you created. You approve it in the Moneda app; unfreezing can only be done in the app. Requires the write:sub_accounts scope.Try asking: “Freeze my Kids vault”
Open a spend or withdraw proposal on a joint account that needs more than one approval. This only creates the proposal: you and your co-owners still approve and execute it in the Moneda app. Requires the write:sub_accounts scope.Try asking: “Propose paying @landlord $900 from our joint account”
Buy or sell a crypto asset (Bitcoin or Ethereum) with your own balance. Moneda picks the route. You see the live price in the Moneda app, and nothing moves until you approve and sign there. Pays from or lands in USD, EUR, CAD or MXN.Try asking: “Buy $100 of Bitcoin”
Buy a token on Base that is not in the crypto-trade catalogue, by its contract address, with your own USD, EUR, CHF or MXN balance. The token must be tradeable on Base. You see how much you get at the live price in the Moneda app, and nothing moves until you approve and sign there.Try asking: “Buy $25 of the token at 0x4ed4…efed”
Cancel an open crypto limit, stop-loss, take-profit or trailing-stop order. For a repeating rule, every remaining repeat is cancelled too. If the order is already live in the order book, it is withdrawn on-chain first and only then marked cancelled; if that fails the order stays live and you can retry. Filled, cancelled or expired orders can’t be cancelled. Requires write:trades. Creating orders is only possible in the Moneda app.Try asking: “Cancel my ETH take-profit order”
Move your own money into or out of an earnings vault: Earnings (Morpho, in USD, EUR or MXN) or Smart Earnings (YO, in USD or EUR). A deposit comes from the account in the same currency, and a withdrawal goes back to it. Nothing moves until you approve and sign in the Moneda app.Try asking: “Move $500 into Smart Earnings”
Check the current status of a pending payment request. Terminal statuses are: completed, failed, expired, or rejected.Try asking: “What’s the status of my last payment?”
Pay an x402 (HTTP 402 Payment Required) invoice to a wallet address. When an API or service replies with HTTP 402, your AI assistant can pay it with USDC or EURC — requiring your approval in the Moneda app before it settles. Then it polls get_payment_status and retries the original request once paid.Try asking: “This API returned a 402 — pay the x402 invoice for me.”

Receipts

Step 1 of 2 for uploading a local receipt file. Returns a presigned S3 PUT URL, a signed upload key, and a literal curl command for your code sandbox to stage the file. The file bytes go straight to S3 — never through the conversation context. Follow up with finalize_receipt_upload.Try asking: “I want to upload a receipt — what do I do?”
Step 2 of 2 for uploading a local receipt file. Pass the upload key from request_receipt_upload after you’ve PUT the file to S3. Runs OCR + LLM extraction, attempts to auto-match to an existing transaction, and persists line items. Returns the receipt id, optional bill id (for invoices), and any matched/suggested transaction.Try asking: (used as a follow-up to request_receipt_upload)
Import a receipt directly from an https:// URL (S3, Drive shared link, public file host). The server fetches the file behind an SSRF guard, validates it, then runs OCR + matching. Single tool call, no sandbox needed.Try asking: “Import this receipt from this URL”
Re-run the OCR / LLM extraction pipeline on an existing receipt and return the refreshed fields. Use when extraction looks wrong or after a model upgrade.Try asking: “Re-scan this receipt — the merchant looks wrong”
File an unattached receipt against a transaction. A transaction holds at most one receipt, so this reports a conflict if another is already attached — detach that one first.Try asking: “Attach that invoice to my Adobe payment”
Unlink a receipt from its transaction, leaving the receipt itself intact as an orphan. Use it to correct a wrong match or free the transaction for a different receipt. Deletes nothing.Try asking: “That receipt is on the wrong transaction, unlink it”
Accept the matcher’s suggested transaction for a receipt, promoting the soft suggestion to a real attachment. Suggestions appear when the match score was too low to attach automatically.Try asking: “Yes, that receipt does belong to the Lufthansa charge”
Dismiss the matcher’s suggested transaction. The receipt stays unattached and stops being offered against that transaction.Try asking: “No, that receipt isn’t for that payment”
Permanently delete a receipt and its stored file. This is a hard delete — line items and any Bewirtungsbeleg or Eigenbeleg overlay go with it, and there is no undo. To move a receipt to a different transaction, use detach_receipt and attach_receipt instead.Try asking: “Delete that duplicate receipt”
Mark a receipt as a partial payment: the document covers more than this one payment (a deposit or instalment against a larger invoice), so its total differing from the transaction amount is expected. Clears the amount-mismatch warning and keeps it cleared across a rescan. Amounts are not changed.Try asking: “That invoice was only a deposit, stop flagging the amount”
Correct a receipt’s total, subtotal, tax amount, tax rate or tip when the scan read them wrong. Omit a field to leave it unchanged, pass null to clear it. The tax rate is a percentage (19 for 19%). Rescanning the receipt re-extracts and overwrites these.Try asking: “The total on that receipt is 47.50, not 4.75”

Agent sessions

Agent sessions let you hand your AI a bounded, autonomous spending mandate: a single pinned recipient, a per-payment cap, and a per-period cap, enforced on-chain by a pre-funded dedicated wallet. The funded balance is the hard ceiling on worst-case loss and the recipient is fixed on-chain — the agent can never exceed the limits or redirect funds. These tools need the Manage Agent Sessions permission, which is not granted by default — you opt in at connection time.
Create a scoped autonomous session bound to your AI agent. You provide the recipient, currency, per-payment and per-period limits, and an optional expiry and funding amount. The tool returns a wallet address and an activation link. The session is not active yet — you open the activation link in the Moneda app and approve with your passkey to install the on-chain spending policy and fund the wallet. Only then can the agent pay within those limits.Try asking: “Set up an agent that can pay my landlord up to $500/month”
Send a payment to an active session’s pinned recipient, within its on-chain limits — no per-payment approval. Rejected automatically if it would exceed the per-payment cap, the remaining period cap, or the funded balance. For safe retries, pass a stable idempotency key — retrying with the same key returns the original transaction instead of sending twice.Try asking: “Pay this month’s rent from my landlord agent session”
Revoke an agent session. This immediately stops all further payments through it. You finish the on-chain teardown in the Moneda app.Try asking: “Stop the landlord agent session”

Active sessions

These tools let your AI sign devices out of your account and disconnect connected agents. Terminating a session takes effect immediately. They need the Manage Active Sessions permission, which is not granted by default — you opt in at connection time.
Sign out one login session by id (from list_active_sessions). The device is signed out immediately and can’t renew.Try asking: “Sign out my old iPhone” or “Terminate that web session”
Sign out all of your login sessions on other devices, keeping the current one. Doesn’t disconnect connected agents.Try asking: “Sign me out of every other device”
Disconnect a connected agent by id, revoking its access to your account immediately.Try asking: “Disconnect the ChatGPT connection”

Usage credits

AI usage credits are prepaid budget for your AI assistant. You top up by sending a stablecoin payment to Moneda and then redeeming that completed payment for credits. This tool needs the Purchase AI Usage Credits permission, which is not granted by default — you opt in at connection time.
Redeem a payment you already sent to Moneda for prepaid AI usage credits. You give the transaction hash of the completed top-up, and the amount is read straight from that confirmed payment, converted to your USD credit balance. The payment is already finished, so there’s nothing more to approve — this just turns it into credits. Safe to call again with the same hash: credits are only ever granted once.Try asking: “I sent the credit payment, here’s the transaction hash — add my AI credits.”
Set a monthly cap on how much of your prepaid AI credit balance can be spent, or remove the cap entirely. Give a US dollar amount to set the limit, or ask for no limit to make it unlimited. The cap resets at the start of each month. Setting the same value again does nothing.Try asking: “Cap my AI spending at $50 a month.” or “Remove my monthly AI spending limit.”
Turn your Moneda Points into prepaid AI usage credits. Spends the points and adds the matching AI credit balance in one step, subject to a minimum and a monthly limit (check get_points_redemption_config first). Redemptions are final.Try asking: “Redeem 500 points for AI credits.”
Create an API key for a script, the CLI, or an integration. The secret is returned once and can never be retrieved again. A key can only carry permissions the connection creating it already has, and can never be used for payments — those always need your approval in the app.Try asking: “Create a read-only API key for my accounting script”
Revoke an API key. It stops working on its very next request, and this can’t be undone — you’d need to create a new key.Try asking: “Revoke the key I made for the old export script”

Learn more

Read tools

Tools for querying balances, transactions, account data, recovery setup, notifications, vaults, receipts, and bills.

Scopes

Permission scopes that control which tools your AI can use.