{
  "schemaVersion": "1.0.0",
  "data": {
    "canonicalAsset": {
      "tokenId": "xrpl-mainnet:rS5LWaqWuzmoiNpzgYJbPvD1bsRZTgDG7:41535445524F4944000000000000000000000000",
      "network": "xrpl-mainnet",
      "networkName": "XRP Ledger Mainnet",
      "issuer": "rS5LWaqWuzmoiNpzgYJbPvD1bsRZTgDG7",
      "currencyHex": "41535445524F4944000000000000000000000000",
      "displaySymbol": "ASTEROID",
      "projectName": "ASTEROID XRPL",
      "canonicalWebsite": "https://asteroidxrpl.com",
      "identifierPolicy": "Identify this asset only by the full network:issuer:currency_hex identifier. The display symbol ASTEROID alone is not sufficient and does not establish authenticity.",
      "precisionPolicy": "XRPL tokens have no protocol-level decimals property. Amounts are exact decimal strings; display rounding is a presentation policy applied by clients, not a token property.",
      "claimStatus": "ledger-verified"
    },
    "projectIdentity": {
      "name": "ASTEROID XRPL",
      "description": "ASTEROID XRPL is an independent, community-led token project built on the XRP Ledger, combining transparent on-chain evidence, creative community culture, and XRPL-native experimentation.",
      "descriptionClaimStatus": "owner-confirmed",
      "canonicalWebsite": "https://asteroidxrpl.com",
      "network": "XRP Ledger Mainnet",
      "approvalAuthority": "Ludovic XRPL",
      "approvalAuthorityClaimStatus": "owner-confirmed",
      "nonAffiliation": "ASTEROID XRPL is an independent community project. It is not affiliated with Ripple, the XRPL Foundation, SpaceX, Polaris Dawn, or ASTEROID projects on other networks.",
      "declaredWallets": [
        {
          "address": "rS5LWaqWuzmoiNpzgYJbPvD1bsRZTgDG7",
          "role": "Issuer",
          "claimStatus": "ledger-verified",
          "note": "Issues the ASTEROID currency. Issuance is observable on the ledger."
        },
        {
          "address": "r4E1KSenkzw6hMecZbo2KzX8Q6Bqqr6ST5",
          "role": "Takeover qualifying wallet",
          "claimStatus": "owner-confirmed",
          "note": "Identified by the project in connection with the community takeover."
        },
        {
          "address": "rJREnsewUhaqZRz7xQUWCYmowqBYcWPgtv",
          "role": "Project-declared treasury",
          "claimStatus": "owner-confirmed",
          "note": "Holds project-declared treasury escrows. Escrow objects themselves are ledger-readable."
        },
        {
          "address": "rJvjfD8c1RaKTHSDr3MUL2fTdumkb6ngMQ",
          "role": "ASTEROID/XRP AMM account",
          "claimStatus": "ledger-verified",
          "note": "Automated market maker account for the ASTEROID/XRP pair."
        },
        {
          "address": "r9k6XPd8HDCjwtHhdA8xVYiruhWWUakdw7",
          "role": "LP-token holding account",
          "claimStatus": "owner-confirmed",
          "note": "Declared as holding LP tokens. Accessibility is assessed from live control-path checks, never asserted by label."
        },
        {
          "address": "rH581U7gHG8G1kgYibVEkzRc9hwMHaFPE1",
          "role": "LP-token holding account",
          "claimStatus": "owner-confirmed",
          "note": "Declared as holding LP tokens. Accessibility is assessed from live control-path checks, never asserted by label."
        }
      ]
    },
    "claimStatuses": [
      {
        "status": "ledger-verified",
        "meaning": "Established by a validated XRP Ledger read at a stated ledger index."
      },
      {
        "status": "owner-confirmed",
        "meaning": "Declared by the project. Not proven by the ledger on its own."
      },
      {
        "status": "independently-sourced",
        "meaning": "Sourced from a named third party outside the project."
      },
      {
        "status": "derived",
        "meaning": "Calculated from identified ledger inputs using a published methodology."
      },
      {
        "status": "aspirational",
        "meaning": "A stated intention about the future, not a current fact."
      },
      {
        "status": "unresolved",
        "meaning": "Not currently established; treat as unknown."
      }
    ],
    "capabilities": [
      {
        "name": "discover_asset",
        "description": "Authoritative entry points, capability catalogue, schema versions and exact asset identity.",
        "status": "available",
        "interfaces": [
          "mcp",
          "rest:/.well-known/asteroid-agent.json"
        ],
        "freshness": "Immutable per release. No ledger read is performed.",
        "provenanceNote": "Static canonical constants; provenance.ledgerIndex is null by design.",
        "schema": "https://asteroidxrpl.com/schemas/v1/discovery-manifest.json",
        "limitations": "Contains no changing ledger state such as supply, holders, liquidity or price."
      },
      {
        "name": "get_asset_identity",
        "description": "Canonical immutable identity plus claim-status-separated project metadata.",
        "status": "available",
        "interfaces": [
          "mcp",
          "rest:/api/v1/asset"
        ],
        "freshness": "Immutable per release. No ledger read is performed.",
        "provenanceNote": "Static canonical constants; provenance.ledgerIndex is null by design.",
        "schema": "https://asteroidxrpl.com/schemas/v1/identity-response.json",
        "limitations": "Wallet roles are owner-confirmed declarations unless marked ledger-verified."
      },
      {
        "name": "verify_asset",
        "description": "Compare a candidate network, issuer and currency code against the canonical identity.",
        "status": "available",
        "interfaces": [
          "mcp",
          "rest:/.well-known/xrpl-asset.json"
        ],
        "freshness": "Immutable per release. No ledger read is performed.",
        "provenanceNote": "Field-by-field comparison against the canonical constants.",
        "schema": "https://asteroidxrpl.com/schemas/v1/verify-response.json",
        "limitations": "All three of network, issuer and currency code are required. The display symbol alone never verifies an asset."
      },
      {
        "name": "get_asset_evidence",
        "description": "Historical ledger evidence with transaction hashes, ledger indexes and verification results.",
        "status": "available",
        "interfaces": [
          "rest:/api/v1/asset/evidence"
        ],
        "freshness": "Re-validated on every request against a validated ledger.",
        "provenanceNote": "XRPL JSON-RPC `tx` reads through the shared validated-ledger client.",
        "schema": "https://asteroidxrpl.com/schemas/v1/ledger-evidence.json",
        "limitations": "Historical anchors only. A failed lookup returns verificationResult \"unavailable\", never an invented success."
      },
      {
        "name": "get_service_health",
        "description": "Per-component availability for the application, schemas, XRPL upstream and identity/evidence services.",
        "status": "available",
        "interfaces": [
          "rest:/api/v1/health"
        ],
        "freshness": "Evaluated on every request; cached at the edge for at most 30 seconds.",
        "provenanceNote": "Live component probes plus a validated-ledger reachability check.",
        "schema": "https://asteroidxrpl.com/schemas/v1/health-response.json",
        "limitations": "Reports reachability only; it is not a correctness or reliability score."
      },
      {
        "name": "get_market_state",
        "description": "Composite ledger-indexed market state: supply, AMM liquidity and fee, LP accessibility, treasury escrows and trust-line counts, each with its own provenance.",
        "status": "available",
        "interfaces": [
          "mcp",
          "rest:/api/v1/market"
        ],
        "freshness": "Read from a validated ledger on demand and served through a bounded server-side cache (AMM 10s, supply 30s, escrows 60s, holders 120s). The envelope ledgerIndex is the oldest section reading.",
        "provenanceNote": "Composite of the supply, liquidity, escrow and holder services. Each section states its own observedAt, ledgerIndex and method.",
        "schema": "https://asteroidxrpl.com/schemas/v1/market-state.json",
        "limitations": "An observation of ledger state, not a market evaluation, reliability score, quote or transaction preparation. Sections can degrade independently; a null value is never a zero."
      },
      {
        "name": "get_supply_state",
        "description": "Outstanding, escrowed, total and circulating ASTEROID supply plus the original issuance revalidated against its anchor transaction.",
        "status": "available",
        "interfaces": [
          "mcp",
          "rest:/api/v1/supply"
        ],
        "freshness": "Validated-ledger read, cached at most 30 seconds.",
        "provenanceNote": "`gateway_balances` on the issuer for obligations, escrow ledger objects on the project-declared treasury, and a `tx` revalidation of the issuance anchor.",
        "schema": "https://asteroidxrpl.com/schemas/v1/supply-state.json",
        "limitations": "Circulating supply excludes escrowed treasury tokens only; it does not exclude AMM-pooled tokens or tokens held by declared project wallets. Amounts are exact decimal strings and are never rounded for transport."
      },
      {
        "name": "get_liquidity_state",
        "description": "ASTEROID/XRP AMM reserves, LP token supply, the XRPL AMM trading fee, and each declared LP-holding account with a live accessibility verdict.",
        "status": "available",
        "interfaces": [
          "mcp",
          "rest:/api/v1/liquidity"
        ],
        "freshness": "AMM read cached at most 10 seconds; account-control reads cached at most 120 seconds.",
        "provenanceNote": "`amm_info` for the pool, `account_lines` for LP balances, and `account_info` plus `account_objects` (signer_list) for each LP account's control paths.",
        "schema": "https://asteroidxrpl.com/schemas/v1/liquidity-state.json",
        "limitations": "Accessibility is a live observation of signing paths, not a permanence guarantee. The trading fee is a protocol pool fee set by liquidity-provider votes, not a token tax. Not a quote."
      },
      {
        "name": "verify_liquidity_lock",
        "description": "Live verification of every project-declared LP-holding account: LP balance, share of LP supply, pro-rata implied reserves and a control assessment from the master key, regular key and signer list, plus an overall verdict.",
        "status": "available",
        "interfaces": [
          "mcp",
          "rest:/api/v1/liquidity/lock"
        ],
        "freshness": "AMM read cached at most 10 seconds; account-control reads cached at most 120 seconds.",
        "provenanceNote": "A projection of the same liquidity reading — `amm_info`, `account_lines`, `account_info` and `account_objects` (signer_list) — so it can never disagree with get_liquidity_state.",
        "schema": "https://asteroidxrpl.com/schemas/v1/lp-lock-verification.json",
        "limitations": "A closed signing path is an observation at one validated ledger, not a permanence guarantee and not proof that no path exists outside the checks performed. Account roles are owner-confirmed declarations. Not a safety score."
      },
      {
        "name": "get_escrow_schedule",
        "description": "Every project-declared treasury ASTEROID escrow with its amount, destination, unlock and cancel times and a locked/releasable/expired state.",
        "status": "available",
        "interfaces": [
          "mcp",
          "rest:/api/v1/escrows"
        ],
        "freshness": "Validated-ledger read, cached at most 60 seconds.",
        "provenanceNote": "`account_objects` (type=escrow) on the project-declared treasury, filtered to the canonical ASTEROID currency and issuer.",
        "schema": "https://asteroidxrpl.com/schemas/v1/escrow-state.json",
        "limitations": "Escrow objects are ledger-verified; the treasury role of the account is an owner-confirmed declaration. An escrow does not establish who controls the destination account after release."
      },
      {
        "name": "get_holder_distribution",
        "description": "Complete trust-line enumeration of the issuer: total trust lines, non-zero holders, completeness flag and the counting methodology.",
        "status": "available",
        "interfaces": [
          "mcp",
          "rest:/api/v1/holders"
        ],
        "freshness": "Full marker-chain enumeration on one validated ledger, cached at most 120 seconds.",
        "provenanceNote": "`account_lines` on the issuer, paginated to exhaustion on a single ledger.",
        "schema": "https://asteroidxrpl.com/schemas/v1/holder-state.json",
        "limitations": "A trust line is not a person: one holder may control many accounts and custodial accounts aggregate many holders. If the page cap is reached, complete is false and the counts are lower bounds."
      },
      {
        "name": "get_swap_quote",
        "description": "Indicative bidirectional ASTEROID/XRP AMM estimate for an exact input or exact output, with fee, spot and effective price, price impact and optional slippage bounds.",
        "status": "available",
        "interfaces": [
          "mcp",
          "rest:/api/v1/quote"
        ],
        "freshness": "Computed against AMM reserves read from a validated ledger, cached at most 10 seconds.",
        "provenanceNote": "Constant-product XRPL AMM mathematics applied with exact decimal arithmetic to the reserves and trading fee from `amm_info`.",
        "schema": "https://asteroidxrpl.com/schemas/v1/quote-response.json",
        "limitations": "Indicative only and never executable. Every estimate carries a quote identifier, methodology version, validated ledger index and expiry; the identifier reserves nothing and cannot be redeemed. Models the single AMM pool: no order books, no path-finding, no transaction fee, no transfer fee, no slippage protection. Nothing is signed, submitted or prepared and no key or credential is accepted."
      },
      {
        "name": "get_project_info",
        "description": "Static public reference information: issuer, currency code, declared wallet roles with claim statuses, website, where to buy, official social links and the risk disclaimer.",
        "status": "legacy-available",
        "interfaces": [
          "mcp"
        ],
        "freshness": "Static per release. No ledger read is performed.",
        "provenanceNote": "Project-declared constants. Wallet roles are owner-confirmed, not ledger-proven.",
        "schema": "No published JSON Schema. Untyped JSON object; shape may change without a schema-version bump.",
        "limitations": "Pre-Gate-1 website surface retained for compatibility. It is not enveloped, carries no provenance block and no degraded array, and must not be treated as market evaluation, quoting, simulation, monitoring or transaction preparation. For canonical identity prefer get_asset_identity."
      },
      {
        "name": "get_token_stats",
        "description": "Current ASTEROID supply figures, holder count, issuer XRP balance and the balance and supply share of the project-declared takeover qualifying wallet.",
        "status": "deprecated",
        "interfaces": [
          "mcp"
        ],
        "freshness": "Read on each call from a validated ledger; values change continuously.",
        "provenanceNote": "XRPL JSON-RPC reads through the shared validated-ledger client, plus a public indexer for holder counts.",
        "schema": "No published JSON Schema. Untyped JSON object; shape may change without a schema-version bump.",
        "limitations": "Deprecated: use get_supply_state instead, which is enveloped with provenance, per-value claim statuses, exact decimal strings and stable degraded codes. This tool remains callable for compatibility. Pre-Gate-1 website surface retained for compatibility. It is not enveloped, carries no provenance block and no degraded array, and must not be treated as market evaluation, quoting, simulation, monitoring or transaction preparation. Wallet labels describe declared roles only and imply nothing about ownership, control or accessibility."
      },
      {
        "name": "get_liquidity_stats",
        "description": "ASTEROID/XRP AMM pool composition, LP token supply, the XRPL AMM trading fee in basis points, and the split between LP tokens held by project-declared locked accounts and the rest of the community.",
        "status": "deprecated",
        "interfaces": [
          "mcp"
        ],
        "freshness": "Read on each call from a validated ledger; values change continuously.",
        "provenanceNote": "XRPL JSON-RPC `amm_info` and account reads through the shared client.",
        "schema": "No published JSON Schema. Untyped JSON object; shape may change without a schema-version bump.",
        "limitations": "Deprecated: use get_liquidity_state instead, which is enveloped with provenance, per-value claim statuses, exact decimal strings and stable degraded codes. This tool remains callable for compatibility. Pre-Gate-1 website surface retained for compatibility. It is not enveloped, carries no provenance block and no degraded array, and must not be treated as market evaluation, quoting, simulation, monitoring or transaction preparation. The AMM trading fee is a protocol pool fee set by LP votes; it is not a token tax and can change at any time. This is not a quote and must not be used to price a swap."
      },
      {
        "name": "get_escrow_stats",
        "description": "Project-declared treasury escrows on the XRP Ledger with each escrow amount, finish-after and cancel-after dates, plus the total escrowed amount and its share of supply.",
        "status": "deprecated",
        "interfaces": [
          "mcp"
        ],
        "freshness": "Read on each call from a validated ledger.",
        "provenanceNote": "XRPL JSON-RPC `account_objects` on the project-declared treasury account. The treasury role is owner-confirmed; the escrow objects themselves are ledger-readable.",
        "schema": "No published JSON Schema. Untyped JSON object; shape may change without a schema-version bump.",
        "limitations": "Deprecated: use get_escrow_schedule instead, which is enveloped with provenance, per-value claim statuses, exact decimal strings and stable degraded codes. This tool remains callable for compatibility. Pre-Gate-1 website surface retained for compatibility. It is not enveloped, carries no provenance block and no degraded array, and must not be treated as market evaluation, quoting, simulation, monitoring or transaction preparation. Escrow existence does not establish who controls the destination account after release."
      },
      {
        "name": "get_price_history",
        "description": "Daily USD price observations for ASTEROID over the last 30 days plus the current price and the 24h and 30d percentage change.",
        "status": "legacy-available",
        "interfaces": [
          "mcp"
        ],
        "freshness": "Third-party daily candles; typically delayed and subject to upstream rate limits.",
        "provenanceNote": "Independently sourced from the public GeckoTerminal API for the ASTEROID/XRP pool. Not a ledger read.",
        "schema": "No published JSON Schema. Untyped JSON object; shape may change without a schema-version bump.",
        "limitations": "Pre-Gate-1 website surface retained for compatibility. It is not enveloped, carries no provenance block and no degraded array, and must not be treated as market evaluation, quoting, simulation, monitoring or transaction preparation. Indicative historical observations only — not a quote, not executable, and no slippage or depth is modelled."
      },
      {
        "name": "evaluate_market",
        "description": "Market evaluation and reliability scoring.",
        "status": "planned",
        "interfaces": [],
        "freshness": "Not available.",
        "provenanceNote": "Not available.",
        "schema": "https://asteroidxrpl.com/schemas/v1/response-envelope.json",
        "limitations": "Planned. Not implemented and not callable."
      },
      {
        "name": "quote_swap",
        "description": "Executable quoting, price monitoring and alerting. Indicative estimation is already available through get_swap_quote; execution is not.",
        "status": "planned",
        "interfaces": [],
        "freshness": "Not available.",
        "provenanceNote": "Not available.",
        "schema": "https://asteroidxrpl.com/schemas/v1/response-envelope.json",
        "limitations": "Planned. Not implemented and not callable."
      },
      {
        "name": "prepare_unsigned_transaction",
        "description": "Non-custodial unsigned trust-line and swap preparation.",
        "status": "planned",
        "interfaces": [],
        "freshness": "Not available.",
        "provenanceNote": "Not available.",
        "schema": "https://asteroidxrpl.com/schemas/v1/response-envelope.json",
        "limitations": "Planned. Not implemented and not callable."
      }
    ]
  },
  "provenance": {
    "observedAt": "2026-09-07T20:35:02.838Z",
    "ledgerIndex": null,
    "node": null,
    "method": "Static canonical constants from src/lib/xrpl/constants.ts. No ledger read is performed for immutable identity."
  },
  "degraded": [],
  "links": {
    "self": "https://asteroidxrpl.com/api/v1/asset",
    "discoveryManifest": "https://asteroidxrpl.com/.well-known/asteroid-agent.json",
    "assetManifest": "https://asteroidxrpl.com/.well-known/xrpl-asset.json",
    "evidence": "https://asteroidxrpl.com/api/v1/asset/evidence",
    "health": "https://asteroidxrpl.com/api/v1/health",
    "openapi": "https://asteroidxrpl.com/openapi.json",
    "schemas": "https://asteroidxrpl.com/schemas/v1/index.json",
    "llms": "https://asteroidxrpl.com/llms.txt",
    "mcp": "https://asteroidxrpl.com/mcp",
    "market": "https://asteroidxrpl.com/api/v1/market",
    "supply": "https://asteroidxrpl.com/api/v1/supply",
    "liquidity": "https://asteroidxrpl.com/api/v1/liquidity",
    "escrows": "https://asteroidxrpl.com/api/v1/escrows",
    "holders": "https://asteroidxrpl.com/api/v1/holders",
    "liquidityLock": "https://asteroidxrpl.com/api/v1/liquidity/lock",
    "quote": "https://asteroidxrpl.com/api/v1/quote",
    "methodology": "https://asteroidxrpl.com/agents/methodology",
    "ledgerHub": "https://asteroidxrpl.com/ledger",
    "agentGateway": "https://asteroidxrpl.com/agents",
    "website": "https://asteroidxrpl.com/"
  }
}