# SQD Documentation > Onchain data from 120+ networks over plain HTTP. Query the Portal API directly, connect an MCP server, or build a TypeScript indexer with the Pipes or Squid SDK and deploy it on SQD Cloud. ## When to use SQD Reach for SQD when you need blockchain data and do not want to run a node, an archive, or an indexer: - **Historical data over a block range.** Decoded EVM logs and transactions, Solana instructions, Bitcoin transactions and their inputs and outputs, Substrate events and calls, Tron transactions, or Hyperliquid fills. A request names an arbitrary range rather than a page, but see the continuation rule below: one response is a batch, not the whole range. - **The same window across several chains.** Block numbers are not comparable between networks, so resolve a timestamp to a block per chain with `resolveTimestampToBlock`, then query each dataset over its own range. - **Following the chain head.** The stream endpoints serve unfinalized blocks and signal reorgs with a 409, so a consumer can rewind rather than silently diverge. - **Feeding a database.** The Pipes SDK writes to ClickHouse, PostgreSQL, BigQuery, or Parquet. The Squid SDK generates a GraphQL API over PostgreSQL. Do not reach for SQD to read contract state. The Portal serves what the chain recorded, not reconstructed state: there is no balance-at-block or `balanceOf` call. Derive balances from transfer and state-diff data, or use an RPC node. ## How an agent calls it - **HTTP.** `POST https://portal.sqd.dev/datasets/{dataset}/stream` with a JSON body naming a `type`, a block range, and the fields to return. Responses are JSON Lines, read incrementally. Enumerate datasets with `GET https://portal.sqd.dev/datasets`. - **Continuation, which is not optional.** One response is a batch, not the whole range. It can stop at any point: a worker boundary, a recycled connection, or the dataset head. Asking for blocks 18000000 to 19000000 returns roughly the first two thousand of them. Read the last block number `N` in the response, re-request with `fromBlock` set to `N + 1` and the same `toBlock`, filters and fields, and loop until you reach `toBlock` or receive a 204. A client that treats one response as the answer silently drops most of the range. - **MCP.** Connect `https://portal.sqd.dev/mcp` over streamable HTTP for 28 tools covering queries, analytics, wallet summaries, and OHLC series. - **Errors.** Every failing status returns `{"error":{"type","code","message"}}`. Match on `error.code`, never on the message text. A bad field name is answered with the accepted set, which is useful when you are exploring by hand, but it arrives inside that prose message: to check a field list programmatically, read https://docs.sqd.dev/openapi.json instead. - **Markdown.** Append `.md` to any page URL on this site to get its source. ## Developer resources - [Developer resources](https://docs.sqd.dev/developers): Every developer surface in one place, plus how to reach the people who run it. - [Portal API OpenAPI specification](https://docs.sqd.dev/openapi.json): Machine-readable description of all eight Portal endpoints, with an operationId, typed parameters, and response schemas on each. - [Portal MCP Server](https://docs.sqd.dev/en/ai/mcp-server): MCP server exposing Portal data as agent tools, at https://portal.sqd.dev/mcp. - [Documentation MCP Server](https://docs.sqd.dev/en/ai/mcp-server-docs): MCP server for searching this documentation. - [Portal API reference](https://docs.sqd.dev/en/api/evm/introduction): Every endpoint with request and response schemas and a live playground. - [Agent resource catalog](https://docs.sqd.dev/.well-known/ai-catalog.json): Discovery document listing the MCP server, the specification, and the agent skill. - [Agent skill](https://docs.sqd.dev/.well-known/agent-skills/sqd/skill.md): skill.md describing what agents can build with SQD. - [Versioning and rate limits](https://docs.sqd.dev/en/portal/introduction/versioning): How the Portal API changes, how deprecations are signalled, and how to throttle. - [All networks](https://docs.sqd.dev/en/data/all-networks): Every dataset the Portal serves, with its ecosystem and start block. ## Start here - [Portal quickstart](https://docs.sqd.dev/en/portal/evm/quickstart.md): First query against the Portal API over plain HTTP. - [Pipes SDK quickstart](https://docs.sqd.dev/en/sdk/pipes-sdk/evm/quickstart.md): Build a typed streaming indexer in TypeScript. - [Squid SDK quickstart](https://docs.sqd.dev/en/sdk/squid-sdk/evm/quickstart.md): Build an indexer that serves a generated GraphQL API. - [SDK overview](https://docs.sqd.dev/en/sdk/overview.md): Which of the three ways to consume Portal data fits a given job. - [Cloud overview](https://docs.sqd.dev/en/cloud/overview.md): Deploy and operate an indexer without managing infrastructure. ## Access The public Portal at `https://portal.sqd.dev` is shared capacity, intended for development and bounded evaluation. Authenticated and dedicated portals take an API key as `Authorization: Bearer ` or in the `x-api-key` header; paths and payloads are identical either way. - [Portal pricing](https://docs.sqd.dev/en/portal/pricing.md): Two free plans for development and evaluation, Starter at $99 a month, Growth at $499 a month, and custom Enterprise, with limits and add-ons. ## Full index - [Full text of every page](https://docs.sqd.dev/llms-full.txt): The entire documentation in one file.