# Halo for developers > Halo is a business intelligence platform. Developers read its datasets, charts and reports through a read-only REST API with an API key, embed reports with signed tokens, and connect AI tools through its MCP server. Every guide in one file: https://dev.usehalo.net/llms-full.txt Never put an API key in a prompt, a URL, browser code or a repository. Read it from the environment. ## Reference - [OpenAPI document](https://dev.usehalo.net/openapi.json): every Developer API and public report operation - [API reference](https://dev.usehalo.net/reference) - [MCP tools](https://dev.usehalo.net/reference/mcp) ## Get started - [Quickstart](https://dev.usehalo.net/start/quickstart): Get an API key, list your datasets, describe one, query it and read the answer, in about five minutes. - [Authentication](https://dev.usehalo.net/start/authentication): Every credential Halo issues, which to use when, the header they go in, what scopes do, and how an API key acts as its person. - [API keys](https://dev.usehalo.net/start/api-keys): Turn on the API, make a key, pick its scopes and expiry, store it, roll it with a 24-hour overlap, revoke it, and know what stops it and what to do if one leaks. - [Choose an integration](https://dev.usehalo.net/start/choose-an-integration): REST API, signed embed, public link or MCP server. A decision table for what each is for and who it reads as, with one example of each. ## REST API guide - [Query data](https://dev.usehalo.net/rest-api/querying-data): The whole query body of the Developer API, from dimensions, measures and filters to paging, counts, totals and time zones, and how to read the answer. - [Errors](https://dev.usehalo.net/rest-api/errors): The problem format the Developer API answers with, and every code it can return, with its status and what to do about it. - [Rate limits](https://dev.usehalo.net/rest-api/rate-limits): The Developer API's limits per key, person and address, requests running at once, the daily row budget, values by plan, Retry-After, reading your limits from whoami, and a backoff snippet. - [The security model](https://dev.usehalo.net/rest-api/security-model): What applies to every Developer API call, from the person reloaded as they are now to access levels, row policies, hidden fields, source errors and what Halo records. - [Webhooks](https://dev.usehalo.net/rest-api/webhooks): Halo posts to your address when something happens. Every event and its payload, how to check the signature, how retries work and how to drop repeats. - [Read websites and the directory](https://dev.usehalo.net/rest-api/read-websites-and-the-directory): Read your Halo CMS websites and your Halo CRM listings and businesses with an API key. What's in them, how to page, and what's left out on purpose. ## Embeds - [Signed embeds](https://dev.usehalo.net/embeds/signed-embeds): Show a Halo report inside your own product. Your server signs a short-lived token that names the report, its locked filters and the reader's attributes. - [The element](https://dev.usehalo.net/embeds/halo-report-element): Every attribute, method and event of the web component that embeds a Halo report, with the filter values it takes and the errors it reports. - [The public report API](https://dev.usehalo.net/embeds/public-api): The operations under /v1/public that public links and embeds call with a link's token or a signed token, what they answer, and the problems they can return. ## Halo MCP server - [How the MCP server works](https://dev.usehalo.net/mcp/mcp-overview): What Halo's MCP server is, its endpoint, tools and scopes, how it runs, its limits, and when to use it rather than the REST API. - [Connect a client](https://dev.usehalo.net/mcp/mcp-connect-clients): Connect Claude Code, Claude, Cursor, VS Code, the MCP Inspector or anything else to Halo's MCP server, with OAuth or a personal token. - [The MCP protocol](https://dev.usehalo.net/mcp/mcp-protocol): Raw JSON-RPC against Halo's MCP server with cURL. Required headers, tools/list, tools/call, the 401 challenge, the halo-data fence, limits, and how errors come back. - [Build an OAuth client](https://dev.usehalo.net/mcp/mcp-oauth-client): Sign people in to Halo's MCP server from your own client. Metadata discovery, registration, PKCE, consent, code exchange, token lifetimes, rotation and scopes, in TypeScript. - [Build an agent](https://dev.usehalo.net/mcp/mcp-build-an-agent): An agent in TypeScript that answers questions from Halo, using the MCP SDK and the Anthropic SDK in a manual tool loop, and treats what it reads as data. ## Integration guides - [Query Halo from a Python notebook](https://dev.usehalo.net/integrations/python-notebook): Pull a Halo query into a pandas DataFrame, with paging, retries and typed dates, ready to analyze in a notebook. - [Call Halo from a Node backend](https://dev.usehalo.net/integrations/node-backend): A small Node service that reads Halo on the server and serves your frontend, with the key kept private, a cache, retries and a cap on requests running at once. - [Sync rows on a schedule](https://dev.usehalo.net/integrations/scheduled-sync): A nightly job that copies a day's rows out of Halo with keyset paging, stays inside the row budget, resumes where it stopped, and keeps working as its key is rolled. - [Embed a report in Next.js](https://dev.usehalo.net/integrations/embed-nextjs): A Next.js route handler signs an embed token for the signed-in user, and a page shows the report with the halo-report element, each reader seeing their own rows. - [Post a weekly number to Slack](https://dev.usehalo.net/integrations/slack-digest): A small Go program that reads last week's revenue from Halo, compares it with the week before, and posts it to a Slack incoming webhook on a schedule. - [Send listings to Halo](https://dev.usehalo.net/integrations/send-listings-to-halo): Post events, places or offerings from your own system to a webhook source in Halo CRM. The token, the body, how repeats are handled, and what comes back. ## Tools and snippets - [The playground](https://dev.usehalo.net/tools/playground): Try the REST API, the MCP server and signed embed tokens in your browser. Sample data needs no account, a playground key reads your own organization, and you can paste a key of your own. - [OpenAPI and typed clients](https://dev.usehalo.net/tools/openapi-and-clients): Download Halo's OpenAPI file, generate a typed TypeScript client with openapi-typescript and openapi-fetch, or import it into Postman or Bruno. - [Snippets](https://dev.usehalo.net/tools/snippets): Copy-and-paste helpers for the Developer API in cURL, JavaScript, Python and Go. The auth header, keyset paging, and retries that follow Retry-After. - [Use Halo with coding agents](https://dev.usehalo.net/tools/coding-agents): Point Cursor or Claude Code at these docs with llms.txt, connect the Halo MCP server so they can see your data, and keep keys out of prompts and repositories.