
# MCP tools

**One endpoint, the whole Relaystation toolkit.** Point your MCP client at

```
https://api.relaystation.ai/mcp
```

and your agent sees the entire cputools catalog — 88 tools across PDF, CSV, image, codes, utils, generate, archive, data, text, and pipeline — alongside Relaystation's other primitives (e-sign, ID verification, Courier messaging, chassis), all funded from **one balance** with **one API key** (the shared endpoint surfaces 129 tools in total). No separate endpoint per product; no per-tool signup. Same auth, same per-call prices as the HTTP API — the MCP tool call runs the identical billing path, so you pay exactly what the route charges.

## The cputools tools

Each tool's manifest `description` states its billing unit, the launch price, and its caps, and notes that an unauthenticated probe returns a live `402` price quote — so your agent can choose and budget without leaving the client. Every file-taking tool accepts `{ inline }` base64 (≤ 4 MB) or `{ inputKey }` from `cputools_upload_url` (≤ 50 MB).

**PDF** — `pdf_merge`, `pdf_split`, `pdf_rotate`, `pdf_pages`, `pdf_watermark`, `pdf_form` ($0.001/page); `pdf_extract_text` ($0.002/page); `pdf_metadata` ($0.001 flat); `pdf_encrypt`, `pdf_decrypt`, `pdf_compress` ($0.001/page); `pdf_render` ($0.001/output page, ≤ 40 pages / ≤ 300 DPI); `pdf_ocr` ($0.003/page, ≤ 5 pages synchronous); `pdf_from_html` ($0.003 flat — HTML→PDF on a sandboxed headless Chromium: no network, no JS, inline assets only); `pdf_from_office` ($0.005 flat — Office→PDF via LibreOffice: docx/xlsx/pptx/odt/ods/odp/rtf/txt/csv, ≤ 30 MB, pay only for a delivered PDF); `pdf_images` ($0.001/page — extract embedded images, ≤ 200), `pdf_diff` ($0.001/page — text compare, billed on both); `pdf_bookmarks`, `pdf_attachments` ($0.001 flat — read outline / list-extract attachments).

**CSV** — `csv_convert`, `csv_dedupe`, `csv_select` ($0.0002/MB, min 1 MiB).

**Image** — `image_resize`, `image_convert`, `image_compress`, `image_rotate`, `image_crop`, `image_blur`, `image_sharpen`, `image_grayscale`, `image_exif_strip`, `image_composite`, `image_contact_sheet` ($0.0003/MP); `image_metadata`, `image_dominant_color` ($0.0005 flat).

**Codes** — `qr_generate`, `barcode_generate`, `codes_qr_decode`, `codes_color_convert` ($0.0002 flat; qr/barcode data ≤ 4096 chars).

**Utils** — `utils_hash`, `utils_hmac`, `utils_base64` ($0.0002/MB, min 1 MiB); `utils_uuid`, `utils_jwt_decode`, `utils_jwt_verify` ($0.0001 flat; uuid count ≤ 1000; jwt-verify is alg-pinned and never logs your key).

**Generate** — `generate_og_image` ($0.0005 flat, one OG template); `generate_mock_data`, `generate_invoice`, `generate_chart`, `generate_qr_logo`, `generate_favicon`, `generate_placeholder`, `generate_identicon` ($0.0002 flat; mock-data rows ≤ 1000 / fields ≤ 50; invoice ≤ 100 line items; chart ≤ 50 points; identicon is deterministic per seed).

**Archive** — `archive_zip`, `archive_unzip`, `archive_gzip` ($0.0002/MB of input, min 1 MiB; `archive_unzip` is zip-bomb-guarded — ≤ 128 MiB uncompressed, encrypted rejected, one level — and bills the compressed input).

**Data** — `data_filter`, `data_sort`, `data_groupby`, `data_join`, `data_union`, `data_profile`, `data_cast`, `data_pivot`, `data_schema_infer`, `data_validate`, `data_diff`, `data_from_xlsx`, `data_to_xlsx`, `data_derive`, `data_fillna`, `data_dropna`, `data_rename`, `data_slice`, `data_explode`, `data_sample` ($0.0002/MB, min 1 MiB; `data_from_xlsx`/`data_to_xlsx` are Excel in/out, `data_to_xlsx` formula-injection-safe; `data_filter`/`data_derive` are structured no-eval; `data_validate`'s pattern is a bounded regex; `data_join`/`data_union`/`data_diff` are output-byte-capped; `data_sample` takes n|fraction with a reproducible seed); `data_sql` ($0.0005/MB — full SQL on a sandboxed **read-only** DuckDB: no filesystem, network, or extension access).

**Text** — `text_case`, `text_slugify`, `text_diff`, `text_count`, `text_regex_extract`, `text_template`, `text_markdown_to_html`, `text_html_to_text`, `text_sanitize_html` ($0.0002/MB, min 1 MiB; `text_regex_extract` is ReDoS-guarded; `text_template` is no-eval; `text_markdown_to_html`/`text_sanitize_html` whitelist-sanitize the HTML — no script/`javascript:`/`data:`).

**Pipeline** — `pipeline_run` (compose a chain of cputools transforms in one call; threaded step-to-step; billed as the **sum of the steps**; atomic — a failed step refunds the whole run).

**Upload** — `cputools_upload_url` (free) mints a presigned POST for the > 4 MB path and returns an `inputKey` to pass to any file-taking tool.

`tools/list` on the endpoint also surfaces Relaystation's chassis + Courier tools, the e-sign (`esigndoc_*`) and ID-verification (`idverify_*`) product tools, and the `relaystation_products` meta-tool (which lists every Relaystation product MCP). One key, one balance, the whole set.

## Auth

A tool call carries your credential one of three ways, and inherits the same billing as the HTTP route (your balance is debited per call):

- **API key** — `Authorization: Bearer rs_live_<key>`, or `?key=rs_live_<key>` on the URL (handy for clients without a header field).
- **x402** — an `X-Payment` header per call (the no-account lodestone path).
- **OAuth agent-login** — the client runs the OAuth consent dance on connect; the resulting token carries the `products:call` scope.

`tools/list` is browsable as soon as any credential is present; billable tool calls debit the resolved customer.

## Install — Claude Code & Claude Desktop

In your config (`~/.config/claude-code/mcp.json`, the workspace `.mcp.json`, or Claude Desktop's `claude_desktop_config.json`), add:

```json
{
  "mcpServers": {
    "relaystation": {
      "url": "https://api.relaystation.ai/mcp",
      "headers": {
        "Authorization": "Bearer rs_live_<your-key>"
      }
    }
  }
}
```

Restart the client; the cputools roster appears alongside the rest of the Relaystation tools. Mint a key at [app.relaystation.ai](https://app.relaystation.ai) or via `POST /v1/account/keys`.

## Install — Cursor, Codex, Cline, Continue

The same MCP server URL applies. Each client has its own config location (Cursor: Settings → MCP; Codex: workspace config; Cline / Continue: extension settings), but the shape is identical — URL `https://api.relaystation.ai/mcp` plus the `Authorization: Bearer rs_live_<key>` header.

## Install — Cowork

In Cowork: **Settings → Connectors → Add connector.** Paste the URL with your key as a query parameter (Cowork's connector flow has no separate header field):

```
https://api.relaystation.ai/mcp?key=rs_live_<your-key>
```

Enable "always allow" and the cputools tools surface in Cowork's picker; tool calls land authenticated and debit your balance.

> **⚠️ Treat the whole URL as sensitive.** The `?key=` query string carries your `rs_live_*` credential, so anywhere the URL ends up — browser history, terminal scrollback, screenshots — is somewhere your key has been. If it leaks, revoke that key from the dashboard and mint a fresh one (your balance and cap are unaffected; only the leaked credential becomes invalid). Per-key daily spend caps bound the exposure.

## Chassis MCP concepts

The MCP protocol, authentication, and discovery model are shared across every Relaystation product and documented on the apex docs:

- [MCP](https://relaystation.ai/docs/mcp) — the Relaystation MCP service, manifest discovery, and the auth header shapes.
- [Authentication](https://relaystation.ai/docs/authentication) — API key, wallet JWT, and x402 per-call paths.
- [x402 wire format](https://relaystation.ai/docs/x402) — the per-call payment authorization.

## Next

[Overview](/docs/cputools-overview) · [PDF tools](/docs/pdf-tools) · [CSV tools](/docs/csv-tools) · [Image tools](/docs/image-tools) · [QR & barcode](/docs/qr-tools) · [Utils tools](/docs/utils-tools) · [Generate tools](/docs/generate-tools) · [Archive tools](/docs/archive-tools) · [Data tools](/docs/data-tools) · [Data — SQL](/docs/data-sql) · [Pipeline](/docs/pipeline) · [Pricing](/pricing) · [API reference](/api-reference)
