Criptonlabs Agent APIs
Read-only XRPL and Solana data for agents: fees, slippage, readiness. Free /mcp; x402 /mcp/pro.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (3)
- HIGH
- MEDIUMin solana_transfer_readiness
- MEDIUMin solana_token
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"agent-apis": {
"url": "https://api.criptonlabs.com/mcp"
}
}
}Remote-Endpunkte
https://api.criptonlabs.com/mcpstreamable-httphttps://api.criptonlabs.com/mcp/prostreamable-httpWas es kann
Tool-Inventar
Tools (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 {}
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"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 {}
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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 {}
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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"}
Eingabe-Schema
{
"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"
}Ausgabe-Schema
{
"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 {}
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"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 {}
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Ausgabe-Schema
{
"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
}
}
}Community
Nachweis