---
title: PlainRouter developer resources
description: Official index for PlainRouter API documentation, OpenAPI, OAuth, MCP, webhooks, SDKs, CLI, sandbox, and agent-readable resources.
last_updated: 2026-08-26
---

# PlainRouter developer resources: API docs, OpenAPI, MCP, auth, and webhooks

This is the official developer-resource index for PlainRouter. Use it to find the public API documentation, machine-readable OpenAPI specification, OAuth and MCP connection guide, webhook reference, SDK guides, and agent-readable indexes by product name.

## API and CLI quickstart

### Generate clients from the OpenAPI contract

PlainRouter publishes its canonical signed OpenAPI 3.1 document at [https://plainrouter.com/openapi.json](https://plainrouter.com/openapi.json). Pass that public JSON URL directly to your OpenAPI client generator, or download a local copy:

```bash
curl --fail --location https://plainrouter.com/openapi.json --output plainrouter.openapi.json
```

### Install the PlainRouter CLI

The official CLI is published on npm as [`@plainrouter/cli@0.5.0`](https://www.npmjs.com/package/@plainrouter/cli). Install it globally, then verify the `plainrouter` executable:

```bash
npm install --global @plainrouter/cli@0.5.0
plainrouter --help
```

Continue with the [PlainRouter CLI quickstart](https://plainrouter.com/docs/cli/quickstart). Use `--json` when an agent or script needs machine-readable command output.

Homebrew users can install the same CLI release from the official tap:

```bash
brew install plainrouter/tap/plainrouter
```

## Predictable developer entry points

These stable, product-named routes make PlainRouter's integration resources discoverable without prior knowledge of the canonical implementation paths. Each entry point permanently redirects to the current canonical resource.

| Resource                   | Predictable entry point                                                                        | Canonical resource                                                                                                      |
| -------------------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| PlainRouter API docs       | [plainrouter.com/developers/api](https://plainrouter.com/developers/api)                       | [plainrouter.com/docs/reference/conversion-api](https://plainrouter.com/docs/reference/conversion-api)                  |
| PlainRouter authentication | [plainrouter.com/developers/authentication](https://plainrouter.com/developers/authentication) | [plainrouter.com/docs/auth](https://plainrouter.com/docs/auth)                                                          |
| PlainRouter webhooks       | [plainrouter.com/developers/webhooks](https://plainrouter.com/developers/webhooks)             | [PlainRouter Stripe webhook guide](https://plainrouter.com/docs/signals/track-events#verify-stripe-checkout-settlement) |
| PlainRouter OpenAPI guide  | [plainrouter.com/developers/openapi](https://plainrouter.com/developers/openapi)               | [PlainRouter OpenAPI guide](https://plainrouter.com/docs/reference/conversion-api#use-the-signed-openapi-contract)      |
| PlainRouter OpenAPI JSON   | [plainrouter.com/developers/openapi.json](https://plainrouter.com/developers/openapi.json)     | [plainrouter.com/openapi.json](https://plainrouter.com/openapi.json)                                                    |
| PlainRouter MCP server     | [plainrouter.com/developers/mcp](https://plainrouter.com/developers/mcp)                       | [plainrouter.com/docs/reference/mcp-tools](https://plainrouter.com/docs/reference/mcp-tools)                            |

## Self-serve API onboarding

- [Run the zero-auth PlainRouter sandbox](https://plainrouter.com/api/v1/sandbox) — make a successful API call without an account, API key, or human step.
- Self-serve a short-lived sandbox API key with [`GET https://plainrouter.com/api/v1/sandbox/keys`](https://plainrouter.com/api/v1/sandbox/keys), which also accepts `POST`. The JSON response returns the key and a ready-to-run authenticated sandbox request. The sandbox discovery document embeds a live key already, so one `GET` is enough.
- [Create a free PlainRouter account](https://plainrouter.com/register) — registration is self-serve; no contact-sales form is required.
- After connecting an advertising account, a workspace admin can issue, scope, rotate, and revoke production API tokens from the dashboard.

## Developer documentation

- [PlainRouter documentation](https://plainrouter.com/docs) — guides for Signals, Actions, Launch, SDKs, CLI, REST, and MCP.
- [PlainRouter Conversion API documentation](https://plainrouter.com/api/docs) — endpoints, authentication, rate limits, idempotency, errors, pagination, and versioning.
- [PlainRouter API versioning policy](https://plainrouter.com/api/versioning) — compatibility and deprecation rules.

## Machine-readable API resources

- [PlainRouter OpenAPI 3.1 specification](https://plainrouter.com/openapi.json) — the signed machine-readable Conversion API contract.
- [PlainRouter API catalog](https://plainrouter.com/.well-known/api-catalog) — RFC 9727 links for API entry points, documentation, and the OpenAPI service description.
- [PlainRouter API resource index](https://plainrouter.com/api/llms.txt) — compact agent-readable API discovery.

## MCP server and authentication

- MCP Streamable HTTP endpoint: `https://plainrouter.com/mcp`
- [PlainRouter MCP server manifest](https://plainrouter.com/.well-known/mcp)
- [PlainRouter MCP server card](https://plainrouter.com/.well-known/mcp/server-card.json)
- [PlainRouter OAuth and MCP authentication](https://plainrouter.com/auth.md) — OAuth 2.1 discovery, PKCE, registration, human approval, scopes, errors, and revocation.
- MCP App resource: `ui://resources/account-state-app` — rendered by `get_account_state` through `_meta.ui.resourceUri` in MCP Apps-compatible clients.

PlainRouter MCP access always requires human authorization and remains bound to one approved advertising account. Agents can inspect approved context and propose governed work; consequential advertising actions remain subject to workspace policy and human approval.

## NLWeb natural-language discovery

PlainRouter exposes an unauthenticated NLWeb v0.55 conversational-search endpoint at `https://plainrouter.com/ask`. It searches only published PlainRouter product, developer, API, pricing, security, and contact resources; it does not access an advertising account, provider, workspace, or production data.

```bash
curl -X POST https://plainrouter.com/ask \
  -H 'Content-Type: application/json' \
  -d '{"query":{"text":"How do I integrate the PlainRouter API?"},"prefer":{"streaming":false}}'
```

The endpoint also accepts `GET /ask?query=...`. Default responses use NLWeb `conversational_search` JSON with `_meta.response_type`, `_meta.version`, a `SearchSummary`, and Schema.org-typed public-resource results.

For NLWeb SSE streaming, send `Accept: text/event-stream`, set `prefer.streaming` to `true` in a POST body, or append `streaming=true` to a GET request. The stream emits a `start` event, one `result` event per result, and a final `complete` event.

```bash
curl -N -X POST https://plainrouter.com/ask \
  -H 'Accept: text/event-stream' \
  -H 'Content-Type: application/json' \
  -d '{"query":{"text":"How does PlainRouter Signals work?"},"prefer":{"streaming":true}}'
```

## HTTP Message Signatures verification

- [PlainRouter HTTP Message Signatures key directory](https://plainrouter.com/.well-known/http-message-signatures-directory) — an Ed25519 JSON Web Key Set for verifying RFC 9421 signatures.
- The directory uses the emerging `application/http-message-signatures-directory+json` media type and publishes each key's JWK thumbprint as `kid` with explicit `nbf` and `exp` validity bounds.
- The directory response includes `Content-Digest`, `Signature-Input`, and `Signature` headers. Its published key actively verifies the directory response rather than serving as decorative metadata.

## Webhooks and official clients

- [PlainRouter webhook documentation](https://plainrouter.com/webhooks.md) — authenticated Stripe revenue-evidence webhooks and operational safety.
- [PlainRouter public SDK and agent-integration repository](https://github.com/plainrouter/sdk) — TypeScript and Python SDKs, CLI, coding-agent rules, Agent Plugin manifests, MCP configuration, and official Agent Skills.
- [PlainRouter TypeScript SDK `@plainrouter/sdk@0.5.0`](https://www.npmjs.com/package/@plainrouter/sdk) — install with `npm install @plainrouter/sdk@0.5.0`; read the [TypeScript SDK guide](https://plainrouter.com/docs/sdk/typescript).
- [PlainRouter CLI `@plainrouter/cli@0.5.0`](https://www.npmjs.com/package/@plainrouter/cli) — install with `npm install --global @plainrouter/cli@0.5.0` or `brew install plainrouter/tap/plainrouter`; read the [CLI quickstart](https://plainrouter.com/docs/cli/quickstart).
- [PlainRouter Python SDK `plainrouter==0.5.0`](https://pypi.org/project/plainrouter/) — install with `python -m pip install plainrouter==0.5.0`; read the [Python SDK guide](https://plainrouter.com/docs/sdk/python).
- [PlainRouter Go SDK `github.com/plainrouter/sdk-go@v0.5.0`](https://github.com/plainrouter/sdk-go) — install with `go get github.com/plainrouter/sdk-go@v0.5.0`; read the [Go SDK guide](https://plainrouter.com/docs/sdk/go).
- [PlainRouter Homebrew tap](https://github.com/plainrouter/homebrew-tap) — source and verification workflow for `brew install plainrouter/tap/plainrouter`.

## Agent plugins and skills

- [PlainRouter Claude Code Agent Plugin manifest](https://github.com/plainrouter/sdk/blob/main/.claude-plugin/plugin.json)
- [PlainRouter Codex Agent Plugin manifest](https://github.com/plainrouter/sdk/blob/main/.codex-plugin/plugin.json)
- [PlainRouter `get-ad-account-context` Agent Skill](https://github.com/plainrouter/sdk/blob/main/skills/get-ad-account-context/SKILL.md) — install with `npx skills add plainrouter/sdk`.
- [PlainRouter `verify-signal-ingestion` Agent Skill](https://github.com/plainrouter/sdk/blob/main/skills/verify-signal-ingestion/SKILL.md) — verify an identity-free Signal onboarding event and ledger receipt.
- [PlainRouter `propose-governed-ad-actions` Agent Skill](https://github.com/plainrouter/sdk/blob/main/skills/propose-governed-ad-actions/SKILL.md) — prepare evidence-backed proposals that remain gated by policy and human approval.
- [PlainRouter published Agent Skills index](https://plainrouter.com/.well-known/agent-skills/index.json) — three directly downloadable `SKILL.md` artifacts with SHA-256 digests.
- [PlainRouter shared MCP client configuration](https://github.com/plainrouter/sdk/blob/main/.mcp.json) — Streamable HTTP with OAuth scope `mcp:use`.

## Agent-readable indexes

- [PlainRouter llms.txt](https://plainrouter.com/llms.txt)
- [PlainRouter agent-mode overview](https://plainrouter.com/?mode=agent)
- [PlainRouter agent resource catalog](https://plainrouter.com/.well-known/ai-catalog.json)

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
