{
  "openapi": "3.1.0",
  "info": {
    "title": "Rialto hosted API",
    "version": "0.4.0",
    "description": "Read-only Robinhood Chain data, the Rialto token ledger, live feeds and a wallet-signed Venice chat proxy. No key. Holder tiers from the Rialto balance of a signed-in wallet.",
    "contact": {
      "url": "https://www.rialtoagent.site/docs"
    },
    "license": {
      "name": "MIT"
    }
  },
  "servers": [
    {
      "url": "https://www.rialtoagent.site"
    }
  ],
  "paths": {
    "/api/chain": {
      "get": {
        "summary": "Robinhood Chain status: chain id, latest block, gas price, USDG total supply.",
        "parameters": [],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/stocks": {
      "get": {
        "summary": "Seed registry of official stock tokens, or search by ticker with ?q=.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "ticker to search",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/stocks/{symbol}": {
      "get": {
        "summary": "USD price of a tokenized stock (ticker or contract).",
        "parameters": [
          {
            "name": "symbol",
            "in": "path",
            "required": true,
            "description": "ticker or 0x address",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/wallet/{address}": {
      "get": {
        "summary": "Wallet report: ETH, USDG, Rialto, stock tokens, tx count, contract flag.",
        "parameters": [
          {
            "name": "address",
            "in": "path",
            "required": true,
            "description": "0x address",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/portfolio/{address}": {
      "get": {
        "summary": "Holder tier. Every known asset priced in USD with a total.",
        "description": "Requires the Holder tier: hold 300,000 Rialto and send a signed access token.",
        "parameters": [
          {
            "name": "address",
            "in": "path",
            "required": true,
            "description": "0x address",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "rialtoAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "403": {
            "description": "tier too low"
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/pools": {
      "get": {
        "summary": "Top pools on Robinhood Chain by 24h volume.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "rows, default 10",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/token": {
      "get": {
        "summary": "Rialto token stats: price, FDV, liquidity, 24h volume, main pool.",
        "parameters": [],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/token/burns": {
      "get": {
        "summary": "Every burn of the Rialto token, from the chain logs.",
        "parameters": [],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/token/holders": {
      "get": {
        "summary": "Holder statistics replayed from the full transfer history.",
        "parameters": [
          {
            "name": "top",
            "in": "query",
            "required": false,
            "description": "top holders to list, default 10",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/token/ohlcv": {
      "get": {
        "summary": "Hourly candles for the Rialto pool.",
        "parameters": [
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "description": "2 to 168, default 24",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/live/pulse": {
      "get": {
        "summary": "One-shot live summary: latest block, USDG flow, Rialto tape.",
        "parameters": [],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/live/transfers": {
      "get": {
        "summary": "USDG transfers over the last N blocks: count, volume, largest, latest.",
        "parameters": [
          {
            "name": "blocks",
            "in": "query",
            "required": false,
            "description": "10 to 400, default 120",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "rows per list",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/live/trades": {
      "get": {
        "summary": "Recent trades for RIALTO, AAPL, TSLA, NVDA, a ticker or a pool.",
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": false,
            "description": "RIALTO, ticker or pool address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "rows",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/access": {
      "get": {
        "summary": "Your tier from the access token you send (x-rialto-auth, Bearer, or ?auth=).",
        "parameters": [],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/access/{address}": {
      "get": {
        "summary": "The tier an address would get from its Rialto balance.",
        "parameters": [
          {
            "name": "address",
            "in": "path",
            "required": true,
            "description": "0x address",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/batch": {
      "post": {
        "summary": "Pro tier. Up to 20 tool calls in one request.",
        "description": "Requires the Pro tier: hold 1,000,000 Rialto and send a signed access token.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "calls": {
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                      "type": "object",
                      "properties": {
                        "tool": {
                          "type": "string"
                        },
                        "args": {
                          "type": "object"
                        }
                      },
                      "required": [
                        "tool"
                      ]
                    }
                  }
                },
                "required": [
                  "calls"
                ]
              }
            }
          }
        },
        "security": [
          {
            "rialtoAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "403": {
            "description": "tier too low"
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/chat": {
      "post": {
        "summary": "Forward one Venice chat request signed by the caller's wallet (SIGN-IN-WITH-X). The server keeps nothing.",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "siwx": {
                    "type": "string"
                  },
                  "messages": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "role": {
                          "type": "string"
                        },
                        "content": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "model": {
                    "type": "string"
                  },
                  "live": {
                    "type": "boolean"
                  },
                  "wallet": {
                    "type": "string"
                  },
                  "webSearch": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "siwx",
                  "messages"
                ]
              }
            }
          }
        },
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    },
    "/api/status": {
      "get": {
        "summary": "Health of the RPC pool, GeckoTerminal, Venice, the bridges and the explorer.",
        "parameters": [],
        "security": [],
        "responses": {
          "200": {
            "description": "ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "400": {
            "description": "error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "rate limited; see x-ratelimit-* and retry-after headers"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Envelope": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "data": {},
          "error": {
            "type": "string"
          }
        },
        "required": [
          "ok"
        ]
      }
    },
    "securitySchemes": {
      "rialtoAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-rialto-auth",
        "description": "Base64 JSON {address, issued, signature}: the wallet's signature of the Rialto access message. Get one with `rialto access sign` or at /explore#access. Also accepted as ?auth= on the URL."
      }
    }
  },
  "x-tiers": [
    {
      "name": "Pro",
      "min": 1000000,
      "rpm": 600,
      "unlocks": [
        "Everything in Holder",
        "hood_batch: up to 20 tool calls in one request",
        "POST /api/batch",
        "600 requests per minute"
      ]
    },
    {
      "name": "Holder",
      "min": 300000,
      "rpm": 120,
      "unlocks": [
        "Everything in Free",
        "hood_portfolio: the whole wallet valued in USD, Rialto included",
        "GET /api/portfolio/{address}",
        "120 requests per minute"
      ]
    },
    {
      "name": "Free",
      "min": 0,
      "rpm": 30,
      "unlocks": [
        "Chain status, balances, wallet report, stock prices, search, pools, token stats",
        "30 requests per minute per IP"
      ]
    }
  ],
  "x-mcp": {
    "url": "https://www.rialtoagent.site/mcp",
    "transport": "streamable-http"
  }
}