ripio-community-mcp
This server is a read-only MCP bridge that lets AI assistants query your Ripio account (Wallet and Trade) using your own API key, covering balances, activity, prices, limits, orders, and deposit details.
Portfolio overview: Get all Wallet (fiat, crypto, memecoins) and Ripio Trade balances with available/locked amounts and estimated ARS/USD value.
Activity history: List deposits, withdrawals, swaps (Wallet) and Trade statement entries with filters (date range, currency, rail, type, pagination via cursor).
Transaction details: Fetch full details of a specific Wallet transaction by ID, including fee, rail, counterparty, status, and on-chain hash.
Current prices: Compare Ripio app buy/sell rates with Ripio Trade order book (bid/ask/last, 24h change/volume) for multiple assets.
Trade estimates: Simulate a market order on Ripio Trade to see estimated unit price, gross value, taker fee, and total without executing anything.
Limits and rails: Check remaining deposit/withdrawal/swap limits per rail (bank, pix, crypto, ripio) with daily/monthly/annual caps, and rail operations/fees.
Open orders: List active Ripio Trade orders, optionally filtered by pair or side, showing price, requested/executed/remaining amounts.
Deposit addresses: Get exact deposit addresses and memos for Wallet assets, verify an address character-by-character to avoid mistakes, and retrieve CVU/alias for peso deposits.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ripio-community-mcpHow much do I have on Ripio and in what?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ripio-community-mcp
Unofficial, community-built, not affiliated with Ripio. Read-only. Use at your own risk.
A local MCP server that lets AI assistants read your Ripio account (balances, activity, prices, limits, open orders and deposit addresses) using your own API key. It runs on your computer and only talks to api.ripio.com.
🇦🇷 Instrucciones en español: README.es.md
Why use this instead of Ripio's official MCP?
Ripio has an official remote MCP server. If it works for you, use it. This project exists for the cases it doesn't cover:
Official ( | ripio-community-mcp | |
Clients | Only Ripio-approved OAuth clients (Claude, ChatGPT, VS Code) | Any MCP client that runs local (stdio) servers: Claude Desktop/Code, Cursor, VS Code, Zed, Cline… |
Auth | OAuth in the browser | Your Ripio API key, stored locally |
Tools | ~70 endpoint mirrors | 10 tools that answer whole questions |
Read-only | Depends on the permission preset you pick | Built in: the server can only send GET requests |
Tool metadata | No read-only/destructive annotations | Every tool is annotated read-only, with typed output |
Can move funds | Yes, with the Full preset | No |
Neither can show card transactions, in-app buys/sells or bill payments: Ripio's public API doesn't expose them.
Related MCP server: milele-prime-mcp
Tools
Tool | Ask things like |
| "How much do I have on Ripio and in what?" |
| "What were my last withdrawals?" · "Show my Ripio Trade statement for September" |
| "Give me the details of transaction 1234" |
| "What's USDT at right now, in the app and on Ripio Trade?" |
| "How much would 100 USDT cost on Ripio Trade?" |
| "How much can I still withdraw today?" |
| "Do I have open orders?" |
| "What address do I send USDT to over Tron?" |
| "Is this address really mine? I'm about to send USDT over Polygon" |
| "What's my CVU and alias?" |
Deposit safety
A wrong network, a missing memo or one mistyped character can lose the funds, so deposits get extra layers:
Exact output. Addresses and memos come back exactly as Ripio sends them. The server never creates an address: if Ripio hasn't assigned one for a network yet, it tells you to start that deposit in the Ripio app.
Network rules.
ripio_get_deposit_addressreturns no address until the network is clear. Along with the address, it names the networks where that same address credits the asset, and the ones that need a different address. Your EVM address is the same on every EVM network, but Ripio only credits each asset on some of them.Verification by code. The assistant retypes what it reads, and a language model can, rarely, change a character. Before sending, paste the address you will actually use and ask to verify it:
ripio_verify_deposit_addresscompares it character by character with your real addresses and flags near misses.Network checksums. Most networks (EVM with mixed-case addresses, Tron, Bitcoin, XRP, Stellar…) have a checksum, so the sending wallet usually rejects a mistyped address. Solana addresses have none.
For large amounts, send a small test deposit first. These are Ripio app (Wallet) addresses; Ripio Trade uses different ones.
Pesos sent to your CVU are credited in the deposit currency set in your Ripio app profile: if that is a crypto, they are converted automatically. ripio_get_deposit_accounts reminds you of this.
Setup
1. Create a read-only API key in Ripio
The steps use the labels of Ripio's English interface. If yours is in Spanish, switch it in Profile → Preferences → Language, or follow README.es.md.
Open app.ripio.com, click your avatar (top right) → Profile → API tab → New key.
IP restriction: choose Specific IPs and add your public IP (recommended), or No restriction. Home connections often get a new public IP now and then; when that happens the server reports a 403 until you add the new IP to the key.
Name the key and keep the Read-only preset (Consult 9/9, Operate within Ripio 0/3, Withdrawals and addresses 0/2).
Confirm with your 2FA method and copy the API Key and Secret Key. The secret is shown only once.
Ripio's "Read-only" preset still lets an API key register bank accounts in your own name. This server never calls that endpoint.
2. Add it to your client
Claude Desktop (easiest). Download ripio-community-mcp.mcpb from the latest release. In Claude Desktop, go to Settings → Extensions → Advanced settings → Install Extension…, pick the file, and paste your API key and secret when asked. Claude Desktop keeps them in your system keychain. Then ask in a regular chat, for example "How much do I have on Ripio and in what?"
Claude Code
claude mcp add --env RIPIO_API_KEY=your-key --env RIPIO_API_SECRET=your-secret --transport stdio ripio -- npx -y ripio-community-mcpCursor (~/.cursor/mcp.json)
{
"mcpServers": {
"ripio": {
"command": "npx",
"args": ["-y", "ripio-community-mcp"],
"env": { "RIPIO_API_KEY": "your-key", "RIPIO_API_SECRET": "your-secret" }
}
}
}VS Code (.vscode/mcp.json, or MCP: Open User Configuration for all workspaces). VS Code asks for the key and secret once and stores them securely:
{
"inputs": [
{ "type": "promptString", "id": "ripio-key", "description": "Ripio API key", "password": true },
{ "type": "promptString", "id": "ripio-secret", "description": "Ripio secret key", "password": true }
],
"servers": {
"ripio": {
"type": "stdio",
"command": "npx",
"args": ["-y", "ripio-community-mcp"],
"env": { "RIPIO_API_KEY": "${input:ripio-key}", "RIPIO_API_SECRET": "${input:ripio-secret}" }
}
}
}Zed (settings.json)
{
"context_servers": {
"ripio": {
"command": "npx",
"args": ["-y", "ripio-community-mcp"],
"env": { "RIPIO_API_KEY": "your-key", "RIPIO_API_SECRET": "your-secret" }
}
}
}Any other MCP client (Cline, Continue…): add a stdio server with command npx, arguments -y ripio-community-mcp, and the environment variables below. See your client's MCP documentation for where that goes. It is also listed in the official MCP Registry as io.github.ruizemanuel/ripio-community-mcp, so clients that install from the registry can find it there.
Windows: if the server doesn't start (for example, "Connection closed"), launch
npxthroughcmd. In Claude Code, end the command with-- cmd /c npx -y ripio-community-mcp; in JSON configs, use"command": "cmd"and"args": ["/c", "npx", "-y", "ripio-community-mcp"].
Configuration
Variable | Required | Description |
| yes | Your Ripio API key |
| yes | Your Ripio secret key |
| no | Ripio Trade requests per second. Default |
Security model
Read-only by construction. The HTTP client can only send GET requests, and a test fails the build if anything else appears in the code. Even a key with write permissions can't be used to move funds through this server.
One host. It only talks to
https://api.ripio.comand never follows redirects, so a signed request can't end up anywhere else. No telemetry.Your keys stay yours. They are read from environment variables (or your keychain, in Claude Desktop) and never logged or sent to the model.
Least privilege. Use a "Read-only" key with an IP allowlist. Revoke it any time in Ripio → Profile → API.
Verifiable builds. npm releases are published from GitHub Actions with provenance.
Found a vulnerability? See SECURITY.md.
Limitations
Ripio's API doesn't expose card transactions, in-app buys/sells or bill payments. Since 2026-07-21 they are not in the activity feed.
On Wallet activity,
from/tofilter the page Ripio returns; follownext_cursorfor older items. Once a page reaches back pastfrom, nonext_cursoris offered.Values are estimates at Ripio app sell rates, not firm quotes.
Tested with Argentinian accounts. Other countries may work for reading, but haven't been tested.
Ripio Trade allows 1 request per second without verified documents; the server paces requests for you.
Ripio Trade statements can be read up to 182 days at a time; ask for older periods in chunks of about 6 months.
Deposit addresses are Ripio app (Wallet) addresses. Ripio Trade deposit addresses aren't supported yet.
Development
npm ci
npm test
npm run buildTo run the live suite against your own account, create .env.live (git-ignored) with RIPIO_API_KEY and RIPIO_API_SECRET for a read-only key, then run npm run test:live.
Contributions are welcome. Keep the server read-only and add tests with every change.
Disclaimer
MIT licensed. This project is not affiliated with, endorsed by or supported by Ripio; trademarks belong to their owners. Everything it shows is informational and not financial advice. You are responsible for your API keys.
Available Tools
10 toolsripio_estimate_tradeEstimate a Ripio Trade orderARead-onlyIdempotent
Estimates what a market order on Ripio Trade would cost or return right now: unit price for that size, gross value, your taker fee and the total. Read-only: nothing is executed.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | Ripio Trade pair, e.g. USDT_ARS. | |
| side | Yes | ||
| amount | Yes | Amount in the base currency, e.g. "100" to buy 100 USDT on USDT_ARS. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| pair | Yes | |
| side | Yes | |
| amount | Yes | |
| warnings | Yes | |
| gross_value | Yes | |
| estimated_fee | No | |
| taker_fee_pct | No | |
| estimated_total | Yes | |
| estimated_unit_price | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly says 'Read-only: nothing is executed,' which reinforces the readOnlyHint=true and destructiveHint=false annotations. It also adds useful context beyond annotations by clarifying that this is a real-time estimate, not an execution, and by listing the returned components.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence followed by a clear read-only warning. It front-loads the core purpose and output details without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description provides the essential context: what is estimated, what the result contains, and that no order is executed. The three required parameters are sufficiently documented in the schema, so nothing critical is missing for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, with pair and amount already described in the schema. The description adds the market-order context and the notion of 'size,' but it does not meaningfully explain the side parameter beyond the schema's enum, and it adds little over the existing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Estimates'), a specific resource ('a market order on Ripio Trade'), and the key outputs ('unit price', 'gross value', 'taker fee', 'total'). This clearly distinguishes it from sibling tools like ripio_get_prices or ripio_list_open_orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it — when you need to know what a market order would cost or return before executing — but it does not explicitly state when to prefer it over alternatives like ripio_get_prices or ripio_get_limits. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ripio_get_deposit_accountsRipio deposit accounts (CVU)ARead-onlyIdempotent
The account's Ripio bank-deposit accounts for fiat: the CVU and alias in Argentina (PIX in Brazil), with the rules to relay before anyone transfers. Crypto deposits use ripio_get_deposit_address instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| accounts | Yes | |
| warnings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context by mentioning the rules to relay before transfers, but it does not detail what those rules are or what the returned structure contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no waste. It front-loads the primary purpose and then cleanly distinguishes the alternative tool for crypto deposits.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with an output schema and clear sibling differentiation, the description covers all essential context: what the tool returns, the relevant regions, the transfer-rule caveat, and the alternative for crypto deposits. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so the description has no parameter semantics to add. With 0 params, the baseline is 4, and the description correctly focuses on the tool's output rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: the tool returns the account's Ripio bank-deposit accounts for fiat, including CVU and alias in Argentina and PIX in Brazil. It also differentiates from the crypto deposit sibling by explicitly saying crypto deposits use ripio_get_deposit_address instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear guidance on when to use this tool: for fiat bank-deposit accounts, and explicitly routes crypto deposits to ripio_get_deposit_address. It also implies this should be used before transfers, since it includes the rules to relay.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ripio_get_deposit_addressRipio deposit addressARead-onlyIdempotent
The Ripio app (Wallet) crypto deposit address for an asset on one network, with its memo/tag when the network needs one and the warnings to relay before anyone sends funds. Without a network, or with an ambiguous one, it returns no address and lists the networks that receive the asset. It never creates an address. Ripio Trade uses different addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | Ripio ticker, e.g. USDT, BTC or AAPLx. | |
| network | No | The network as the sender names it: code, name or token standard, e.g. tron, "BNB Chain", TRC20, BEP-20. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | Yes | |
| status | Yes | |
| deposit | No | |
| networks | Yes | |
| warnings | Yes | |
| next_step | No | |
| asset_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds specific behavior: it returns no address and lists receiving networks when network is absent/ambiguous, and it never creates an address. It also mentions relaying warnings. This is valuable context beyond annotations, though it could elaborate on error handling for invalid assets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that packs all key points: purpose, memo/tag, warnings, network ambiguity behavior, and the Ripio Trade distinction. It is front-loaded with the primary purpose and efficient, though slightly long and could be split for readability. No redundant fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (present in context signals), so return values are covered there. The description covers the main behaviors: address retrieval, memo/tag when needed, warnings, network ambiguity resolution, and the distinction from Ripio Trade. It is complete for a tool with only two parameters and simple output, though error cases for invalid asset are not mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds nuance: asset is a ticker with examples (USDT, BTC, AAPLx) and network is flexible (code, name, token standard). It also clarifies that network is optional and the behavior when omitted, which is not fully explicit in the schema. This adds meaningful semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to fetch a crypto deposit address for an asset on a network, including memo/tag and warnings. It differentiates from Ripio Trade and notes it never creates an address, distinguishing it from potential write operations. The verb 'get' and resource 'deposit address' are explicit, and the behavior on missing/ambiguous network is specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that Ripio Trade uses different addresses, which implies this tool is for the Ripio app (Wallet) only. However, it does not explicitly compare with siblings like ripio_get_deposit_accounts or ripio_verify_deposit_address, nor does it state when to use this tool over alternatives. The behavior on missing network could hint at usage, but the guidance is not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ripio_get_limitsRipio limits and railsARead-onlyIdempotent
How much the account can still deposit, withdraw or swap: Ripio limits per rail (bank, pix, crypto, ripio and the account-wide limit) with daily, monthly and annual caps and what remains, plus the operations and fees of each rail.
| Name | Required | Description | Default |
|---|---|---|---|
| rail | No | ||
| type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| rails | Yes | |
| limits | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behaviorcel. The description adds useful behavioral context beyond annotations: remaining amounts, daily/monthly/annual caps, the account-wide limit, and operations/fees per rail. No contradiction with the annotations is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that leads with the core value and adds distinct details in sequence: rail types, account-wide limit, time periods, remaining amounts, and fees. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only limits lookup with an output schema and only two optional enum parameters, the description covers the essential domain concepts: rails, operation types, periods, remaining capacities, and fees. The main gap is the lack of explicit parameter filter semantics, but the structured schema already conveys optionality, and the output schema covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It does enumerate the rail and operation type values in prose, but it never explicitly explains that rail and type are optional filters or how the account-wide limit relates to the rail parameter. This is partial but incomplete compensation for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, outcome-focused statement: 'How much the account can still deposit, withdraw or swap', and then names the exact resource: Ripio limits per rail, including bank, pix, crypto, ripio, and the account-wide limit. This distinguishes it from sibling tools about portfolios, orders, activity, transactions, prices, and trade estimates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes the context for use: checking remaining limits, caps, and fees per rail. It does not explicitly name alternatives or exclusionary conditions, so it stops short of full when-to-use versus alternative guidance, though the sibling tools make the intended use fairly obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ripio_get_portfolioRipio portfolioARead-onlyIdempotent
What the user holds on Ripio right now: Wallet (fiat and crypto), memecoins and Ripio Trade balances in one list, with available and locked amounts and an estimated value in ARS and USD at Ripio app sell rates. Zero balances are hidden unless include_zero is true.
| Name | Required | Description | Default |
|---|---|---|---|
| include_zero | No | Include assets with a zero balance. Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | |
| totals | Yes | |
| holdings | Yes | |
| warnings | Yes | |
| valuation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent behavior, so the description adds valuable behavioral context beyond them: zero balances are hidden by default, the valuation uses Ripio app sell rates, and the result combines multiple balance categories into one list. No contradiction with annotations is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: the first sentence delivers the main purpose and scope, and the second sentence flags the one important conditional behavior. Every sentence adds necessary information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single optional parameter, the presence of an output schema, and comprehensive annotations, the description covers everything an agent needs to select and invoke this tool correctly: scope, included asset types, valuation basis, and zero-balance handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes include_zero with its default and meaning. The tool description echoes the zero-balance behavior ('Zero balances are hidden unless include_zero is true') but adds no new parameter semantics beyond what the schema provides, so the high-coverage baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb-resource framing: it explicitly states what the tool returns (the user's current holdings on Ripio) and enumerates the contents (Wallet fiat/crypto, memecoins, Ripio Trade balances, available/locked amounts, ARS/USD estimates). This makes it readily distinguishable from siblings like ripio_get_prices, list_activity, or get_limits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context about the data returned, which implies it should be used when an agent needs a consolidated current holdings snapshot. However, it does not explicitly state when to use this tool over alternatives or mention sibling tools, so the usage guidance remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ripio_get_pricesRipio pricesARead-onlyIdempotent
Current prices for one or more assets: the Ripio app buy/sell rates (with spread) and, when the pair exists, the Ripio Trade book (bid, ask, last, 24h change and volume), so app and exchange prices can be compared.
| Name | Required | Description | Default |
|---|---|---|---|
| quote | No | Default "ARS". | |
| assets | Yes | Tickers, e.g. ["USDT", "BTC"]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | |
| quote | Yes | |
| prices | Yes | |
| warnings | Yes | |
| not_found | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior, so the description need not repeat them. It adds useful conditional behavior ('when the pair exists') and specifies the exact price fields returned, going beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence packs in the resource, the two data domains, the spread, and the comparison purpose without redundancy. It is front-loaded with the core purpose and each clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully explains what data is returned and under what condition, and an output schema exists to cover return structure. Annotations handle safety and idempotence, so nothing critical is missing for a simple read-only price tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with assets and quote already fully documented. The description reinforces that assets are tickers and that availability depends on the pair, but does not add new parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair ('current prices') and enumerates exact data points (buy/sell rates, spread, trade book fields). It clearly distinguishes this from sibling tools like ripio_get_portfolio or ripio_list_open_orders by focusing solely on market pricing data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies it should be used when current prices are needed, and the phrase 'so app and exchange prices can be compared' describes intent but not explicit selection criteria. It does not name alternatives or state when not to use it, such as when estimating a trade versus checking live prices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ripio_get_transactionRipio Wallet transactionARead-onlyIdempotent
Full detail of one Wallet movement by its id (from ripio_list_activity with source "wallet"): amounts, fee, rail, counterparty, status and the on-chain hash when there is one.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Wallet transaction id, as a number or as the string ripio_list_activity returns. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| fee | No | |
| date | Yes | |
| rail | No | |
| type | Yes | |
| asset | Yes | |
| amount | Yes | |
| status | Yes | |
| direction | Yes | |
| fee_asset | No | |
| raw_status | Yes | |
| unreadable | No | |
| description | No | |
| counterparty | No | |
| transaction_hash | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds a useful conditional ('on-chain hash when there is one') and scopes the resource to wallet movements, but does not discuss not-found behavior or errors. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence, front-loaded with the core purpose and field list; no filler. The parenthetical source guidance is placed right after the id reference, keeping related information together.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single well-documented parameter, rich annotations, and an output schema present, the description covers what an agent needs to select and invoke the tool. The only omitted details (error behavior) are not necessary given the read-only, idempotent annotations and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes id as a number or the string ripio_list_activity returns. The description adds the extra constraint that the id must come from entries with source 'wallet', which is meaningful beyond the schema. Baseline 3 is therefore raised slightly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Full detail') and names the exact resource ('one Wallet movement') plus a concrete field list (amounts, fee, rail, counterparty, status, on-chain hash). It also anchors the id source to ripio_list_activity with source 'wallet', distinguishing it from other Ripio tools. This is unambiguous and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent where the id comes from ('from ripio_list_activity with source "wallet"'), which is the correct precursor call. It doesn't spell out when not to use it, but for a single-id fetch this is sufficient context. No misleading alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ripio_list_activityRipio activityARead-onlyIdempotent
Deposits, withdrawals and swaps (source "wallet", default) or Ripio Trade statement entries (source "trade"), newest first, in one normalized shape. Card transactions, in-app buys/sells and bill payments are not available from Ripio's API. Pass next_cursor back as cursor for older items. Dates are UTC; on Wallet, from/to filter the returned page only; on Ripio Trade a from/to range can span up to 182 days.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | UTC date (YYYY-MM-DD) or ISO 8601 date-time. | |
| from | No | UTC date (YYYY-MM-DD) or ISO 8601 date-time. | |
| rail | No | Wallet only. | |
| type | No | "trade" exists only in source "trade"; "swap" only in "wallet". | |
| cursor | No | next_cursor from a previous call. | |
| source | No | Default "wallet". | |
| currency | No | Only this asset, e.g. "USDT". |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| source | Yes | |
| next_cursor | No | |
| coverage_notes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior; the description adds meaningful operational detail: pagination mechanics, UTC date handling, source-specific from/to semantics, the 182-day trade range limit, ordering, and unsupported transaction types. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no filler. The first sentence conveys the core purpose and default, the second lists unavailable categories, and the third packs pagination and date semantics. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 optional parameters, two distinct sources, pagination, and source-specific filtering behavior, the description covers all key operational caveats. The output schema exists, so the description does not need to document return values, and no essential preconditions or limitations are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the default source, cursor reuse, source-specific from/to behavior, and type/source associations (trade only in trade, swap only in wallet). Rail and currency remain schema-only, but their descriptions are already clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific scope: deposits, withdrawals and swaps for the default wallet source, or Ripio Trade statement entries for the trade source, returned newest first in one normalized shape. This clearly distinguishes it from sibling tools like ripio_get_transaction, which retrieves a single transaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when to use this tool, including the default source, the alternate trade source, and pagination via next_cursor. It does not explicitly name alternative sibling tools for cases like retrieving a single transaction, so it stops short of a 5, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ripio_list_open_ordersRipio Trade open ordersARead-onlyIdempotent
Open orders on Ripio Trade, optionally for one pair or side, with price and requested, executed and remaining amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| pair | No | Ripio Trade pair, e.g. USDT_ARS. | |
| side | No | ||
| cursor | No | next_cursor from a previous call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| orders | Yes | |
| next_cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructiveness. The description adds useful behavioral context: optional filtering by pair/side and the amount fields present in the response. It does not contradict the annotations, and pagination is already hinted by the cursor parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the operation and includes only valuable details: resource, optional filters, and output fields. There is no filler or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, no-required-parameter list tool with an output schema and documented cursor, the description is nearly complete. The main gap is the lack of explicit guidance on when to choose this tool over siblings, but that is minor for correctly invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents pair and cursor, and the side enum is self-explanatory. The description adds that filtering by pair or side is optional, which is helpful, but 'one pair or side' is slightly imprecise about whether both filters can be combined. With 67% schema coverage, the description partially compensates but does not fully add meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Open orders on Ripio Trade') and names the optional filters (pair, side) as well as the returned amounts (price, requested, executed, remaining). This clearly distinguishes it from sibling tools like list_activity, get_prices, or get_transaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'optionally for one pair or side' gives some usage context and clarifies that filtering is not mandatory. However, the description does not explicitly say when to prefer this tool over sibling alternatives such as ripio_list_activity or ripio_get_portfolio; the usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ripio_verify_deposit_addressVerify a Ripio deposit addressARead-onlyIdempotent
Checks with code, character by character, that an address (and memo/tag) someone is about to send to is exactly one of the account's Ripio app (Wallet) deposit addresses, on a network that credits the asset, and flags mistyped copies. Pass the address as pasted from where it will actually be used, plus the asset and network the sender will use. Ripio Trade addresses are not checked.
| Name | Required | Description | Default |
|---|---|---|---|
| memo | No | Memo/tag as pasted, for networks that use one (XRP, Stellar, TON). | |
| asset | No | Ripio ticker, e.g. USDT, BTC or AAPLx. | |
| address | Yes | The address exactly as pasted. | |
| network | No | The network as the sender names it: code, name or token standard, e.g. tron, "BNB Chain", TRC20, BEP-20. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asset | No | |
| status | Yes | |
| verdict | Yes | |
| warnings | Yes | |
| near_miss | No | |
| credited_via | No | |
| expected_memo | No | |
| address_networks | Yes | |
| not_credited_via | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, idempotent, and non-destructive, and the description adds rich behavioral context beyond that: exact character-by-character matching, memo/tag handling, network/asset compatibility, and mistyped-copy flagging. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: core behavior, usage instruction, and negative scope. Every sentence earns its place, though 'with code' followed by 'character by character' is slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile and an output schema present, the description supplies everything needed to invoke correctly: exact-match behavior, memo handling, asset/network relevance, and the Ripio Trade exclusion. No critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds sender-perspective semantics beyond the schema fields: pass the address as pasted from where it will actually be used, and use the asset and network as the sender names them. This meaningfully sharpens how address, asset, and network should be supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verification action: it checks an address and optional memo/tag character-by-character against the account's Ripio Wallet deposit addresses and flags mistyped copies. It distinguishes this from sibling get/list tools and draws a clear scope boundary with 'Ripio Trade addresses are not checked.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly instructs when to use it: before someone sends to an address, passing the address exactly as pasted plus the asset and network the sender will use. It also gives an explicit when-not constraint for Ripio Trade addresses, though it does not name an alternative tool for that case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.2.3- Added
ripio_get_deposit_accounts - Added
ripio_get_deposit_address - Changed
ripio_get_transaction1 field changed- added
Output schema / properties / unreadableAdded value: +{ + "items": { + "enum": [ + "amount", + "asset" + ], + "type": "string" + }, + "type": "array" +}
- Changed
ripio_list_activity1 field changed- added
Output schema / properties / items / items / properties / unreadableAdded value: +{ + "items": { + "enum": [ + "amount", + "asset" + ], + "type": "string" + }, + "type": "array" +}
- Added
ripio_verify_deposit_address
7 tool updates
v0.1.1- First observed
ripio_estimate_trade - First observed
ripio_get_limits - First observed
ripio_get_portfolio - First observed
ripio_get_prices - First observed
ripio_get_transaction - First observed
ripio_list_activity - First observed
ripio_list_open_orders
TDQS
Scored across 10 tools
Each tool targets a distinct action or resource: activity listing, transaction detail, deposit addresses (crypto vs fiat), address verification, trade estimation, limits, portfolio, prices, and open orders. There is no overlap; even the two deposit-related tools are clearly separated by asset type. Agents should have no trouble selecting the correct tool for a given query.
All tool names follow a uniform `ripio_` prefix with a verb-noun structure (list_activity, get_transaction, get_deposit_address, verify_deposit_address, estimate_trade, list_open_orders). The pattern is consistent and predictable, using snake_case throughout. This makes the tool surface easy to navigate programmatically.
With 10 tools, the server is well-scoped for a community/account information and read-only trading context. Each tool addresses a specific need without redundancy, and the count is within the ideal range of 3–15. No tool feels unnecessary, and there is no indication of bloat or sparseness.
The tool surface covers the primary read-only operations: viewing activity, transaction details, deposit addresses, portfolio, prices, limits, and open orders. It lacks direct tools for executing trades or withdrawals, but the descriptions indicate the server is intentionally read-only (e.g., 'Read-only: nothing is executed', 'It never creates an address'). Minor gaps exist (e.g., no explicit tool for account or KYC info), but they are not critical for the stated purpose.
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents
Read-only MCP server: let AI agents read your ORANO saved-video library, tasks, and memory.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server for Hyperliquid that provides public market data (prices, order books, funding) and any wallet's positions, orders, and fills via MCP tools, without requiring a private key.MIT

milele-prime-mcpofficial
FlicenseNot gradedqualityCmaintenanceRead-only MCP server that lets a verified client connect their own AI to their trading account to read account data without order execution.-- AlicenseNot gradedqualityBmaintenanceA read-only MCP server that securely connects Swedish/Nordic bank accounts to AI assistants, keeping all financial data local and encrypted.19 npmMIT
- AlicenseNot gradedqualityAmaintenanceRead-only MCP server that connects LLMs to personal investment accounts (Toss Securities, KIS), market data, SEC filings, and Binance futures for context-aware investment responses.1MIT