{
  "openapi": "3.1.0",
  "info": {
    "title": "rh-chain-intel - Robinhood Chain data for AI agents",
    "version": "1.0.0",
    "description": "On-chain data for Robinhood Chain (Ethereum L2 on Arbitrum, mainnet since July 2026) for AI agents: network health, wallet snapshots and activity scores, a token screener covering tokenized Stock Tokens (MSTR, GME, ASML...) and community tokens, token detail, and transaction lookup. Free public data (Blockscout + RPC), paid per call via x402 (USDC on Base). No API key. Public read-only; NOT investment advice.",
    "contact": {
      "name": "rh-chain-intel",
      "email": " vanlucpdu@gmail.com",
      "url": "https://rh-chain-intel.vercel.app"
    }
  },
  "servers": [
    {
      "url": "https://rh-chain-intel.vercel.app"
    }
  ],
  "x-docs": {
    "llmsTxt": "https://rh-chain-intel.vercel.app/llms.txt"
  },
  "x-guidance": "rh-chain-intel gives AI agents on-chain data for Robinhood Chain: /api/health for network status, /api/wallet for a wallet snapshot (balance, tx count, scam/reputation, token holdings), /api/score for a 0-100 activity score, /api/tokens to screen Stock Tokens and community tokens, /api/token for one token detail, /api/tx to look up a transaction, /api/rugcheck to check holder concentration for rug risk, /api/trending to see which tokens are pumping by 24h volume. Free public data from Blockscout and JSON-RPC. Each endpoint is a paid POST via x402 (USDC on Base). Public read-only; NOT investment advice.",
  "x402Version": 2,
  "x-discovery": {
    "ownershipProofs": [
      "0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"
    ]
  },
  "paths": {
    "/api/health": {
      "post": {
        "operationId": "health",
        "summary": "Chain Health",
        "description": "Live network health of Robinhood Chain (Ethereum L2 on Arbitrum): latest block, average block time, gas prices, total and today's transactions, total addresses, ETH price. No input.",
        "x-agent-guidance": {
          "whenToUse": "Use to check if Robinhood Chain is live and how busy it is before interacting, or to monitor network activity.",
          "input": "POST JSON: {} (no params).",
          "output": "latestBlock, averageBlockTimeMs, gasPricesGwei{}, totalTransactions, transactionsToday, totalAddresses, ethPriceUsd.",
          "paymentFlow": "First call returns HTTP 402 with an x402 payment requirement (USDC on Base). Pay with an x402 client, then retry to get 200."
        },
        "x-payment-info": {
          "x402Version": 2,
          "price": {
            "mode": "fixed",
            "amount": "0.005",
            "currency": "USD"
          },
          "protocols": [
            "x402"
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Chain Health result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "latestBlock": {
                      "type": "number"
                    },
                    "transactionsToday": {
                      "type": "number"
                    },
                    "gasPricesGwei": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - missing/invalid input."
          },
          "402": {
            "description": "Payment Required (x402, USDC on Base)."
          }
        }
      }
    },
    "/api/wallet": {
      "post": {
        "operationId": "wallet",
        "summary": "Wallet Snapshot",
        "description": "Wallet snapshot on Robinhood Chain: ETH balance (+USD), transaction count, account type (wallet/contract), scam and reputation flags, and optionally (deep=true) token holdings. Body: { address, deep? }.",
        "x-agent-guidance": {
          "whenToUse": "Use before sending funds to or interacting with an address, or to summarize a wallet's state on Robinhood Chain. Set deep=true to also list token holdings.",
          "input": "POST JSON: { address (0x...), deep? }.",
          "output": "balanceEth, balanceUsd, txCount, isContract, isScam, reputation, tokens[] (if deep).",
          "paymentFlow": "First call returns HTTP 402 with an x402 payment requirement (USDC on Base). Pay with an x402 client, then retry to get 200."
        },
        "x-payment-info": {
          "x402Version": 2,
          "price": {
            "mode": "fixed",
            "amount": "0.01",
            "currency": "USD"
          },
          "protocols": [
            "x402"
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "address": {
                    "type": "string"
                  },
                  "deep": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "address"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Wallet Snapshot result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "balanceEth": {
                      "type": "number"
                    },
                    "txCount": {
                      "type": "number"
                    },
                    "isScam": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - missing/invalid input."
          },
          "402": {
            "description": "Payment Required (x402, USDC on Base)."
          }
        }
      }
    },
    "/api/score": {
      "post": {
        "operationId": "score",
        "summary": "Wallet Activity Score",
        "description": "Activity score (0-100) for a Robinhood Chain wallet, derived from transaction count, balance, and token activity, with a tier (dormant/low/moderate/active/very active). Body: { address }.",
        "x-agent-guidance": {
          "whenToUse": "Use for a quick single-number read of how active/established a wallet is on Robinhood Chain, e.g. to filter counterparties. For full detail use /api/wallet.",
          "input": "POST JSON: { address (0x...) }.",
          "output": "score (0-100), tier, breakdown{txCount, balanceEth, ...}.",
          "paymentFlow": "First call returns HTTP 402 with an x402 payment requirement (USDC on Base). Pay with an x402 client, then retry to get 200."
        },
        "x-payment-info": {
          "x402Version": 2,
          "price": {
            "mode": "fixed",
            "amount": "0.01",
            "currency": "USD"
          },
          "protocols": [
            "x402"
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "address": {
                    "type": "string",
                    "description": "Address (0x...).",
                    "examples": [
                      "0x0000000000000000000000000000000000000000"
                    ]
                  }
                },
                "required": [
                  "address"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Wallet Activity Score result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "score": {
                      "type": "number"
                    },
                    "tier": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - missing/invalid input."
          },
          "402": {
            "description": "Payment Required (x402, USDC on Base)."
          }
        }
      }
    },
    "/api/tokens": {
      "post": {
        "operationId": "tokens",
        "summary": "Token Screener",
        "description": "Screen tokens on Robinhood Chain sorted by holders: tokenized Stock Tokens (MSTR, GME, ASML, TSM, IonQ...) and community tokens. Filter with stockOnly=true, or a name/symbol query. Body: { query?, stockOnly?, limit? }.",
        "x-agent-guidance": {
          "whenToUse": "Use to discover what tokens exist on Robinhood Chain, or to list only Robinhood Stock Tokens (stockOnly=true). For one token's detail use /api/token.",
          "input": "POST JSON: { query?, stockOnly?, limit? (1-50) }.",
          "output": "tokens[] each with symbol, name, address, holders, priceUsd, marketCapUsd, volume24h, isStockToken.",
          "paymentFlow": "First call returns HTTP 402 with an x402 payment requirement (USDC on Base). Pay with an x402 client, then retry to get 200."
        },
        "x-payment-info": {
          "x402Version": 2,
          "price": {
            "mode": "fixed",
            "amount": "0.008",
            "currency": "USD"
          },
          "protocols": [
            "x402"
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string"
                  },
                  "stockOnly": {
                    "type": "boolean"
                  },
                  "limit": {
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Token Screener result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "number"
                    },
                    "tokens": {
                      "type": "array"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - missing/invalid input."
          },
          "402": {
            "description": "Payment Required (x402, USDC on Base)."
          }
        }
      }
    },
    "/api/token": {
      "post": {
        "operationId": "token",
        "summary": "Token Detail",
        "description": "Detail for one token on Robinhood Chain by contract address: symbol, name, token type, holders, supply, price, market cap, 24h volume, and whether it is a Robinhood Stock Token. Body: { address }.",
        "x-agent-guidance": {
          "whenToUse": "Use to read one token's holders/price/market cap before interacting or trading. Get the address from /api/tokens.",
          "input": "POST JSON: { address (token contract 0x...) }.",
          "output": "symbol, name, holders, totalSupply, priceUsd, marketCapUsd, volume24h, isStockToken.",
          "paymentFlow": "First call returns HTTP 402 with an x402 payment requirement (USDC on Base). Pay with an x402 client, then retry to get 200."
        },
        "x-payment-info": {
          "x402Version": 2,
          "price": {
            "mode": "fixed",
            "amount": "0.008",
            "currency": "USD"
          },
          "protocols": [
            "x402"
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "address": {
                    "type": "string"
                  }
                },
                "required": [
                  "address"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Token Detail result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "symbol": {
                      "type": "string"
                    },
                    "holders": {
                      "type": "number"
                    },
                    "isStockToken": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - missing/invalid input."
          },
          "402": {
            "description": "Payment Required (x402, USDC on Base)."
          }
        }
      }
    },
    "/api/tx": {
      "post": {
        "operationId": "tx",
        "summary": "Transaction Lookup",
        "description": "Look up a transaction on Robinhood Chain by hash: status, method, from/to, value, fee, block, timestamp, and whether it moved tokens. Body: { hash }.",
        "x-agent-guidance": {
          "whenToUse": "Use to check the outcome/details of a specific transaction without opening the block explorer.",
          "input": "POST JSON: { hash (0x...) }.",
          "output": "status, method, from, to, valueEth, feeEth, blockNumber, timestamp, hasTokenTransfers.",
          "paymentFlow": "First call returns HTTP 402 with an x402 payment requirement (USDC on Base). Pay with an x402 client, then retry to get 200."
        },
        "x-payment-info": {
          "x402Version": 2,
          "price": {
            "mode": "fixed",
            "amount": "0.005",
            "currency": "USD"
          },
          "protocols": [
            "x402"
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "hash": {
                    "type": "string"
                  }
                },
                "required": [
                  "hash"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transaction Lookup result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "method": {
                      "type": "string"
                    },
                    "valueEth": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - missing/invalid input."
          },
          "402": {
            "description": "Payment Required (x402, USDC on Base)."
          }
        }
      }
    },
    "/api/rugcheck": {
      "post": {
        "operationId": "rugcheck",
        "summary": "Token Rug Check",
        "description": "Rug check a token on Robinhood Chain via holder concentration: top holder %, top-10 %, burned %, holder count, and scam flag. Returns GO/CAUTION/DANGER. Catches whale-controlled dump/rug risk on new meme tokens. Does NOT check mint authority, honeypot, or trading tax (GoPlus does not yet support this chain). Body: { address }.",
        "x-agent-guidance": {
          "whenToUse": "Use before buying/interacting with a new or meme token on Robinhood Chain, to catch whale concentration and scam flags. Note it checks holder distribution, not contract-level honeypot/mint; for Stock Tokens (Robinhood-issued) high concentration is expected and not a red flag.",
          "input": "POST JSON: { address (token 0x...) }.",
          "output": "verdict (GO|CAUTION|DANGER), concentration{topHolderPct, top10Pct, burnedPct}, holderCount, isScam, topHolders[], flags[].",
          "paymentFlow": "First call returns HTTP 402 with an x402 payment requirement (USDC on Base). Pay with an x402 client, then retry to get 200."
        },
        "x-payment-info": {
          "x402Version": 2,
          "price": {
            "mode": "fixed",
            "amount": "0.01",
            "currency": "USD"
          },
          "protocols": [
            "x402"
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "address": {
                    "type": "string"
                  }
                },
                "required": [
                  "address"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Token Rug Check result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verdict": {
                      "type": "string"
                    },
                    "concentration": {
                      "type": "object"
                    },
                    "flags": {
                      "type": "array"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - missing/invalid input."
          },
          "402": {
            "description": "Payment Required (x402, USDC on Base)."
          }
        }
      }
    },
    "/api/trending": {
      "post": {
        "operationId": "trending",
        "summary": "Trending Tokens",
        "description": "Trending tokens on Robinhood Chain by 24h volume: meme/community tokens pumping right now. Stablecoins and wrapped tokens are excluded; Stock Tokens excluded unless includeStock=true. Body: { limit?, includeStock? }.",
        "x-agent-guidance": {
          "whenToUse": "Use when the user asks what is hot/pumping on Robinhood Chain right now, or to surface meme tokens by activity. Combine with /api/rugcheck to check safety before acting, since high volume can include wash trading.",
          "input": "POST JSON: { limit? (1-50), includeStock? }.",
          "output": "tokens[] ranked by volume24hUsd, each with symbol, name, address, holders, marketCapUsd, priceUsd.",
          "paymentFlow": "First call returns HTTP 402 with an x402 payment requirement (USDC on Base). Pay with an x402 client, then retry to get 200."
        },
        "x-payment-info": {
          "x402Version": 2,
          "price": {
            "mode": "fixed",
            "amount": "0.008",
            "currency": "USD"
          },
          "protocols": [
            "x402"
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "number"
                  },
                  "includeStock": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Trending Tokens result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "number"
                    },
                    "tokens": {
                      "type": "array"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - missing/invalid input."
          },
          "402": {
            "description": "Payment Required (x402, USDC on Base)."
          }
        }
      }
    },
    "/api/burn": {
      "post": {
        "operationId": "burn",
        "summary": "Token Burn Stats",
        "description": "Burn stats for a token on Robinhood Chain: amount sent to burn addresses (0x0 and 0x...dEaD) and the percentage of total supply burned. Body: { address }.",
        "x-agent-guidance": {
          "whenToUse": "Use to check how much of a token's supply has been burned (deflationary signal) before evaluating a meme or community token. Pair with /api/rugcheck for a fuller safety read.",
          "input": "POST JSON: { address (token 0x...) }.",
          "output": "burnedAmount, burnedPct, totalSupply, burnAddresses[].",
          "paymentFlow": "First call returns HTTP 402 with an x402 payment requirement (USDC on Base). Pay with an x402 client, then retry to get 200."
        },
        "x-payment-info": {
          "x402Version": 2,
          "price": {
            "mode": "fixed",
            "amount": "0.005",
            "currency": "USD"
          },
          "protocols": [
            "x402"
          ],
          "network": "eip155:8453",
          "asset": "USDC",
          "payTo": "0xcd6b6d99b7751ff30b68fa1365488eb73fa7cefa"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "address": {
                    "type": "string"
                  }
                },
                "required": [
                  "address"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Token Burn Stats result.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "burnedAmount": {
                      "type": "number"
                    },
                    "burnedPct": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request - missing/invalid input."
          },
          "402": {
            "description": "Payment Required (x402, USDC on Base)."
          }
        }
      }
    }
  }
}