Read-only XRPL and Solana data for agents: fees, slippage, readiness. Free /mcp; x402 /mcp/pro.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Latest finalized Solana slot and its block time. When to use: To check how fresh the finalized view of Solana is, or to anchor a read to a slot. Prefer another tool: Not a tip-of-chain feed: it is finalized, not processed or confirmed, and it is cached for 2 seconds. Example: solana_latest_slot {}
This tool takes no arguments.
Latest finalized Solana slot and its block time. When to use: To check how fresh the finalized view of Solana is, or to anchor a read to a slot. Prefer another tool: Not a tip-of-chain feed: it is finalized, not processed or confirmed, and it is cached for 2 seconds. Example: solana_latest_slot {}
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Whether Solana data is currently being served: latest probe status and finalized slot. When to use: Before relying on the Solana verdict endpoints, or to explain a 503 from them. Prefer another tool: Not a measure of the Solana network itself, only of this service's access to it; use the latest-slot endpoint to see chain progress. Example: solana_network_health {}
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Is this Solana token safe to hold or receive? A SAFE, WARN or DANGER verdict. When to use: Before accepting or swapping into an unfamiliar token, to see whether its mint can freeze, mint more, move or tax balances. Prefer another tool: Not a price, liquidity or holder lookup and not an audit of the token's project; it reads only the mint account. Example: solana_token {"mint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"}
| Argument | Type | Description |
|---|---|---|
| mint* | string | Mint address of an SPL Token or Token-2022 token (base58, 32 bytes) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mint"
],
"properties": {
"mint": {
"type": "string",
"description": "Mint address of an SPL Token or Token-2022 token (base58, 32 bytes)"
}
}
}Will this Solana transfer succeed? A verdict for SOL or an SPL or Token-2022 token. When to use: Before building or signing a Solana transfer, to learn whether it will fail and what it will cost in rent and fees. Prefer another tool: Not a simulation of the exact transaction (no priority fee, no program logic), not a token price or holder lookup, and not a way to read raw accounts. Example: solana_transfer_readiness {"source":"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri","destination":"A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd","mint":"SOL","amount":"0.5"}
| Argument | Type | Description |
|---|---|---|
| mint* | string | `SOL` for native SOL, or the mint address of an SPL Token or Token-2022 token |
| amount* | string | Positive decimal amount in UI units (SOL or tokens, not lamports or raw units) |
| source* | string | Sending wallet: Solana wallet address: a base58 string that decodes to exactly 32 bytes |
| destination* | string | Receiving wallet (not its token account): Solana wallet address: a base58 string that decodes to exactly 32 bytes |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"source",
"destination",
"mint",
"amount"
],
"properties": {
"mint": {
"type": "string",
"description": "`SOL` for native SOL, or the mint address of an SPL Token or Token-2022 token"
},
"amount": {
"type": "string",
"description": "Positive decimal amount in UI units (SOL or tokens, not lamports or raw units)"
},
"source": {
"type": "string",
"description": "Sending wallet: Solana wallet address: a base58 string that decodes to exactly 32 bytes"
},
"destination": {
"type": "string",
"description": "Receiving wallet (not its token account): Solana wallet address: a base58 string that decodes to exactly 32 bytes"
}
}
}One page of an account's trust lines, with an opaque cursor for the next page. When to use: To list every trust line of an account (balances, limits, freeze and authorization flags), page by page. Prefer another tool: For a quick capped overview with the XRP balance, use `/v1/xrpl/account/{address}/summary`; for issued totals of a token, use the token endpoint. Example: xrpl_account_lines {"address":"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"}
| Argument | Type | Description |
|---|---|---|
| peer | string | Only lines with this counterparty (classic address) |
| limit | string | Lines per page: an integer from 10 to 400 (default 100) |
| marker | string | Opaque cursor from the previous page's `marker`, for the same address |
| address* | string | Valid classic XRPL account address (r..., checksum verified) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address"
],
"properties": {
"peer": {
"type": "string",
"description": "Only lines with this counterparty (classic address)"
},
"limit": {
"type": "string",
"description": "Lines per page: an integer from 10 to 400 (default 100)"
},
"marker": {
"type": "string",
"description": "Opaque cursor from the previous page's `marker`, for the same address"
},
"address": {
"type": "string",
"description": "Valid classic XRPL account address (r..., checksum verified)"
}
}
}XRP balance, sequence, owner count, transfer rate and trust lines (capped) for an account. When to use: To inspect an account before building a transaction for it. Prefer another tool: Not for transaction history, reserves or account flags; it is a summary, not a full account dump. Example: xrpl_account_summary {"address":"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"}
| Argument | Type | Description |
|---|---|---|
| address* | string | Valid classic XRPL account address (r..., checksum verified) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "Valid classic XRPL account address (r..., checksum verified)"
}
}
}One page of an account's most recent validated transactions, newest first. When to use: To check what an account did recently (payments sent or received, offers, trust line changes) and whether each transaction succeeded. Prefer another tool: For balances and trust lines, use `/v1/xrpl/account/{address}/summary` or `/v1/xrpl/account/{address}/lines`; for full archival history, use a full-history node or indexer: history depth depends on the serving node and older pages may be slower. Example: xrpl_account_transactions {"address":"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"}
| Argument | Type | Description |
|---|---|---|
| limit | string | Transactions per page: an integer from 1 to 50 (default 20) |
| marker | string | Opaque cursor from the previous page's `marker`, for the same address |
| address* | string | Valid classic XRPL account address (r..., checksum verified) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address"
],
"properties": {
"limit": {
"type": "string",
"description": "Transactions per page: an integer from 1 to 50 (default 20)"
},
"marker": {
"type": "string",
"description": "Opaque cursor from the previous page's `marker`, for the same address"
},
"address": {
"type": "string",
"description": "Valid classic XRPL account address (r..., checksum verified)"
}
}
}AMM pool reserves and trading fee for an asset pair. When to use: To read AMM pool depth and fee for a pair. Prefer another tool: It does not estimate slippage or compare venues (use the slippage page for the CLOB vs AMM comparison); a pair without a pool returns 404. Example: xrpl_amm {"a":"XRP","b":"USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"}
| Argument | Type | Description |
|---|---|---|
| a* | string | First asset: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`) |
| b* | string | Second asset: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"a",
"b"
],
"properties": {
"a": {
"type": "string",
"description": "First asset: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`)"
},
"b": {
"type": "string",
"description": "Second asset: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`)"
}
}
}Current XRPL fee tiers in drops with a congestion score. When to use: Before submitting a transaction, to choose a `Fee` and to decide whether the network is congested. Prefer another tool: Not a price feed and not a historical series; it describes the latest validated ledger only. Example: xrpl_fee {}
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Latest validated ledger index, hash and close time. When to use: To anchor other readings to a ledger or to check how current the network view is. Prefer another tool: Not for transaction data or account state; use the account endpoint for those. Example: xrpl_latest_ledger {}
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Overall and per-node health of the upstream XRPL nodes. When to use: To decide whether to trust or retry data, or to explain a 503 from another endpoint. Prefer another tool: Not a probe of your own connectivity; it reports the service's upstream nodes. Example: xrpl_network_health {}
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}CLOB order book for a currency pair with unfunded offers removed. When to use: To read executable liquidity for a pair on the XRPL central limit order book (CLOB). Prefer another tool: Not for AMM liquidity (use the amm page) and not for a cost estimate (use the slippage page). Example: xrpl_orderbook {"base":"XRP","quote":"USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"}
| Argument | Type | Description |
|---|---|---|
| base* | string | Base currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`) |
| depth | string | Levels per side: a positive integer, rounded up to 10, 50, 100 or 200 (max 200) |
| quote* | string | Quote currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"base",
"quote"
],
"properties": {
"base": {
"type": "string",
"description": "Base currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`)"
},
"depth": {
"type": "string",
"description": "Levels per side: a positive integer, rounded up to 10, 50, 100 or 200 (max 200)"
},
"quote": {
"type": "string",
"description": "Quote currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`)"
}
}
}Multi-hop payment paths and their source cost. When to use: Before a cross-currency or multi-hop payment: to see whether a route exists and how much the source would spend to deliver the amount. A call can take up to about 20 seconds and paths may be non-optimal. Prefer another tool: To check whether a direct payment can succeed (use `/v1/xrpl/payment-readiness`), or for the single-hop cost of a trade on one pair (use `/v1/xrpl/slippage`, which compares the order book and the AMM). Example: xrpl_paths {"source":"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh","destination":"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B","asset":"XRP","amount":"1"}
| Argument | Type | Description |
|---|---|---|
| asset* | string | Asset delivered: XRP or CODE.issuer (3-character or 40-hex code, classic issuer) |
| amount* | string | Positive decimal amount of asset the destination receives |
| source* | string | Sending account: valid classic XRPL address (r..., checksum verified) |
| send_max | string | Most the source may spend, in send_max_asset; not with source_assets |
| destination* | string | Receiving account: valid classic XRPL address |
| source_assets | string | Comma-separated assets the source may spend (1 to 4); not with send_max |
Pre-payment check: can this payment from source to destination succeed now? When to use: Right before sending a payment: to catch a missing or unfunded destination, a required destination tag, deposit authorization, missing or frozen trust lines, insufficient balance and issuer freezes, in one call. Prefer another tool: To find a multi-hop route or the source amount needed for a cross-currency payment (use the paths endpoint), or to list balances (use `/v1/xrpl/account/{address}/summary`). Example: xrpl_payment_readiness {"source":"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh","destination":"rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B"}
| Argument | Type | Description |
|---|---|---|
| asset | string | XRP (default) or CODE.issuer (3-character or 40-hex code, classic issuer) |
| amount | string | Positive decimal amount of asset; omit to skip amount-dependent checks |
| source* | string | Sending account: valid classic XRPL address (r..., checksum verified) |
| destination* | string | Receiving account: valid classic XRPL address, different from source |
| destination_tag | string | Destination tag you will send: an integer from 0 to 4294967295 |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"source",
"destination"
],
"properties": {
"asset": {
"type": "string",
"description": "XRP (default) or CODE.issuer (3-character or 40-hex code, classic issuer)"
},
"amount": {
"type": "string",
"description": "Positive decimal amount of asset; omit to skip amount-dependent checks"
},
"source": {
"type": "string",
"description": "Sending account: valid classic XRPL address (r..., checksum verified)"
},
"destination": {
"type": "string",
"description": "Receiving account: valid classic XRPL address, different from source"
},
"destination_tag": {
"type": "string",
"description": "Destination tag you will send: an integer from 0 to 4294967295"
}
}
}Slippage and average price for buying an amount of base currency. When to use: Before placing a market-style trade, to size it against available depth and to see whether the CLOB or the AMM pool is the cheaper venue. Prefer another tool: It is an estimate, not a quote, and it does not split an amount across venues or route through other pairs. To read pool reserves, use the amm page. Example: xrpl_slippage {"base":"XRP","quote":"USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh","amount":"1000"}
| Argument | Type | Description |
|---|---|---|
| base* | string | Base currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`) |
| depth | string | Levels per side: a positive integer, rounded up to 10, 50, 100 or 200 (max 200) |
| quote* | string | Quote currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`) |
| amount* | string | Positive decimal amount of base to buy |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"base",
"quote",
"amount"
],
"properties": {
"base": {
"type": "string",
"description": "Base currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`)"
},
"depth": {
"type": "string",
"description": "Levels per side: a positive integer, rounded up to 10, 50, 100 or 200 (max 200)"
},
"quote": {
"type": "string",
"description": "Quote currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`)"
},
"amount": {
"type": "string",
"description": "Positive decimal amount of base to buy"
}
}
}Issuer data for an issued asset: flags, domain, transfer fee and total issued. When to use: Before accepting or sending an issued token: check that the issuer exists, is not frozen, whether holders need authorization, and the transfer fee charged on every transfer between non-issuer accounts. Prefer another tool: For XRP (not an issued asset; 400), for one account's own balances use `/v1/xrpl/account/{address}/lines`, and for prices use `/v1/xrpl/orderbook` or `/v1/xrpl/amm/{a}/{b}`. Example: xrpl_token {"asset":"USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"}
| Argument | Type | Description |
|---|---|---|
| asset* | string | Issued asset as CODE.issuer (3-character or 40-hex code, classic issuer address); not XRP |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"asset"
],
"properties": {
"asset": {
"type": "string",
"description": "Issued asset as CODE.issuer (3-character or 40-hex code, classic issuer address); not XRP"
}
}
}| send_max_asset | string | Asset of send_max: XRP or CODE.issuer; give it with send_max |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"source",
"destination",
"asset",
"amount"
],
"properties": {
"asset": {
"type": "string",
"description": "Asset delivered: XRP or CODE.issuer (3-character or 40-hex code, classic issuer)"
},
"amount": {
"type": "string",
"description": "Positive decimal amount of asset the destination receives"
},
"source": {
"type": "string",
"description": "Sending account: valid classic XRPL address (r..., checksum verified)"
},
"send_max": {
"type": "string",
"description": "Most the source may spend, in send_max_asset; not with source_assets"
},
"destination": {
"type": "string",
"description": "Receiving account: valid classic XRPL address"
},
"source_assets": {
"type": "string",
"description": "Comma-separated assets the source may spend (1 to 4); not with send_max"
},
"send_max_asset": {
"type": "string",
"description": "Asset of send_max: XRP or CODE.issuer; give it with send_max"
}
}
}