Moneda
REMOTE · MCP.MONEDA.COM
Financial intelligence for AI: manage balances, transactions, payments, and more
Available components
Last scanned (7 hours ago)
Scores higher than 93% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability83
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 18400 tokens (~129/item across 142 items; 138 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management30
- Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 93% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 12 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 139 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.
- 4 Nov 26 0
- Tool “get_market_status” rewrote its description, which is the text the model reads security
- Server version: 0.15.0 → 0.16.0 functional
- 3 Nov 26 +13
- Authorization: unverified → pass ▲ security
- 2 Nov 26 −12
- Authorization: pass → unverified ▼ security
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +1
- Tool “get_market_status” rewrote its description, which is the text the model reads security
- Resource “balances” was removed ▼ functional
- Resource “exchange_rates” was removed ▼ functional
- Resource “my_accounts” was removed ▼ functional
- Resource “passkeys” was removed ▼ functional
- Resource “points” was removed ▼ functional
- Resource “profile” was removed ▼ functional
- Resource “recovery_contacts” was removed ▼ functional
- Resource “settings” was removed ▼ functional
- Resource “transactions” was removed ▼ functional
- Resource “virtual_accounts” was removed ▼ functional
- Resource “wallet” was removed ▼ functional
- Server version: 0.14.0 → 0.15.0 functional
- “get_market_status” added an optional parameter “exchange” cosmetic
- “get_market_status” added an optional parameter “symbol” cosmetic
- 28 Oct 26 0
- Stability: unverified → 0.03 ▲ functional
- 27 Oct 26 82
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://mcp.moneda.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.moneda.com | CN=YR1,O=Let's Encrypt,C=US | 16 Oct 2026 | 14 Jan 2027 | RSA 2048 | SHA256-RSA | 65e3396a3c8be17aeb18f32f7f471ce3e77 |
| SANs: mcp.moneda.com | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of mcp.moneda.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| moneda.com. | present | 7497 | 13 | Verified |
| mcp.moneda.com. | Verified address RRset verified with the apex keys |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://id.moneda.com/.well-known/oauth-protected-resource"
Bearer resource_metadata="https://id.moneda.com/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | frame-ancestors 'none' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
Protected resource metadata
| Document | https://id.moneda.com/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.moneda.com |
| Authorisation server | https://id.moneda.com |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.moneda.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.moneda.com/api/mcp | HTTPS enforced | 308 | https://mcp.moneda.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
get_points_redemption_config ~68
Read the config for redeeming Moneda Points into AI usage credits: the points-per-$1 rate, the minimum redemption, the monthly cap, the user's current points balance, and how much of the monthly allowance is left. Call this before redeem_points to price and gate a redemption.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_points_rewards_data ~76
Fetch points and referral data in one call: points balance, recent activity, referral code, and referees. Use this instead of calling get_points_balance + get_points_activity + get_referral_code + get_referees separately.
| Name | Type | Req | Description |
|---|---|---|---|
| activityLimit | number | – | Number of recent points activities to return (default: 10) |
No output schema declared.
No examples provided.
get_receipt ~85
Fetch a single receipt by id with full extracted fields (merchant, total, currency, tax breakdown, line-item count) plus a presigned `downloadUrl` valid for ~15 minutes. Use this when the user asks about a specific receipt or to surface the file URL to the LLM context.
| Name | Type | Req | Description |
|---|---|---|---|
| receiptId | string | yes | Receipt id (from list_receipts output). |
No output schema declared.
No examples provided.
get_receipt_line_items ~66
List the parsed line items on a receipt — description, quantity, unitPrice, totalPrice, taxRate, and category. Useful for spend-by-product breakdowns or itemized review of an invoice.
| Name | Type | Req | Description |
|---|---|---|---|
| receiptId | string | yes | Receipt id whose line items to fetch. |
No output schema declared.
No examples provided.
get_recovery_config ~72
Get the recovery configuration for an account: accepted recovery emails, total weight, and the threshold required to approve a recovery. The threshold is a fixed number that must match the on-chain Universal Email Recovery Module config.
| Name | Type | Req | Description |
|---|---|---|---|
| accountId | string | – | Account UUID. Defaults to the user's main LOCAL account when omitted. |
No output schema declared.
No examples provided.
get_recovery_contacts ~28
Get the user's recovery contacts and the people who have you as their recovery contact (guardian).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_recovery_email ~49
Get one recovery email's full detail by id — email, weight, status, timestamps, notes, and the on-chain account address it protects.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Recovery email UUID |
No output schema declared.
No examples provided.
get_recovery_status ~114
Get the most recent ZK email recovery request snapshot for an account. Returns hasActiveRecovery: false when no recovery exists or the latest is in a terminal state (cancelled/completed/expired); otherwise returns recovery details including approved/pending recovery emails (anonymized as a***@domain) and time until executable. Reads from DB only — agents tolerate the slight lag while the cron syncs on-chain state.
| Name | Type | Req | Description |
|---|---|---|---|
| accountId | string | – | Account UUID. Defaults to the user's main LOCAL account when omitted. |
No output schema declared.
No examples provided.
get_referees ~23
Get the list of users this user has referred to Moneda
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_referral_code ~20
Get the user's unique referral code and referral count
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_security_checkup_data ~49
Fetch security checkup data in one call: passkeys, recovery contacts, and security-related settings. Use this instead of calling get_passkeys + get_recovery_contacts + get_settings separately.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_settings ~33
Get the user's app settings and preferences: language, currency, country, theme, notifications, biometrics, and display options.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_settlement_estimate ~123
Get the date a US bank (ACH) transfer would actually settle. Accounts for Iron's 3:00 PM ET same-day cutoff, weekends, AND US federal bank holidays — a transfer sent the afternoon before Thanksgiving does not arrive the next day. Use this to answer 'when will my money arrive?' instead of saying 'next business day'. USD/ACH only; Iron publishes no equivalent cutoff for EUR/SEPA.
| Name | Type | Req | Description |
|---|---|---|---|
| submittedAt | string | – | ISO timestamp of when the transfer was submitted. Omit to estimate for a transfer sent right now. |
No output schema declared.
No examples provided.
get_spending_analysis_data ~90
Fetch spending analysis data in one call: spending by type group, daily totals, and category breakdown for a period. Use this instead of calling get_spending_by_type_group + get_daily_spending + get_spending_by_category separately. All totals are in USDC units (26.5 means 26.50).
| Name | Type | Req | Description |
|---|---|---|---|
| period | string | – | Analysis period (default: 30d) |
No output schema declared.
No examples provided.
get_spending_by_category ~117
Get spending grouped by user-assigned transaction category over a window. Transactions without a category land in an 'UNCATEGORIZED' bucket. Amounts are in currency units (26.5 means 26.50), like `get_transactions`.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | yes | – |
| from | string | – | ISO 8601 UTC start of an absolute window |
| period | string | – | Rolling time window. Mutually exclusive with from/to. |
| to | string | – | ISO 8601 UTC end of an absolute window |
No output schema declared.
No examples provided.
get_spending_by_contact ~136
Get the total amount sent to a single recipient (Moneda user, external bank, or external wallet) over a window. Identify the recipient by their account ID (recipientAccountId). Amounts are in currency units (26.5 means 26.50), like `get_transactions`.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | yes | – |
| from | string | – | ISO 8601 UTC start of an absolute window |
| period | string | – | Rolling time window. Mutually exclusive with from/to. |
| recipientAccountId | string | yes | – |
| to | string | – | ISO 8601 UTC end of an absolute window |
No output schema declared.
No examples provided.
get_spending_by_merchant ~133
Get spending grouped by recipient/merchant. Each Moneda user gets their own bucket; off-ramps share a single bucket per type (bank-withdrawal, external-wallet, coinbase, wallet-connect). Amounts are in currency units (26.5 means 26.50), like `get_transactions`.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | yes | – |
| from | string | – | ISO 8601 UTC start of an absolute window |
| period | string | – | Rolling time window. Mutually exclusive with from/to. |
| to | string | – | ISO 8601 UTC end of an absolute window |
No output schema declared.
No examples provided.
get_spending_by_type_group ~133
Get spending grouped by transaction type group (transfer, exchange, deposit, withdrawal, earnings, topup, offramp) for a 7/30/90-day window. Includes period-over-period comparison. For finer breakdowns by user-assigned category, contact, or merchant, use get_spending_by_category / get_spending_by_contact / get_spending_by_merchant. (This tool was previously named get_spending_summary.)
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | – | Filter by currency (USD, EUR, CHF, CAD, or MXN) |
| period | string | yes | Time period for the summary |
No output schema declared.
No examples provided.
get_spending_comparison ~110
Compare total spending across two arbitrary windows (e.g. this month vs last month, year-over-year). Returns absolute and percentage deltas; deltaPct is null when previous total is 0. Amounts are in currency units (26.5 means 26.50), like `get_transactions`.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | yes | – |
| currentFrom | string | yes | – |
| currentTo | string | yes | – |
| previousFrom | string | yes | – |
| previousTo | string | yes | – |
No output schema declared.
No examples provided.
get_spending_transactions ~215
List the underlying spending transactions for a window. Optionally drill down into a category bucket (bucketKind='category', bucketId=CategoryType or 'UNCATEGORIZED') or a merchant bucket (bucketKind='merchant', bucketType=..., bucketId=user UUID for type='user'). Paginated via take/skip. Amounts are in currency units (26.5 means 26.50), like `get_transactions`.
| Name | Type | Req | Description |
|---|---|---|---|
| bucketId | string | – | – |
| bucketKind | string | – | – |
| bucketType | string | – | – |
| currency | string | – | – |
| direction | string | – | – |
| from | string | – | ISO 8601 UTC start of an absolute window |
| orderBy | string | – | – |
| period | string | – | Rolling time window. Mutually exclusive with from/to. |
| recipientAccountId | string | – | – |
| skip | integer | – | – |
| take | integer | – | – |
| to | string | – | ISO 8601 UTC end of an absolute window |
No output schema declared.
No examples provided.
get_statement_status ~118
Check the status of your most recent balance-statement request. When READY, returns a time-limited PDF download URL. Not tax advice.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | – | – | Without requestId: scope to the latest statement for a specific filter (USD, EUR, CHF, CAD, MXN or CRYPTO; matches what you passed to generate_statement). null = the latest all-activity statement. |
| requestId | string | – | The requestId returned by generate_statement. Pass it to poll that exact statement; without it you get the most recent one. |
No output schema declared.
No examples provided.
get_sub_account ~49
Get one sub-account by id with full detail — name, status, type, members, parent + child Safe addresses, deployment index, close timestamp.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Sub-account UUID |
No output schema declared.
No examples provided.
get_sub_account_balance ~116
Read on-chain balances for a sub-account's child Safe. Pass currency (USDC / EURC / CHFAU / CADD / MXNB) to filter to a single token; omit to get every enabled token. Balances are returned as raw bigint strings — 6 decimals for USDC/EURC/CHFAU/MXNB, 18 for CADD.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | – | Filter to a single token. Omit for all enabled currencies. |
| id | string | yes | Sub-account UUID |
No output schema declared.
No examples provided.
get_sub_account_proposal ~48
Get one joint-account request by id, including the per-member approval list (who approved, who rejected, and when). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| proposalId | string | yes | Proposal UUID |
No output schema declared.
No examples provided.
get_subscription_invoice ~127
Generate (idempotently) the ZUGFeRD plan invoice PDF for a single subscription charge and return a 1-hour presigned download URL. First call allocates the invoice number (YYYY-NNNNNN), renders the PDF/A-3 with embedded EN 16931 XML, and uploads to S3; subsequent calls return a fresh presigned URL for the existing row. The user must own the underlying charge. Returns `{ invoiceNumber, downloadUrl }`.
| Name | Type | Req | Description |
|---|---|---|---|
| chargeTransactionId | string | yes | The SUBSCRIPTION_CHARGE Transaction id (from list_subscription_charges output). |
No output schema declared.
No examples provided.
get_total_wealth ~622
Aggregate wealth across the user's main account + every live vault. Returns per-leg breakdown (wallet + Morpho + YO for main; wallet-only for vaults) plus per-currency totals (USDC, EURC, CHFAU, CADD, MXNB) and combined totalUsd/totalEur grand totals. USDC/EURC are cross-converted using the on-chain Aerodrome rate; CHFAU, CADD and MXNB keep their own columns but are also folded into totalUsd/totalEur using their fiat rates (MXNB via its Aerodrome pool). MXNB includes the Juno MXNB Prime Morpho vault. `stocksUsd` is the value of stocks and ETFs in the brokerage account at the latest delayed quote, and `cryptoUsd` the value of crypto held in the main account and every vault at the current reference price (both 6-decimal USD; null means it could not be priced, not zero). The app's Total wealth adds both on top of the currency totals; the app prices crypto at what selling now would return, so its figure can differ slightly. `stockPositions` and `cryptoPositions` list each held asset (symbol, quantity in whole units, valueUsd, costUsd, realizedUsd): use them for 'how much crypto do I hold', 'what is my bitcoin worth' (cbBTC) or 'what stocks do I own'. `costUsd` is what the user paid for the position, so valueUsd minus costUsd is how much they are up or down; null means the cost is not on record (for example tokens received from outside), so do not report a gain or loss for it. `realizedUsd` is the profit or loss the user already locked in by selling part of that position (negative for a loss), separate from the unrealized figure: quote it for 'how much have I made selling X'; null means it is not on record, so say so rather than zero. `closedStockPositions` lists stocks and ETFs the user has sold all of, each with `realizedUsd` (what selling it made or lost): use it for 'how did my Tesla trade end up' or 'what have I made on stocks I sold'. `closedCryptoPositions` is the same for crypto the user bought in the app and has fully sold; a token they moved in or out some oth…
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_transactions ~990
Get transaction history including card programme activity. Standard format returns JSON; tax_export returns a compact CSV with full unmasked addresses, token contracts, vault tokens, sender/recipient details, and tax labels (Koinly/CoinTracker/TaxBit compatible). Use year for annual tax exports (up to 250 per request). Filter by typeGroup, type, category, currency, dates, counterparty, amount, status, hasNote, hasCategory, hasReceipt, and card. For card queries, pass `card` (matches a card by its last 4 digits like "1234" or by a substring of the card alias like "subscriptions"), `cardId` if you already have the UUID, or `typeGroup: "card"` for activity across all cards. CARD_* rows include merchantName, MCC, country, and last4.
| Name | Type | Req | Description |
|---|---|---|---|
| card | string | – | Friendly card filter — accepts either a 4-digit string (matches Card.lastFourDigits, e.g. "1234") or any other string (case-insensitive substring match on the card alias, e.g. "subscriptions"). Multi… |
| cardId | string | – | Card programme card UUID. Use this when you already have the id. For natural-language queries like 'my subscriptions card' or 'card ending in 1234', use the `card` parameter instead. |
| category | string | – | Spending category: FRIENDS_FAMILY, GROCERIES, RESTAURANTS, SHOPPING, TRAVEL, SALARY, etc. |
| counterparty | string | – | @username, wallet address, wallet name, IBAN, external provider (e.g. 'Coinbase'), or card merchant name (matches CARD_PURCHASE / CARD_ATM_WITHDRAWAL / CARD_REFUND rows by their `merchantName`). Use… |
| currency | string | – | Currency filter |
| direction | string | – | Direction relative to the user: incoming (you received), outgoing (you sent), or exchange (internal swap). |
| endDate | string | – | To date (ISO 8601, e.g. 2025-12-31) |
| format | string | – | "standard" (default): JSON with direction, amount, counterparty. "tax_export": compact CSV with sent/received amounts, token addresses, sender/recipient with full unmasked addresses, user address, an… |
| hasCategory | boolean | – | Filter by category presence. false = uncategorized transactions. true = only categorized. |
| hasNote | boolean | – | Filter by note presence. false = missing notes (for bulk annotation). true = only annotated. |
| hasReceipt | boolean | – | Filter by receipt presence. false = no receipt attached (e.g. to chase missing receipts). true = has a receipt. |
| limit | number | – | Max results (standard: default 5, max 10; tax_export: default 50, max 250) |
| maxAmount | number | – | Max amount in human units (e.g. 500 = $500) |
| minAmount | number | – | Min amount in human units (e.g. 100 = $100) |
| offset | number | – | Skip N transactions for pagination |
| search | string | – | Free-text substring search across transaction notes, raw reference fields, and card-transaction merchant names (case-insensitive). Use this for natural-language queries like 'Lidl' or 'rent' that cou… |
| sort | string | – | Sort: newest/oldest by date, amount_desc/amount_asc by raw amount (default: newest) |
| startDate | string | – | From date (ISO 8601, e.g. 2025-01-01) |
| status | string | – | Status filter. Default hides PENDING/FAILED (returns COMPLETED + COMPLETED_DELAYED). Pass "all" to return every status. |
| transactionHash | string | – | Exact transaction hash (0x prefix optional, case-insensitive). Returns at most one transaction. |
| type | string | – | Exact TransactionType: TRANSFER, SWAP, DEPOSIT_YO, WITHDRAWAL, ON_RAMP, OFF_RAMP_BANK, etc. |
| typeGroup | string | – | Group filter: transfer, exchange, deposit, withdrawal, earnings, topup, offramp, card, trade (crypto/stock buys and sells; rows carry a `trade` block with fills, fees and failure) |
| year | integer | – | Tax year (e.g. 2025). Filters Jan 1 – Dec 31. Overrides startDate/endDate. |
No output schema declared.
No examples provided.
get_unread_notification_count ~43
Number of unread in-app notifications for the user. Cheaper than list_notifications when the agent only needs the count to answer 'do I have anything new?'.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_upcoming_ipos ~127
Companies that have filed with the SEC to go public in the US (S-1 or F-1) and have not listed yet: name, stage (filed, priced or listed), proposed ticker, website, and first and latest filing dates. Use for "what IPOs are coming up?" or "is X going public?". Nothing on the list can be bought until it lists; to follow one and be alerted when it prices, send the user to the IPO page under Invest in the Moneda app. Returns available:false when market data is off for the user.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_virtual_account_limits ~206
Get how much of the user's Iron virtual-account spending limit is left, per direction (deposit = money in, withdrawal = money out), on a rolling 52-week window. Also reports whether Iron is currently requesting enhanced due diligence (EDD). Crossing a limit does NOT reject the transfer: Iron PAUSES it and gives the user 24 hours to supply a Source-of-Wealth document, so check this BEFORE proposing a large deposit or withdrawal. `rfiRequired: true` means Iron has an open information request waiting on the user's answers (see get_information_requests). `missingRequirements` (only while `eddRequired`) lists the Iron requirement codes still outstanding, e.g. `kyc_questionnaire`, `kyc_proof_of_residence`: the user finishes them in the Moneda app at Settings > Features and limits. `threshold: null` means the customer has no enforced cap. Thresholds are personalised per customer — never assume a number, always read it here.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_virtual_accounts ~51
Get the user's virtual bank account details (IBAN and ACH), payment capabilities, and activation status. Minimum transfer: €1 for EUR (IBAN/SEPA) and $1 for USD (ACH).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_wallet ~74
Get the user's Moneda smart wallet address on Base network. IMPORTANT: Only supports USDC, EURC, CHFAU, CADD, and MXNB on Base — other tokens or chains will result in permanent loss of funds. For Moneda-to-Moneda transfers, prefer sharing @username (instant, feeless).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
health ~19
Check the health and status of the Moneda MCP server
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
import_receipt_from_url ~188
Import a receipt directly from an https:// URL (S3, Drive shared link, public file host, etc.). The server fetches the file behind an SSRF guard (rejects private IPs, Moneda infra, and non-https), validates it, then runs OCR + matching. Single tool call, no sandbox needed. Use this when the receipt is already accessible at a URL.
| Name | Type | Req | Description |
|---|---|---|---|
| captureSource | string | – | Provenance label for the audit trail. Defaults to MANUAL_UPLOAD. |
| fileName | string | – | Override the auto-derived filename. Defaults to the last path segment of the URL. |
| mimeType | string | – | Override the Content-Type the source server returns. Useful when the source serves application/octet-stream. |
| url | string | yes | https:// URL the receipt file can be fetched from. Public hosts only (S3, Drive shared, etc.). |
No output schema declared.
No examples provided.
initiate_crypto_send ~256
Send crypto out of a Safe — the main account, a vault or a joint account — to a Moneda contact or a raw Base address, for any token the account holds. Not for selling a token (use initiate_crypto_trade), buying one (initiate_token_buy) or sending money (initiate_payment). Amounts are in the token's own smallest unit (atoms): call list_sendable_crypto first and use its `decimals` and `address`. Creates a request the user reviews, approves and signs in the Moneda mobile app — nothing moves until they do. After calling, poll get_payment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | How much to send, in the token's smallest unit (atoms), e.g. '500000000000000000' for 0.5 of an 18-decimal token |
| recipientAccountId | string | – | Moneda contact / account UUID to send to |
| recipientAddress | string | – | Raw Base address to send to, for an external send |
| subAccountId | string | – | Vault or joint account to send FROM. Omit for the main Safe. |
| tokenAddress | string | yes | Base ERC-20 contract address of the token to send |
No output schema declared.
No examples provided.
initiate_crypto_trade ~187
Buy or sell a crypto asset (e.g. cbBTC for Bitcoin, WETH for Ethereum) with the user's own balance. Not for sending money (use initiate_payment) or converting between currencies (use initiate_currency_exchange). The route/venue is chosen by the server. Creates a request the user reviews at the live price, approves and signs in the Moneda mobile app. After calling, poll get_payment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount spent, in user-facing units: stableCurrency on BUY (e.g. '100'), the asset on SELL (e.g. '0.001') |
| side | string | yes | BUY spends stableCurrency; SELL spends the asset |
| stableCurrency | string | yes | The user's balance the trade pays from or lands in |
| symbol | string | yes | Crypto asset symbol, e.g. 'cbBTC' or 'WETH' |
No output schema declared.
No examples provided.
initiate_currency_exchange ~138
Convert money between two of the user's own currency accounts (e.g. USD to EUR). Nothing leaves the user; to pay or send to anyone, use initiate_payment instead. Creates a request the user approves in the Moneda mobile app; the destination is the user's own account in toCurrency. Check balance with get_balance first. After calling, poll get_payment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount of fromCurrency to exchange, in user-facing units (e.g. '50.00') |
| fromCurrency | string | yes | Currency that leaves the user's account |
| toCurrency | string | yes | Currency that arrives in the user's account |
No output schema declared.
No examples provided.
initiate_earnings_move ~214
Move the user's own money into or out of an earnings vault: DEPOSIT from a currency account into Earnings (MORPHO) or Smart Earnings (YO), WITHDRAW back out. Not for sending money (use initiate_payment), converting currencies (use initiate_currency_exchange) or trading (use initiate_crypto_trade). YO has USD and EUR vaults; MORPHO has USD, EUR and MXN. Check balances with get_balance and rates with get_apy_rates first. Creates a request the user approves and signs in the Moneda mobile app. After calling, poll get_payment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount in user-facing units, e.g. '50.00' |
| currency | string | yes | Currency of the account and vault |
| direction | string | yes | DEPOSIT into the vault, or WITHDRAW back to the account |
| reference | string | – | Optional note shown on the approval |
| vaultProvider | string | yes | MORPHO = Earnings, YO = Smart Earnings |
No output schema declared.
No examples provided.
initiate_payment ~410
Send money to someone else (a Moneda user, a contact, or an external bank/wallet). Creates a payment request that requires user approval in the Moneda mobile app. Not for converting between the user's own currencies: use initiate_currency_exchange for that. Look up the recipient first via search_users, get_my_accounts, or get_contacts. Check balance with get_balance before calling. After calling, poll get_payment_status. Bank transfers require an active Iron account and a registered autoramp.
| Name | Type | Req | Description |
|---|---|---|---|
| accountId | string | – | Account ID for transfer_account payments (from get_my_accounts) |
| amount | string | yes | Amount in user-facing units (e.g. '50.00'). Must be greater than zero. |
| contactAccountId | string | – | Account ID for the contact's bank or wallet (contactAccountId from get_contacts). Required when a contact has multiple bank accounts or wallets. |
| contactUsername | string | – | Contact username or display name for transfer_contact_bank or transfer_contact_wallet. Accepts @username, username, or display name. |
| currency | string | yes | Currency for the payment |
| destinationChainId | string | – | Only Base ("eip155:8453") is accepted. Cross-chain payouts cannot be requested through an agent yet and are refused; the user can make them in the Moneda app. Only applies to transfer_contact_wallet. |
| paymentType | string | yes | Type of payment: transfer_moneda (to a Moneda user), transfer_account (to own external account), transfer_contact_bank (to contact's bank), transfer_contact_wallet (to contact's wallet) |
| recipientUsername | string | – | Moneda username (without @) for transfer_moneda payments |
| reference | string | – | Optional payment memo. For bank transfers: SEPA max 140 chars, ACH max 10 chars. Allowed: letters, numbers, spaces, and / - . |
| source | object | – | Where the money comes from. Omit to pay from the main balance. |
No output schema declared.
No examples provided.
initiate_token_buy ~149
Buy a Base token that is not in initiate_crypto_trade's catalogue, by contract address, spending the user's own USD, EUR, CHF or MXN balance. Use initiate_crypto_trade for catalogue assets (cbBTC, WETH, …). The token must be tradeable on Base via LiFi. Creates a request the user reviews at the live price, approves and signs in the Moneda mobile app. After calling, poll get_payment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | How much to spend, in stableCurrency (e.g. '25') |
| stableCurrency | string | yes | The user's balance the buy is paid from |
| tokenAddress | string | yes | Base ERC-20 contract address |
No output schema declared.
No examples provided.
list_active_sessions ~115
List the user's active login sessions (signed-in devices and clients: mobile app, web, CLI, API) and connected agents (MCP integrations). Use this to answer 'what devices am I signed in on?' or before terminating a session. Each login session has an `id` (pass to terminate_session), a `type`, device/location info, and `lastActive`. Each connected agent has an `id` (pass to disconnect_connected_service) and `isThisConnection: true` marks the agent making this call.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_agent_sessions ~53
List your scoped autonomous agent sessions, newest first, with status, policy, remaining period cap, and expiry. Filter by status to find ACTIVE sessions ready to execute against.
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | – | Optional status filter. |
No output schema declared.
No examples provided.
list_api_keys ~64
List the API keys on the account: name, prefix (first 12 characters), scopes, last use, expiry, and whether each is still active. The secret itself is stored hashed and is never returned here — it is shown only once, when the key is created.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_banks_for_country ~146
List the banks Koywe supports for a LATAM country, used when registering a third-party or first-party bank account that requires an explicit bank code (Colombia/PSE, Chile/CLP_BANK, Bolivia/BOB_BANK). Each bank entry has: name (human label), value (Koywe entity code — pass back as bankCode), and domain (for logo display). Mexico/Argentina/Peru also return banks but those rails resolve the bank from the account number automatically.
| Name | Type | Req | Description |
|---|---|---|---|
| countrySymbol | string | yes | ISO 3166-1 alpha-2 country code. Supported: MX, AR, PE, BR, CO, CL, BO. |
No output schema declared.
No examples provided.
list_bewirtungsbelege ~147
List German hospitality-receipt (Bewirtungsbeleg) overlays attached to the user's transactions. Each row carries the underlying transactionId, date, location, occasion, total/tip/subtotal split, deductible vs non-deductible amounts, and signing state. Pass `transactionHash` (from `get_transactions`) to scope to one transaction. Default page 20, max 100.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size (default 20, max 100). |
| offset | integer | – | Number of rows to skip for pagination. |
| transactionHash | string | – | Restrict to overlays linked to a single transaction (on-chain hash from get_transactions). |
No output schema declared.
No examples provided.
list_bills ~159
List the user's bills (AP queue), ordered 'due-soon first' (dueDate ASC NULLS LAST, id DESC). Filter by `status[]` — defaults to `['PENDING']`. Cursor-paginated; pass `nextCursor` from the previous page back as `cursor` to advance. Each row carries the extracted merchant, total, currency, invoice number, and due date.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from a previous response's `nextCursor`. |
| limit | integer | – | Page size (default 25, max 100). |
| status | array | – | Filter by BillStatus. Default ['PENDING']. Pass multiple to include several states (e.g. ['PENDING','PAID']). |
No output schema declared.
No examples provided.
list_conditional_orders ~115
List the user's crypto conditional orders (LIMIT / STOP_LOSS / TAKE_PROFIT / TRAILING_STOP, settled via CoW), newest first. Each has status (PENDING_ACTIVATION / ARMED / PUBLISHED / FILLED / CANCELLED / EXPIRED), side, assetSymbol, triggerPrice or trailPercent, raw-unit sellAmount / minBuyAmount, expiresAt and skipReason (why the keeper last did not act, e.g. insufficient_balance). Orders can only be created in the Moneda app.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_eigenbelege ~138
List self-issued substitute receipts (Eigenbeleg) — used when the original receipt for a transaction was lost or never issued. Each row carries the linked transactionId, recipientName, amount, reason, and signing state. Pass `transactionHash` (from `get_transactions`) to scope to one transaction. Default page 20, max 100.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size (default 20, max 100). |
| offset | integer | – | Number of rows to skip for pagination. |
| transactionHash | string | – | Restrict to Eigenbelege linked to a single transaction (on-chain hash from get_transactions). |
No output schema declared.
No examples provided.
list_faq_categories ~44
List the FAQ table of contents: every category (slug, name) with each item's id and question. Use an id with get_faq_item for the full answer.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_message_replies ~101
List the replies the user sent to messages from Moneda, newest first: text, the message title, and the attached document's name if any. Returns up to `limit` items (default 20, max 50) with a `nextCursor` for pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Pagination cursor: id of the last seen reply. |
| limit | integer | – | Number of replies to return (default 20, max 50). |
No output schema declared.
No examples provided.
How do I install the Moneda MCP server?
Moneda is a hosted endpoint at https://mcp.moneda.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.moneda.com
claude mcp add --transport http com-moneda-mcp 'https://mcp.moneda.com/api/mcp'
What is the Moneda MCP server?
Moneda is an MCP server listed in the public MCP registry as com.moneda/mcp. Financial intelligence for AI: manage balances, transactions, payments, and more. This page covers its hosted endpoint (https://mcp.moneda.com/api/mcp).
Is the Moneda MCP server safe to use?
Moneda scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Moneda MCP server expose?
Moneda exposes 138 tools: health, search_knowledge, list_faq_categories, get_faq_category, get_faq_item, and 133 more. Their descriptions and schemas cost roughly 18,198 tokens of context every time the server is loaded.
Does the Moneda MCP server require authentication?
Yes. Moneda asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Moneda MCP server still maintained?
Moneda is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.