Moneda
REMOTE · MCP.MONEDA.COM
Financial intelligence for AI: manage balances, transactions, payments, and more
Available components
Last scanned (8 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 →
list_notifications ~145
List the user's in-app notifications, newest first. Pass filter='unread' to scope to unread items (use this to answer 'do I have any new notifications?'). Each notification has a `type`, an optional `deepLink`, and a `metadata` JSON blob whose shape varies by type. 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 notification. |
| filter | string | – | Filter by read state. Default: all. |
| limit | integer | – | Number of notifications to return (default 20, max 50). |
No output schema declared.
No examples provided.
list_receipts ~191
List the user's transaction receipts (PDFs, images, structured invoices), newest first. Each entry carries extracted summary fields (merchant, total, date, currency) plus the linked transactionId when attached. Use `transactionHash` (from `get_transactions`) to scope to one transaction, `needsReview=true` to find rows flagged for manual review, and `status` to filter by lifecycle state. Default page 20, max 100.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size (default 20, max 100). |
| needsReview | boolean | – | If true, only return rows the extractor flagged for manual review. |
| offset | integer | – | Number of receipts to skip for pagination. |
| status | string | – | Filter by lifecycle status. Default: everything except DELETED. |
| transactionHash | string | – | Restrict to receipts linked to a single transaction (on-chain hash from get_transactions). |
No output schema declared.
No examples provided.
list_recovery_emails ~81
List the email addresses set up for ZK email-based account recovery. Returns id, email, weight, status (pending/invited/accepted/declined/removed), and timestamps. Defaults to the user's main account when accountId is omitted.
| 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.
list_sendable_crypto ~140
List the crypto held in a Safe that can be sent out: balance (in the token's smallest unit), decimals, USD value where one can be found, and whether the token is allowlisted or merely discovered on LiFi's Base list. Covers the main account, vaults and joint accounts. Pass the returned contract address to initiate_crypto_send — never the symbol, because two tokens can claim the same one. `enabled: false` means crypto transfers are off for this account, which is not the same as holding nothing.
| Name | Type | Req | Description |
|---|---|---|---|
| subAccountId | string | – | Vault or joint account to list. Omit for the main account's Safe. |
No output schema declared.
No examples provided.
list_sub_account_proposals ~88
List the OPEN spend / withdraw / membership / threshold requests on a joint account that needs multiple approvals (M-of-N). Returns each request's type, status, amount, how many approvals it has out of the threshold, and who proposed it. Read-only: voting and executing need the user's passkey on their device.
| Name | Type | Req | Description |
|---|---|---|---|
| subAccountId | string | yes | Joint sub-account UUID |
No output schema declared.
No examples provided.
list_sub_accounts ~78
List the user's sub-accounts (vaults / nested Safes). Excludes CLOSED vaults by default; pass includeClosed: true to see archived ones too. Returns id, name, status, type, and the on-chain child Safe address.
| Name | Type | Req | Description |
|---|---|---|---|
| includeClosed | boolean | – | Include CLOSED (archived) vaults in the result. |
No output schema declared.
No examples provided.
list_subscription_charges ~151
List the user's subscription charge history (SUBSCRIPTION_CHARGE rows from the keeper cron), newest first. Cursor-paginated — pass `nextCursor` from the previous page back as `cursor` to advance. Each row carries the plan tier, billing period (MONTHLY/ANNUAL), amount (lower-units string), currency, status, on-chain transaction hash, billing period start/end, and the invoice number (null until the user generates the invoice). Use get_subscription_invoice to generate the PDF for a charge.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from a previous response's `nextCursor`. |
| limit | integer | – | Page size (default 25, max 100). |
No output schema declared.
No examples provided.
list_supported_destinations ~150
List the country, currency, and rail combinations Moneda can pay out to. Each entry includes the required fields you'll need to collect from the user before calling add_bank, add_contact_external, or initiate_payment. The output is provider-agnostic — don't branch on which underlying processor handles each rail. Pass an optional `countrySymbol` to filter (e.g. 'BR' returns only Brazilian PIX). Empty result for a country means Moneda doesn't currently support it.
| Name | Type | Req | Description |
|---|---|---|---|
| countrySymbol | string | – | Optional ISO 3166-1 alpha-2 filter (e.g. 'US', 'BR', 'CO'). Use 'EU' for SEPA destinations. Omit to list everything. |
No output schema declared.
No examples provided.
mark_receipt_partial_payment ~124
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. Replaces the `amount_mismatch` review reason with `partial_payment` so the receipt stops warning; the flag survives a reparse. Does not change any amounts. Check with the user first; only use it when get_receipt shows an amount mismatch the user confirms is intentional.
| Name | Type | Req | Description |
|---|---|---|---|
| receiptId | string | yes | Receipt id to mark (from list_receipts output). |
No output schema declared.
No examples provided.
pay_x402 ~396
Pay for a resource using the x402 protocol (HTTP 402 Payment Required). When an API returns HTTP 402 with x402 paymentRequirements, use this tool to initiate the payment. The payment requires user approval in the Moneda app before it executes. Parameters map to x402 paymentRequirements fields: - payTo: the recipient wallet address from the 402 response - amount: the payment amount (e.g. "0.01") - currency: USD or EUR (maps to USDC or EURC on Base) - resource: the URL being paid for (shown to the user for context) - network: must match the Moneda deployment ("base" or "base-sepolia") After calling this tool, poll get_payment_status every 10-15 seconds until a terminal status (COMPLETED, FAILED, EXPIRED, REJECTED). On COMPLETED the funds settle on-chain to payTo. Note: Moneda does not yet emit the x402 X-PAYMENT proof header, so a bare retry only unlocks the resource if its facilitator accepts on-chain settlement as proof.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Payment amount in human-readable form (e.g. "0.01"). From paymentRequirements.maxAmountRequired or the exact price. |
| currency | string | yes | Payment currency. USD maps to USDC, EUR maps to EURC. |
| maxAmountRequired | string | – | Maximum amount from the 402 response, if different from amount. |
| network | string | yes | Blockchain network from paymentRequirements.network. Must be "base" or "base-sepolia". |
| payTo | string | yes | Recipient wallet address (0x-prefixed, 42 chars) from paymentRequirements.payTo. |
| reference | string | – | Optional payment memo/reference (max 140 chars). |
| resource | string | yes | The URL that returned HTTP 402. Stored for audit and shown to the user. |
No output schema declared.
No examples provided.
propose_scheduled_payment ~311
Propose a RECURRING payment (e.g. $50 monthly to a Moneda user or a contact's Base wallet). Creates a draft the user reviews, approves and signs with their passkey in the Moneda mobile app; nothing is sent until then and you never schedule or move funds yourself. Not for one-off payments: use initiate_payment. Look up the recipient first (search_users, get_contacts). The draft expires after 48 hours if the user does not approve it.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount per payment in user-facing units (e.g. '50.00') |
| contactAccountId | string | – | The contact wallet's account ID (from get_contacts), when the contact has several wallets |
| contactUsername | string | – | Contact username or display name for transfer_contact_wallet |
| currency | string | yes | – |
| endDate | string | – | Last possible payment date, YYYY-MM-DD. Omit for no end. |
| frequency | string | yes | – |
| paymentType | string | yes | transfer_moneda (to a Moneda user, pass recipientUsername) or transfer_contact_wallet (to a contact's wallet on Base, pass contactUsername or contactAccountId) |
| recipientUsername | string | – | Moneda username (without @) for transfer_moneda |
| reference | string | – | Optional memo attached to each payment |
| startDate | string | yes | First payment date, YYYY-MM-DD in the user's timezone. Today or later, within a year. |
No output schema declared.
No examples provided.
propose_sub_account_freeze ~77
Freeze a sub-account the user created, blocking its spending. Unfreezing can only be done in the app. Creates a request the user approves in the Moneda mobile app; nothing happens until then. After calling, poll get_payment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| subAccountId | string | yes | Sub-account UUID (from list_sub_accounts) |
No output schema declared.
No examples provided.
propose_sub_account_multisig_proposal ~245
Open a SPEND or WITHDRAW proposal on a joint account that needs more than one approval. This only creates the proposal; co-owners still approve and execute it in the Moneda app. For single-signature sub-accounts use propose_sub_account_withdraw or initiate_payment with source.kind=sub_account. Creates a request the user approves in the Moneda mobile app; nothing happens until then. After calling, poll get_payment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| accountId | string | – | SPEND only: one of the user's saved wallets |
| amount | string | yes | Amount in user-facing units, e.g. '25.00' |
| contactAccountId | string | – | SPEND only: contact wallet account ID |
| contactUsername | string | – | SPEND only: contact username |
| currency | string | yes | Currency |
| description | string | – | Note shown to co-owners |
| proposalType | string | yes | SPEND pays a recipient; WITHDRAW returns to main |
| recipientUsername | string | – | SPEND only: Moneda username (without @) |
| subAccountId | string | yes | Sub-account UUID (from list_sub_accounts) |
No output schema declared.
No examples provided.
propose_sub_account_swap ~198
Swap inside a sub-account between a currency (USD, EUR, CHF, CAD, MXN) and a crypto asset (e.g. cbBTC), or between two currencies. Funds stay in the sub-account. Not for the main account (use initiate_crypto_trade or initiate_currency_exchange). Creates a request the user approves in the Moneda mobile app; nothing happens until then. After calling, poll get_payment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount of fromAsset to sell, e.g. '100' |
| fromAsset | string | yes | What to sell: a currency code (USD) or asset symbol (cbBTC) |
| slippageBps | integer | – | Max slippage in basis points (default 50) |
| subAccountId | string | yes | Sub-account UUID (from list_sub_accounts) |
| toAsset | string | yes | What to buy: a currency code (EUR) or asset symbol (WETH) |
No output schema declared.
No examples provided.
propose_sub_account_top_up ~115
Move money from the user's main account INTO one of their sub-accounts. Not for paying someone (use initiate_payment) or converting currencies (use initiate_currency_exchange). Creates a request the user approves in the Moneda mobile app; nothing happens until then. After calling, poll get_payment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount in user-facing units, e.g. '25.00' |
| currency | string | yes | Currency |
| subAccountId | string | yes | Sub-account UUID (from list_sub_accounts) |
No output schema declared.
No examples provided.
propose_sub_account_withdraw ~136
Move money from a sub-account back to the user's own main account. Not for paying someone from a sub-account (use initiate_payment with source.kind=sub_account). Single-signature sub-accounts only; for a joint account use propose_sub_account_multisig_proposal. Creates a request the user approves in the Moneda mobile app; nothing happens until then. After calling, poll get_payment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | Amount in user-facing units, e.g. '25.00' |
| currency | string | yes | Currency |
| subAccountId | string | yes | Sub-account UUID (from list_sub_accounts) |
No output schema declared.
No examples provided.
purchase_usage_credits ~118
Redeem a CONFIRMED on-chain charge for prepaid AI usage credits. Provide the transactionHash of a completed transfer you (the user) sent to the Moneda treasury tagged as a usage-credit purchase. The amount is read from the verified on-chain charge — never from input — converted to USD budget with the standard markup, and granted exactly once (idempotent on the hash, so re-calling is safe).
| Name | Type | Req | Description |
|---|---|---|---|
| transactionHash | string | yes | Hash of the confirmed on-chain charge to the Moneda treasury (from get_transactions). |
No output schema declared.
No examples provided.
redeem_points ~186
Redeem the user's Moneda Points for prepaid AI usage credits. Spends points (a negative points transaction) and grants the matching AI budget atomically. Enforces the minimum, the sufficient-balance check, and the monthly cap (see get_points_redemption_config). Pass a stable requestId (uuid) held across retries when you can: retrying with the same value is a no-op (returns granted:false). Omitting it is safe. The server derives the key from (user, points, 30s window) rather than minting a random one, so a retry still dedupes.
| Name | Type | Req | Description |
|---|---|---|---|
| points | integer | yes | How many points to redeem for AI credits. |
| requestId | string | – | Optional idempotency key (uuid). Reuse the same value on a retry; if omitted the server derives one from (user, points, 30s window). |
No output schema declared.
No examples provided.
reject_receipt_suggestion ~67
Dismiss the matcher's suggested transaction for a receipt. The receipt stays an unattached orphan and stops being offered against that transaction. Use attach_receipt afterwards if you know the correct one.
| Name | Type | Req | Description |
|---|---|---|---|
| receiptId | string | yes | Receipt id carrying the suggestion (from get_receipt). |
No output schema declared.
No examples provided.
reparse_receipt ~86
Re-run the OCR / LLM extraction pipeline on an existing receipt and return the refreshed fields. Use this when the user reports incorrect extraction or after a model upgrade. Refuses DELETED rows and rows without a stored file. Synchronous — the response carries the post-extraction snapshot.
| Name | Type | Req | Description |
|---|---|---|---|
| receiptId | string | yes | Receipt id to reparse (from list_receipts output). |
No output schema declared.
No examples provided.
reply_to_moneda_message ~196
Send the user's reply to a message from Moneda that asks for one. The reply is delivered to the Moneda team, so only send text the user wrote or explicitly approved word for word, never text you composed on your own, and show it to the user before sending. One reply per message (max 600 characters); it cannot be edited afterwards, only undone within 10 seconds (undo_message_reply). When the message takes a document, first stage it with request_message_reply_upload and pass the `uploadKey` plus the file's display name.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Reply text, written or approved by the user. |
| fileName | string | – | Display name of the attached document, e.g. 'payslip.pdf'. |
| notificationId | string | yes | Id of the MONEDA_MESSAGE notification. |
| uploadKey | string | – | From request_message_reply_upload, after the curl PUT succeeded. |
No output schema declared.
No examples provided.
request_message_reply_upload ~191
Step 1 of 2 for attaching a document to a reply to a message from Moneda (only when get_moneda_message shows `reply.attachment` optional or required). Returns a presigned S3 PUT URL (`uploadUrl`), a signed `uploadKey` and a literal `curlCommand` to run in your code sandbox; the file bytes go straight to S3 and never enter the conversation. After the PUT succeeds, pass `uploadKey` to reply_to_moneda_message. PDF, JPEG or PNG, max 5 MB; the slot expires in 15 minutes. Only upload a file the user chose for this reply.
| Name | Type | Req | Description |
|---|---|---|---|
| fileSizeBytes | integer | yes | Exact file size in bytes (e.g. `wc -c <file>`). Signed into the URL: the PUT fails if the body differs. |
| mimeType | string | yes | MIME type of the file. |
No output schema declared.
No examples provided.
request_receipt_upload ~220
Step 1 of 2 for uploading a local receipt file. Returns a presigned S3 PUT URL (`uploadUrl`), a signed `uploadKey`, and a literal `curlCommand` to execute in your code sandbox to stage the file. The file bytes are sent directly to S3 — they never enter the conversation context. After the curl PUT succeeds, call `finalize_receipt_upload` with the returned `uploadKey` to run OCR + matching. Use this for any local file (PDF, JPEG, or PNG, max ~5 MB).
| Name | Type | Req | Description |
|---|---|---|---|
| fileName | string | yes | Original file name (used for the audit trail). E.g. 'rent-may.pdf'. |
| fileSizeBytes | integer | yes | Size of the file in bytes (use `wc -c <file>` or your stdlib's stat). Signed into the URL — the S3 PUT will fail if the actual body doesn't match. |
| mimeType | string | yes | MIME type. Only PDF, JPEG, and PNG are accepted by the pipeline. |
No output schema declared.
No examples provided.
revoke_agent_session ~96
Revoke an agent session. This immediately halts all further execution on the backend (the execute path only runs ACTIVE sessions). The on-chain session remains installed until the user completes the uninstall in the Moneda app, but no payments can be made through it in the meantime. Use this when the agent is done with the mandate or the user asks to stop it.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | The agent session id to revoke. |
No output schema declared.
No examples provided.
revoke_api_key ~61
Revoke an API key by its id (from list_api_keys). The key stops working on its very next request. Irreversible — a new key must be created to restore access.
| Name | Type | Req | Description |
|---|---|---|---|
| keyId | string | yes | Key id from list_api_keys |
No output schema declared.
No examples provided.
search_knowledge ~155
Search the Moneda knowledge base (FAQ) for answers to questions about Moneda's features, fees, security, accounts, earnings, deposits, withdrawals, legal info, and more. Use this whenever a user asks about how Moneda works.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Optional category slug to narrow results (e.g. 'fees', 'security-and-privacy', 'earnings-account'). Use the moneda://knowledge resource to see available slugs. |
| limit | number | – | Maximum number of results to return (default: 5, max: 20) |
| query | string | yes | Search term or question to look up in the knowledge base (e.g. 'fees', 'security', 'how to deposit') |
No output schema declared.
No examples provided.
search_receipt_line_items ~198
Search across every parsed line item the user has uploaded (case-insensitive substring on description + normalized description). Returns matching items, total count, and aggregate spend grouped by currency. Optional `category`, `startDate`, and `endDate` further narrow the window. Use this for questions like 'how much did I spend on cappuccinos this year?'.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Restrict to a line-item category id (e.g. 'food_dairy'). |
| endDate | string | – | ISO date — items from receipts dated on/before. |
| limit | integer | – | Page size for the items array (default 50, max 200). |
| offset | integer | – | Number of items to skip for pagination. |
| query | string | yes | Free-text query (>= 2 chars). Matched against item description. |
| startDate | string | – | ISO date — items from receipts dated on/after. |
No output schema declared.
No examples provided.
search_users ~102
Search for Moneda users by username, display name, full email, or phone number. Respects user privacy settings — users who have disabled search visibility for specific fields will not appear in results matching those fields. Returns username and display name for matching users.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum results to return (default: 10, max: 20) |
| query | string | yes | Search term: username, display name, full email address, or phone number |
No output schema declared.
No examples provided.
set_ai_usage_limit ~106
Set (or clear) the monthly spend limit on AI usage credits — the ceiling on how much of the prepaid balance may be consumed per calendar month (resets the 1st, UTC). Pass a USD amount to cap spending, or null to remove the cap (unlimited). Idempotent: setting the same value twice is a no-op.
| Name | Type | Req | Description |
|---|---|---|---|
| monthlyLimitUsd | – | yes | Monthly USD cap on prepaid-balance draw-down, or null for no limit (unlimited). |
No output schema declared.
No examples provided.
set_help_improve_moneda ~162
Set whether the user's conversations with Moneda AI may be used to train Moneda's own models (the Settings > Privacy toggle). enabled=false turns it off; enabled=true turns it back on. The choice applies to what the user sends from then on: messages sent while objected stay excluded even if it is turned back on. It does not change how Moneda answers the user, security logging, or quality measurement. Always on for the free Standard plan: turning it off needs a paid plan and is refused otherwise. Only call this when the user explicitly asks. Read the current value with get_settings (helpImproveMoneda).
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | false = object to AI training on my conversations; true = allow it (the default) |
No output schema declared.
No examples provided.
set_passkey_label ~137
Rename a passkey so it is recognisable in the security screen (e.g. 'Work laptop'). Pass the passkey id from get_passkeys. Cosmetic only — it cannot add, remove, or weaken a credential. Send an empty label to clear it back to the provider name.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The passkey id, as returned by get_passkeys (`id` field) |
| label | – | yes | New nickname, max 40 characters. Empty or null clears it. |
| target | string | – | WALLET for a smart-account passkey (what get_passkeys lists), LOGIN for an email login passkey |
No output schema declared.
No examples provided.
terminate_all_other_sessions ~55
Terminate all of the user's login sessions on other devices (every signed-in app/web/CLI/API session). Does NOT disconnect agent connections — use disconnect_connected_service for those. Returns { revoked } = how many were terminated.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
terminate_session ~64
Terminate one login session by id (from list_active_sessions). The device is signed out immediately and cannot renew. Returns { success } — false means the session was already gone or isn't the user's.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | The login session id from list_active_sessions. |
No output schema declared.
No examples provided.
undo_message_reply ~95
Undo a reply the user just sent to a message from Moneda. Only call this when the user asks to undo, and only within 10 seconds of sending (until the reply's `undoableUntil`); afterwards it fails with "too late". The reply and its document are deleted and the message asks for a reply again.
| Name | Type | Req | Description |
|---|---|---|---|
| replyId | string | yes | Id of the reply, from reply_to_moneda_message. |
No output schema declared.
No examples provided.
update_display_name ~28
Update the authenticated user's display name
| Name | Type | Req | Description |
|---|---|---|---|
| displayName | string | yes | The new display name |
No output schema declared.
No examples provided.
update_receipt_amounts ~247
Correct a receipt's top-line amounts when the scan read them wrong: total, subtotal, tax amount, tax rate and tip. Each field is optional: omit it to leave it unchanged, pass null to clear it. At least one field is required. taxRateValue is a percentage (19 for 19%, not 0.19). Only the stored amounts change; a later reparse_receipt re-extracts and overwrites them. Use values the user gave or confirmed. Returns the receipt's amounts after the update.
| Name | Type | Req | Description |
|---|---|---|---|
| receiptId | string | yes | Receipt id to update (from list_receipts output). |
| subtotalValue | – | – | Subtotal before tax and tip. Omit to leave unchanged; null clears it. |
| taxAmountValue | – | – | Tax amount. Omit to leave unchanged; null clears it. |
| taxRateValue | – | – | Tax rate as a percentage, 0-100 (19 for 19%). Omit to leave unchanged; null clears it. |
| tipAmountValue | – | – | Tip amount. Omit to leave unchanged; null clears it. |
| totalAmountValue | – | – | Receipt total. Omit to leave unchanged; null clears it. |
No output schema declared.
No examples provided.
update_settings ~167
Change the user's decimal separator (DOT = 1,234.56, COMMA = 1.234,56), or opt in or out of marketing and product-update emails and push notifications. Pass only what the user asked to change; at least one field. Security and transactional messages always send and cannot be turned off. Only call this when the user explicitly asks. Returns the settings after the change. Language and theme are app-only.
| Name | Type | Req | Description |
|---|---|---|---|
| decimalSeparator | string | – | DOT for 1,234.56, COMMA for 1.234,56 |
| marketingEmails | boolean | – | Marketing emails |
| marketingPush | boolean | – | Marketing push |
| productUpdatesEmails | boolean | – | Product-update emails |
| productUpdatesPush | boolean | – | Product-update push |
No output schema declared.
No examples provided.
update_transaction_category ~55
Assign a spending category to a transaction. Identify the transaction by its transactionHash from get_transactions.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | The category to assign |
| transactionHash | string | yes | The transaction hash (from get_transactions output) |
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.