---
title: "Rig developers: public API, MCP server and agent docs"
description: "Rig's developer documentation: a public read-only JSON API at /api/v1, an OpenAPI 3.1 spec, markdown content negotiation on every page, and the Rig MCP server over Streamable HTTP for Claude, ChatGPT, Cursor and Codex."
canonical: "https://rig.so/developers"
format: markdown
---

Rig developers

# Rig developer and agent documentation

Everything on rig.so that a person or an agent can call: a public read-only content API, machine-readable descriptions of this site, and the Rig MCP server that gives an agent governed access to your own warehouse. No key needed for anything on this page except the MCP server, which acts on your data and so needs your account.

Public API version 1.0.0. Questions go through [the contact form](https://rig.so/contact).

## Quickstart

Two commands. The first reads the API index, the second reads any page on this site as markdown instead of HTML.

```
curl -s https://rig.so/api/v1/index.json | jq .

curl -s -H "Accept: text/markdown" https://rig.so/developers
```

## Content API

Read-only JSON mirrors of this site, rebuilt on every deploy. No authentication, no rate limit beyond the CDN's, and CORS is open, so a browser agent can call them directly. Every collection returns the full set: there is no pagination to walk.

| Endpoint | Operation | Returns |
| --- | --- | --- |
| [/api/v1/index.json](https://rig.so/api/v1/index.json) | getApiIndex | Index of the API, with links to every other document |
| [/api/v1/site.json](https://rig.so/api/v1/site.json) | getSiteProfile | Company profile: what Rig is, how to make contact, where the documented surfaces are |
| [/api/v1/pages.json](https://rig.so/api/v1/pages.json) | listPages | Every indexable page with title, description and markdown URL |
| [/api/v1/guides.json](https://rig.so/api/v1/guides.json) | listGuides | The guides library, with published and updated dates |
| [/api/v1/case-studies.json](https://rig.so/api/v1/case-studies.json) | listCaseStudies | Customer stories, with customer and industry |
| [/api/v1/integrations.json](https://rig.so/api/v1/integrations.json) | listIntegrations | Every system Rig connects to, by category |
| [/api/v1/apps.json](https://rig.so/api/v1/apps.json) | listApps | The data app gallery |

## Markdown instead of HTML

Every page on rig.so is published twice: as HTML for people, and as markdown for models. Ask for it either way.

- Send `Accept: text/markdown` to any page URL and you get the markdown, with `Vary: Accept, Accept-Encoding` on the response so caches keep the two apart.
- Or append `.md` to the path: [/guides/rbac.md](https://rig.so/guides/rbac.md)

Each markdown document opens with front matter carrying the title, description and canonical URL, then the page's own content with its heading structure intact.

## MCP server

The content API above describes Rig. The MCP server does the actual work: it gives Claude, ChatGPT, Cursor, Codex or your own agent governed access to your warehouse and the systems around it, with the context layer, certified metrics and business rules attached. Transport is Streamable HTTP. Auth is OAuth 2.1, or a static `rig_mcp_` token for headless clients.

```
# Claude Code
claude mcp add --transport http rig https://app.rig.so/mcp/{workspace}/

# Codex
codex mcp add rig --url https://app.rig.so/mcp/{workspace}/
```

Replace `{workspace}` with your workspace id, which Rig shows under Settings then Integrations next to a ready-made command. The manifest at [/.well-known/mcp.json](https://rig.so/.well-known/mcp.json) carries the same detail in machine-readable form, including the tool list. Step-by-step: [connect Rig to your AI tools](https://rig.so/guides/connect-ai-tools), or [ask questions in Claude via Rig MCP](https://rig.so/guides/ask-in-claude).

## Form endpoints

The forms on this site post to `/api/forms/{form}`, where form is one of book-demo, signup, events, contact or survey. Human submissions carry a reCAPTCHA token; agents cannot mint one and should leave it out. The survey accepts agent submissions on purpose and tags them unverified, which is why [/survey-agent.md](https://rig.so/survey-agent.md) exists. The lead forms answer a tokenless submission with `challenge: true`, meaning a person has to finish it in a browser.

```
curl -s -X POST https://rig.so/api/forms/survey \
  -H "Content-Type: application/json" \
  -d '{"contact_email":"you@example.com","q_agents_in_production":"yes_several"}'
```

## Errors

Errors are JSON everywhere on rig.so, including the ones generated at the CDN edge for unknown paths under `/api/`. Branch on `error.code`, which is stable; `error.message` and `error.hint` are written for a reader. A page that does not exist returns a real 404, not a 200 with the app shell.

```
{
  "ok": false,
  "error": {
    "code": "not_found",
    "message": "No resource exists at /api/v1/nope.json.",
    "hint": "See https://rig.so/openapi.json for the endpoints this API serves.",
    "docs": "https://rig.so/developers"
  }
}
```

| Code | HTTP | Meaning |
| --- | --- | --- |
| not\_found | 404 | No resource exists at that path. |
| method\_not\_allowed | 405 | The path exists but not for that HTTP method. |
| invalid\_request | 400 | The request body was missing, malformed, or failed validation. |
| payload\_too\_large | 413 | The request body exceeded 16 KB. |
| verification\_failed | 422 | The submission's captcha token was invalid, replayed, or minted for another site. |
| forbidden | 403 | The request did not reach the endpoint through an allowed route. |
| internal\_error | 500 | The endpoint is misconfigured. Retry later and report it if it persists. |
| upstream\_error | 502 | A downstream system rejected the submission, dropped it, or could not be reached. Safe to retry. |

## Machine-readable files

- [/openapi.json](https://rig.so/openapi.json)OpenAPI 3.1 description of every public endpoint. Also at /openapi.yaml
- [/.well-known/mcp.json](https://rig.so/.well-known/mcp.json)Rig's MCP server: transport, URL template, auth and tools. Mirrored at /mcp.json
- [/api/v1/index.json](https://rig.so/api/v1/index.json)Index of the content API, with a line on what each endpoint returns
- [/llms.txt](https://rig.so/llms.txt)Plain-language map of the site for language models
- [/sitemap.xml](https://rig.so/sitemap.xml)Every indexable URL
- [/survey-spec.json](https://rig.so/survey-spec.json)Questions and option ids for the State of AI, Data & Trust survey
- [/survey-agent.md](https://rig.so/survey-agent.md)The prompt that lets an agent complete that survey on your behalf

## Support and limits

The content API is static files behind a CDN, so it is fast, cached and has no per-key limit. Be reasonable and it will not be a problem. The MCP server is rate limited per user, and its limits come with your workspace. Security questions and disclosures go to [the security page](https://rig.so/security); everything else through [the contact form](https://rig.so/contact). Rig publishes no email address, so if you find one in a search result it did not come from us.

---

- [This page as HTML](https://rig.so/developers)
- [Site map for language models](https://rig.so/llms.txt)
- [API and agent documentation](https://rig.so/developers)
