Criptonlabs Agent APIs
Read-only XRPL and Solana data for agents: fees, slippage, readiness. Free /mcp; x402 /mcp/pro.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (3)
- HIGH
- MEDIUMen solana_transfer_readiness
- MEDIUMen solana_token
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"agent-apis": {
"url": "https://api.criptonlabs.com/mcp"
}
}
}Puntos de conexión remotos
https://api.criptonlabs.com/mcpstreamable-httphttps://api.criptonlabs.com/mcp/prostreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (16)
🟢xrpl_fee
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 {}
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"fee": {
"type": "object",
"properties": {
"economy": {
"type": "string",
"description": "Drops"
},
"standard": {
"type": "string",
"description": "Drops"
},
"priority": {
"type": "string",
"description": "Drops"
}
},
"required": [
"economy",
"standard",
"priority"
],
"additionalProperties": false
},
"congestion": {
"type": "object",
"properties": {
"score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"band": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"load_factor_assumed": {
"type": "boolean"
}
},
"required": [
"score",
"band",
"load_factor_assumed"
],
"additionalProperties": false
},
"base_fee": {
"type": "string",
"description": "Decimal string"
},
"median_fee": {
"type": "string",
"description": "Decimal string"
},
"minimum_fee": {
"type": "string",
"description": "Decimal string"
},
"open_ledger_fee": {
"type": "string",
"description": "Decimal string"
},
"current_queue_size": {
"type": "string",
"description": "Decimal string"
},
"max_queue_size": {
"type": "string",
"description": "Decimal string"
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"fee",
"congestion",
"base_fee",
"median_fee",
"minimum_fee",
"open_ledger_fee",
"current_queue_size",
"max_queue_size",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_network_health
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 {}
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"ok",
"degraded",
"down",
"unknown"
]
},
"nodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"member": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"up",
"down"
]
},
"latency_ms": {
"type": [
"number",
"null"
]
},
"ledger_index": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"ledger_age_s": {
"type": [
"number",
"null"
]
},
"load_factor": {
"type": [
"number",
"null"
]
},
"error": {
"type": [
"string",
"null"
]
},
"sampled_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
}
},
"required": [
"member",
"state",
"latency_ms",
"ledger_index",
"ledger_age_s",
"load_factor",
"error",
"sampled_at"
],
"additionalProperties": false
}
},
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"last_probe_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
{
"type": "null"
}
]
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"status",
"nodes",
"ledger_index",
"last_probe_at",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_orderbook(base, quote, depth)
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"}
Esquema de entrada
{
"type": "object",
"properties": {
"base": {
"type": "string",
"description": "Base currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`)"
},
"quote": {
"type": "string",
"description": "Quote currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`)"
},
"depth": {
"description": "Levels per side: a positive integer, rounded up to 10, 50, 100 or 200 (max 200)",
"type": "string"
}
},
"required": [
"base",
"quote"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"base": {
"type": "string"
},
"quote": {
"type": "string"
},
"depth": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"asks": {
"type": "array",
"items": {
"$ref": "#/$defs/BookLevel"
},
"description": "Best (lowest) price first"
},
"bids": {
"type": "array",
"items": {
"$ref": "#/$defs/BookLevel"
},
"description": "Best (highest) price first, from the base-asset side"
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"base",
"quote",
"depth",
"asks",
"bids",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"BookLevel": {
"type": "object",
"properties": {
"gets": {
"type": "string",
"description": "Decimal string"
},
"pays": {
"type": "string",
"description": "Decimal string"
},
"price": {
"type": "string",
"description": "Pays per gets, decimal string"
}
},
"required": [
"gets",
"pays",
"price"
],
"additionalProperties": false
},
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_slippage(base, quote, amount, depth)
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"}
Esquema de entrada
{
"type": "object",
"properties": {
"base": {
"type": "string",
"description": "Base currency: `XRP` (no issuer) or `CODE.issuer` with a valid classic-address issuer (e.g. `USD.rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh`)"
},
"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"
},
"depth": {
"description": "Levels per side: a positive integer, rounded up to 10, 50, 100 or 200 (max 200)",
"type": "string"
}
},
"required": [
"base",
"quote",
"amount"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"base": {
"type": "string"
},
"quote": {
"type": "string"
},
"side": {
"type": "string",
"const": "buy"
},
"depth": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"amount": {
"type": "string",
"description": "Decimal string"
},
"filled": {
"type": "string",
"description": "Decimal string"
},
"partial": {
"type": "boolean"
},
"insufficient_liquidity": {
"type": "boolean"
},
"best_price": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
]
},
"avg_price": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
]
},
"slippage_pct": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Percent, null when liquidity is insufficient"
},
"transfer_fee_applied": {
"type": "boolean"
},
"transfer_fee": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
]
},
"avg_price_after_fees": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
]
},
"venues": {
"type": "object",
"properties": {
"best": {
"anyOf": [
{
"type": "string",
"enum": [
"clob",
"amm"
]
},
{
"type": "null"
}
],
"description": "Cheaper venue by avg_price (ties go to the CLOB), null when neither can fill"
},
"amm_status": {
"type": "string",
"enum": [
"ok",
"stale",
"no_pool",
"unavailable"
],
"description": "State of the AMM read: ok, stale (served past its fresh window), no_pool, unavailable"
},
"clob": {
"type": "object",
"properties": {
"avg_price": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Quote paid per base received, null when it cannot fill"
},
"cost": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Total quote paid for `amount`, null when it cannot fill"
},
"slippage_pct": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Percent vs the best ask, null when it cannot fill"
},
"insufficient_liquidity": {
"type": "boolean"
},
"avg_price_after_fees": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "avg_price x issuer TransferRate, null when the rate is unknown"
}
},
"required": [
"avg_price",
"cost",
"slippage_pct",
"insufficient_liquidity",
"avg_price_after_fees"
],
"additionalProperties": false
},
"amm": {
"anyOf": [
{
"type": "object",
"properties": {
"avg_price": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Quote paid per base received, null when it cannot fill"
},
"cost": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Total quote paid for `amount`, null when it cannot fill"
},
"slippage_pct": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Percent vs the fee-free pool spot price (includes the trading fee), null when it cannot fill"
},
"insufficient_liquidity": {
"type": "boolean"
},
"avg_price_after_fees": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "avg_price x issuer TransferRate, null when the rate is unknown"
},
"spot_price": {
"type": "string",
"description": "Pool spot price, quote per base, excluding fee and impact"
},
"trading_fee": {
"type": "string",
"description": "Pool trading fee as a fraction, like /v1/xrpl/amm"
}
},
"required": [
"avg_price",
"cost",
"slippage_pct",
"insufficient_liquidity",
"avg_price_after_fees",
"spot_price",
"trading_fee"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Null when the pair has no pool or the pool could not be read (see amm_status)"
}
},
"required": [
"best",
"amm_status",
"clob",
"amm"
],
"additionalProperties": false,
"description": "CLOB vs AMM comparison for the same amount; no routing split"
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"base",
"quote",
"side",
"depth",
"amount",
"filled",
"partial",
"insufficient_liquidity",
"best_price",
"avg_price",
"slippage_pct",
"transfer_fee_applied",
"transfer_fee",
"avg_price_after_fees",
"venues",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_amm(a, b)
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"}
Esquema de entrada
{
"type": "object",
"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`)"
}
},
"required": [
"a",
"b"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"asset_a": {
"type": "string"
},
"asset_b": {
"type": "string"
},
"reserve_a": {
"type": "string",
"description": "Decimal string"
},
"reserve_b": {
"type": "string",
"description": "Decimal string"
},
"trading_fee": {
"type": "string",
"description": "Decimal string"
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"asset_a",
"asset_b",
"reserve_a",
"reserve_b",
"trading_fee",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_account_summary(address)
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"}
Esquema de entrada
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Valid classic XRPL account address (r..., checksum verified)"
}
},
"required": [
"address"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"address": {
"type": "string"
},
"balance_xrp": {
"type": "string",
"description": "Decimal string"
},
"sequence": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner_count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"transfer_rate": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Issuer TransferRate, 1000000000 = no fee"
},
"trust_lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"issuer": {
"type": "string"
},
"balance": {
"type": "string",
"description": "Decimal string"
},
"limit": {
"type": "string",
"description": "Decimal string"
}
},
"required": [
"currency",
"issuer",
"balance",
"limit"
],
"additionalProperties": false
}
},
"lines_truncated": {
"type": "boolean"
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"address",
"balance_xrp",
"sequence",
"owner_count",
"transfer_rate",
"trust_lines",
"lines_truncated",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_account_lines(address, limit, peer, marker)
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"}
Esquema de entrada
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Valid classic XRPL account address (r..., checksum verified)"
},
"limit": {
"description": "Lines per page: an integer from 10 to 400 (default 100)",
"type": "string"
},
"peer": {
"description": "Only lines with this counterparty (classic address)",
"type": "string"
},
"marker": {
"description": "Opaque cursor from the previous page's `marker`, for the same address",
"type": "string"
}
},
"required": [
"address"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"address": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"peer": {
"type": [
"string",
"null"
]
},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"peer": {
"type": "string",
"description": "Counterparty address"
},
"currency": {
"type": "string",
"description": "Canonical currency code (3 characters or 40 hex)"
},
"currency_ascii": {
"description": "Readable text of a 40-hex currency code; null when not printable ASCII; absent for XRP and 3-character codes",
"type": [
"string",
"null"
]
},
"balance": {
"type": "string",
"description": "Positive: the peer owes the account; negative: the account owes"
},
"limit": {
"type": "string",
"description": "Limit the account sets"
},
"peer_limit": {
"type": "string",
"description": "Limit the peer sets"
},
"no_ripple": {
"type": "boolean"
},
"no_ripple_peer": {
"type": "boolean"
},
"freeze": {
"type": "boolean"
},
"freeze_peer": {
"type": "boolean"
},
"authorized": {
"type": "boolean"
},
"peer_authorized": {
"type": "boolean"
}
},
"required": [
"peer",
"currency",
"balance",
"limit",
"peer_limit",
"no_ripple",
"no_ripple_peer",
"freeze",
"freeze_peer",
"authorized",
"peer_authorized"
],
"additionalProperties": false
}
},
"marker": {
"description": "Opaque cursor for the next page (send as `marker`); null on the last page",
"type": [
"string",
"null"
]
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"address",
"limit",
"peer",
"lines",
"marker",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_account_transactions(address, limit, marker)
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"}
Esquema de entrada
{
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Valid classic XRPL account address (r..., checksum verified)"
},
"limit": {
"description": "Transactions per page: an integer from 1 to 50 (default 20)",
"type": "string"
},
"marker": {
"description": "Opaque cursor from the previous page's `marker`, for the same address",
"type": "string"
}
},
"required": [
"address"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"address": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"transactions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"hash": {
"type": "string"
},
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"close_time": {
"type": "string",
"description": "Ledger close time, ISO-8601 UTC"
},
"type": {
"type": "string",
"description": "Transaction type, for example `Payment`"
},
"result": {
"type": "string",
"description": "Result code, for example `tesSUCCESS`"
},
"counterparty": {
"description": "The other account, when the transaction names one",
"type": [
"string",
"null"
]
},
"delivered": {
"anyOf": [
{
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "`XRP` or `CODE.issuer`"
},
"value": {
"type": "string",
"description": "Decimal string"
},
"currency_ascii": {
"description": "Readable text of a 40-hex currency code; null when not printable ASCII; absent for XRP and 3-character codes",
"type": [
"string",
"null"
]
}
},
"required": [
"asset",
"value"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Delivered amount, when the transaction reports one"
}
},
"required": [
"hash",
"ledger_index",
"close_time",
"type",
"result",
"counterparty",
"delivered"
],
"additionalProperties": false
},
"description": "Validated transactions, newest first"
},
"marker": {
"description": "Opaque cursor for the next (older) page (send as `marker`); null on the last page",
"type": [
"string",
"null"
]
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"address",
"limit",
"transactions",
"marker",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_token(asset)
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"}
Esquema de entrada
{
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "Issued asset as CODE.issuer (3-character or 40-hex code, classic issuer address); not XRP"
}
},
"required": [
"asset"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"issuer": {
"type": "string",
"description": "Issuer address"
},
"currency": {
"type": "string",
"description": "Canonical currency code (3 characters or 40 hex)"
},
"currency_ascii": {
"description": "Readable text of a 40-hex currency code; null when not printable ASCII; absent for XRP and 3-character codes",
"type": [
"string",
"null"
]
},
"global_freeze": {
"type": "boolean"
},
"no_freeze": {
"type": "boolean"
},
"require_auth": {
"type": "boolean"
},
"default_ripple": {
"type": "boolean"
},
"domain": {
"description": "Issuer domain decoded to text, when set",
"type": [
"string",
"null"
]
},
"transfer_rate": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Issuer TransferRate, 1000000000 = no fee"
},
"transfer_fee_pct": {
"type": "string",
"description": "Transfer fee in percent"
},
"obligations": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Total issued of this currency; null when `obligations_status` is `unavailable`"
},
"obligations_status": {
"type": "string",
"enum": [
"ok",
"unavailable"
]
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"issuer",
"currency",
"global_freeze",
"no_freeze",
"require_auth",
"default_ripple",
"domain",
"transfer_rate",
"transfer_fee_pct",
"obligations",
"obligations_status",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_payment_readiness(source, destination, asset, amount, destination_tag)
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"}
Esquema de entrada
{
"type": "object",
"properties": {
"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"
},
"asset": {
"description": "XRP (default) or CODE.issuer (3-character or 40-hex code, classic issuer)",
"type": "string"
},
"amount": {
"description": "Positive decimal amount of asset; omit to skip amount-dependent checks",
"type": "string"
},
"destination_tag": {
"description": "Destination tag you will send: an integer from 0 to 4294967295",
"type": "string"
}
},
"required": [
"source",
"destination"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"verdict": {
"type": "string",
"enum": [
"ready",
"not_ready",
"unknown"
],
"description": "`not_ready` on any blocking reason; else `unknown` on any failed sub-check"
},
"reasons": {
"type": "array",
"items": {
"type": "string",
"enum": [
"source_not_found",
"insufficient_xrp_balance",
"source_line_missing",
"insufficient_token_balance",
"source_line_frozen",
"destination_not_found",
"amount_below_destination_reserve",
"destination_tag_required",
"deposit_not_authorized",
"destination_line_missing",
"destination_line_limit_exceeded",
"destination_line_frozen",
"issuer_not_found",
"issuer_global_freeze"
]
},
"description": "Blocking reason codes"
},
"warnings": {
"type": "array",
"items": {
"type": "string",
"enum": [
"destination_will_be_created",
"transfer_fee",
"high_fee",
"network_degraded"
]
},
"description": "Non-blocking warnings"
},
"checks_failed": {
"type": "array",
"items": {
"type": "string",
"enum": [
"source_account",
"destination_account",
"deposit_authorized",
"source_line",
"destination_line",
"issuer",
"fee",
"network_health"
]
},
"description": "Sub-checks that could not run"
},
"spendable_xrp": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Source XRP above its live reserve and the standard fee; null when not computable"
},
"transfer_fee_pct": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Issuer transfer fee in percent, when it applies"
},
"source": {
"type": "string"
},
"destination": {
"type": "string"
},
"asset": {
"type": "string",
"description": "`XRP` or `CODE.issuer`"
},
"amount": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Amount checked; null when omitted (amount checks skipped)"
},
"destination_tag": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"verdict",
"reasons",
"warnings",
"checks_failed",
"spendable_xrp",
"transfer_fee_pct",
"source",
"destination",
"asset",
"amount",
"destination_tag",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_paths(source, destination, asset, amount, send_max_asset, ...)
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"}
Esquema de entrada
{
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "Sending account: valid classic XRPL address (r..., checksum verified)"
},
"destination": {
"type": "string",
"description": "Receiving account: valid classic XRPL address"
},
"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"
},
"send_max_asset": {
"description": "Asset of send_max: XRP or CODE.issuer; give it with send_max",
"type": "string"
},
"send_max": {
"description": "Most the source may spend, in send_max_asset; not with source_assets",
"type": "string"
},
"source_assets": {
"description": "Comma-separated assets the source may spend (1 to 4); not with send_max",
"type": "string"
}
},
"required": [
"source",
"destination",
"asset",
"amount"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"alternatives": {
"type": "array",
"items": {
"type": "object",
"properties": {
"source_amount": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "`XRP` or `CODE.issuer`"
},
"value": {
"type": "string",
"description": "Decimal string"
},
"currency_ascii": {
"description": "Readable text of a 40-hex currency code; null when not printable ASCII; absent for XRP and 3-character codes",
"type": [
"string",
"null"
]
}
},
"required": [
"asset",
"value"
],
"additionalProperties": false,
"description": "Estimated amount the source spends"
},
"paths_count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Number of computed paths"
},
"paths": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"account": {
"description": "Account the path rips through",
"type": "string"
},
"currency": {
"description": "Currency code of this step (3 characters or 40 hex)",
"type": "string"
},
"currency_ascii": {
"description": "Readable text of a 40-hex currency code; null when not printable ASCII; absent for XRP and 3-character codes",
"type": [
"string",
"null"
]
},
"issuer": {
"description": "Issuer of the step currency",
"type": "string"
}
},
"additionalProperties": false
}
},
"description": "Computed paths, compact steps"
}
},
"required": [
"source_amount",
"paths_count",
"paths"
],
"additionalProperties": false
},
"description": "Path alternatives; empty when none was found"
},
"paths_may_be_non_optimal": {
"type": "boolean",
"const": true,
"description": "Path finding is best effort: a cheaper path may exist"
},
"warnings": {
"type": "array",
"items": {
"type": "string",
"enum": [
"destination_not_found"
]
},
"description": "Non-blocking warnings"
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"alternatives",
"paths_may_be_non_optimal",
"warnings",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢xrpl_latest_ledger
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 {}
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"close_time": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
{
"type": "null"
}
]
},
"ledger_hash": {
"type": [
"string",
"null"
]
},
"meta": {
"$ref": "#/$defs/Meta"
}
},
"required": [
"ledger_index",
"close_time",
"ledger_hash",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"Meta": {
"type": "object",
"properties": {
"ledger_index": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Validated ledger the data comes from"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from the ledger"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"ledger_index",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢solana_transfer_readiness(source, destination, mint, amount)
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"}
Esquema de entrada
{
"type": "object",
"properties": {
"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"
},
"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)"
}
},
"required": [
"source",
"destination",
"mint",
"amount"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "Sending wallet address"
},
"destination": {
"type": "string",
"description": "Receiving wallet address"
},
"mint": {
"type": "string",
"description": "`SOL` or the mint address"
},
"amount": {
"type": "string",
"description": "Amount checked, in the asset's UI units (as sent)"
},
"amount_raw": {
"type": "string",
"description": "Amount in raw units (lamports for SOL)"
},
"decimals": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Decimals of the asset (9 for SOL)"
},
"token_program": {
"description": "Token program that owns the mint; null for SOL",
"type": [
"string",
"null"
]
},
"ready": {
"type": "boolean",
"description": "True when no blocker applies"
},
"blockers": {
"type": "array",
"items": {
"type": "string",
"enum": [
"insufficient_balance",
"insufficient_sol_for_fees",
"source_below_rent_exempt",
"destination_below_rent_exempt",
"source_frozen",
"destination_frozen",
"non_transferable",
"mint_paused"
]
},
"description": "Every blocking code that matched"
},
"warnings": {
"type": "array",
"items": {
"type": "string",
"enum": [
"destination_off_curve",
"memo_required"
]
},
"description": "Every non-blocking warning that matched"
},
"requires_ata_creation": {
"type": "boolean",
"description": "True when the destination has no associated token account yet"
},
"ata_creation_lamports": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Rent-exempt lamports to create the destination token account; null when not needed"
},
"transfer_fee": {
"anyOf": [
{
"type": "string",
"description": "Decimal string"
},
{
"type": "null"
}
],
"description": "Token-2022 transfer fee in raw units; null without a fee config"
},
"net_amount": {
"type": "string",
"description": "Raw units the destination receives after any transfer fee"
},
"meta": {
"$ref": "#/$defs/MetaSolana"
}
},
"required": [
"source",
"destination",
"mint",
"amount",
"amount_raw",
"decimals",
"token_program",
"ready",
"blockers",
"warnings",
"requires_ata_creation",
"ata_creation_lamports",
"transfer_fee",
"net_amount",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"MetaSolana": {
"type": "object",
"properties": {
"slot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Context slot of the finalized read"
},
"commitment": {
"type": "string",
"const": "finalized",
"description": "Every read is at finalized commitment"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from Solana"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"slot",
"commitment",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢solana_token(mint)
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"}
Esquema de entrada
{
"type": "object",
"properties": {
"mint": {
"type": "string",
"description": "Mint address of an SPL Token or Token-2022 token (base58, 32 bytes)"
}
},
"required": [
"mint"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"mint": {
"type": "string"
},
"token_program": {
"type": "string",
"description": "SPL Token or Token-2022 program address"
},
"decimals": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"supply": {
"type": "string",
"description": "Total supply in raw units, exact"
},
"mint_authority": {
"description": "Null when the mint authority is renounced",
"type": [
"string",
"null"
]
},
"freeze_authority": {
"description": "Null when the freeze authority is renounced",
"type": [
"string",
"null"
]
},
"extensions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Token-2022 mint extensions by name; empty for SPL Token"
},
"transfer_fee": {
"anyOf": [
{
"type": "object",
"properties": {
"basis_points": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"maximum_fee": {
"type": "string",
"description": "Maximum fee in raw units"
}
},
"required": [
"basis_points",
"maximum_fee"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Transfer fee active at the current epoch; null without a fee config"
},
"verdict": {
"type": "string",
"enum": [
"SAFE",
"WARN",
"DANGER"
],
"description": "Highest level matched: DANGER > WARN > SAFE"
},
"reasons": {
"type": "array",
"items": {
"type": "string",
"enum": [
"permanent_delegate",
"transfer_hook",
"pausable",
"default_account_frozen",
"mint_authority_set",
"freeze_authority_set",
"transfer_fee",
"mint_close_authority",
"unknown_extension"
]
},
"description": "Every matched code of every level; empty for SAFE"
},
"meta": {
"$ref": "#/$defs/MetaSolana"
}
},
"required": [
"mint",
"token_program",
"decimals",
"supply",
"mint_authority",
"freeze_authority",
"extensions",
"transfer_fee",
"verdict",
"reasons",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"MetaSolana": {
"type": "object",
"properties": {
"slot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Context slot of the finalized read"
},
"commitment": {
"type": "string",
"const": "finalized",
"description": "Every read is at finalized commitment"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from Solana"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"slot",
"commitment",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢solana_latest_slot
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 {}
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"slot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Latest finalized slot"
},
"block_time": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
{
"type": "null"
}
],
"description": "Block time of that slot; null when unavailable"
},
"meta": {
"$ref": "#/$defs/MetaSolana"
}
},
"required": [
"slot",
"block_time",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"MetaSolana": {
"type": "object",
"properties": {
"slot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Context slot of the finalized read"
},
"commitment": {
"type": "string",
"const": "finalized",
"description": "Every read is at finalized commitment"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from Solana"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"slot",
"commitment",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}🟢solana_network_health
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 {}
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"up",
"down",
"unknown",
"unavailable"
],
"description": "Latest probe result; `unavailable` while Solana data is not configured"
},
"slot": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Finalized slot of the latest successful probe"
},
"latency_ms": {
"type": [
"number",
"null"
]
},
"last_probe_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
{
"type": "null"
}
]
},
"meta": {
"$ref": "#/$defs/MetaSolana"
}
},
"required": [
"status",
"slot",
"latency_ms",
"last_probe_at",
"meta"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"$defs": {
"MetaSolana": {
"type": "object",
"properties": {
"slot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "Context slot of the finalized read"
},
"commitment": {
"type": "string",
"const": "finalized",
"description": "Every read is at finalized commitment"
},
"as_of": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the data was read from Solana"
},
"age_seconds": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age of the data at response time"
},
"cache": {
"type": "string",
"enum": [
"hit",
"miss",
"stale"
]
},
"stale": {
"type": "boolean",
"description": "True when served past its fresh TTL (stale-on-error)"
}
},
"required": [
"slot",
"commitment",
"as_of",
"age_seconds",
"cache",
"stale"
],
"additionalProperties": false
}
}
}Comunidad
Evidencia