For developers · MCP + REST + Skills

The content API for AI agents.

TwinWrite ships as a remote MCP server, a REST API, and a Skills bundle. One key gates all three. Connect from Claude Code in 30 seconds and ship grounded, on-brand drafts straight from a tool call.

Same key for REST and MCP. Per-workspace, scoped to the whole workspace. SHA-256 hashed at rest. Full reference →

1 · 30-second setup

One line. Then prompt as normal.

Already in a Claude Code session? Run this and TwinWrite shows up as a first-class tool surface. The MCP transport is HTTP — no local process to babysit, no daemon to update.

bash · MCP install
# Install the remote MCP serverclaude mcp add twinwrite --url https://twinwrite.com/mcp --auth-token sk_live_…

Get a key from /dashboard/settings/api-keys after signup. The full sk_live_… token is shown once — copy it then and there. Lost keys are not recoverable; revoke and reissue.

2 · Skills install

Add the skill. Teach Claude to drive it.

The MCP server gives Claude the tools. The TwinWrite skill teaches Claude how to use them well — daily routines, campaign workflows, feed recipes. Skill files are served from /.well-known/skills/twinwrite/ and refresh whenever you re-run the install.

bash · Skill install
npx skills add -y https://twinwrite.com

Skills are optional — the MCP tools work without them. But adding the skill converts "draft a post" from a tool call into a one-shot routine that picks the feed, drafts, schedules, and reports back.

3 · Live example

"Draft 3 posts about my launch."

From a Claude Code prompt to scheduled drafts in two tool calls. The MCP tools mirror the REST surface 1:1, so the trace is the same whether Claude is driving or your own agent is.

prompt · paste into Claude Code
Use twinwrite to draft 3 LinkedIn posts about my product launch and schedule them for this week.
trace · tool calls + responses
# Claude Code's tool trace1. twinwrite.drafts_generate({     "source": { "topic": "my product launch" },     "count": 3   })   → { "ok": true, "drafts": [       { "id": "1d8b…", "status": "pending", "platform": "linkedin", … },       { "id": "1d8c…", "status": "pending", "platform": "linkedin", … },       { "id": "1d8d…", "status": "pending", "platform": "linkedin", … }     ]}2. twinwrite.drafts_schedule({     "draft_id": "1d8b…",     "scheduled_at": "2026-05-06T13:00:00Z"   })   → { "ok": true, "draft": { …, "status": "scheduled" } }   (Claude repeats step 2 for each accepted draft.)
4 · REST quickstart

Not on Claude Code? Use curl.

POST + JSON, bearer auth, sync responses. OpenAPI 3.1 spec is served at /api/v1/agent/openapi.json — generate SDKs at will. Errors return the same AgentApiError shape on REST and MCP.

bash · request
curl -X POST https://twinwrite.com/api/v1/agent/drafts.generate \  -H "Authorization: Bearer sk_live_…" \  -H "Content-Type: application/json" \  -d '{"source":{"topic":"my product launch"}}'
json · response
{  "ok": true,  "drafts": [    {      "id": "1d8b…",      "platform": "linkedin",      "status": "pending",      "locale": "en",      "body": "Three lessons from yesterday's launch post that …",      "thread_items": null,      "image_url": null,      "feed_item_id": null,      "campaign_id": null,      "scheduled_for": null,      "created_at": "2026-05-04T12:34:56Z"    }  ]}

Throttling adds Retry-After on REST and retry_after_seconds on both surfaces. The model can recover without a human in the loop.

5 · Full reference

Auto-generated. Always in sync.

Every endpoint, schema, and MCP tool — generated from the same source as the OpenAPI document. Adding a tool to the codebase ships the docs in the same deploy. tests/agent-mcp.test.ts guarantees REST and MCP never drift.

Agent API reference

MCP install · REST quickstart · auth · per-endpoint schemas · OpenAPI 3.1. One in-app docs page, no third-party developer portal.

Open /docs/agents
6 · Rate limits + pricing

Same plans. API access included.

No separate developer SKU. Whatever plan you're on, the API is part of it — REST, MCP, and Skills. Rate limits scale with your tier.

Starter49 / month

Solo operators. LinkedIn or X. Standard rate limits.

  • REST + MCP + Skills included
  • Per-workspace API keys
  • 7-day trial — no card
Start free trial
Team39 / seat / month

5–50 seats. One key per member, one invoice for the org.

  • REST + MCP + Skills per seat
  • Org-wide LSH dedup
  • Admin dashboard + roles
Try Team
EnterpriseCustom

50+ seats. Procurement, security review, SSO, SLA. Bespoke rate limits.

  • SSO + SLA on request
  • Custom rate limits
  • Dedicated support
Contact us

EUR exclusive of VAT. Full breakdown on the pricing page. Per-key throttling adds Retry-After on every tier.

7 · Why pay instead of building it

5 minutes vs. 40 hours.

You could glue together an RSS parser, a dedup index, a brand-voice prompt, a scheduler, and a thread splitter. Or you could use the one the founder already posts from every day.

  • A twin that learns from every edit. Every approval, inline edit, and rejection your agent makes through the API teaches the workspace twin a little more about how the workspace writes. The more your agent calls the API, the more the drafts land in the workspace's voice. Everything the twin has learned is yours and leaves with you if you ever cancel.
  • Feed intelligence. 15+ pre-curated industry feeds, add your own RSS, LSH dedup so an article shows up exactly once across every member of your workspace.
  • Scheduling infrastructure. LinkedIn + X with thread splitting, image generation (Imagen 4.0), per-account schedule windows, calendar view. No posting bots — routes through Zernio.
  • Workspace isolation from day one. Postgres RLS at the row. Your key only ever reaches your workspace's data — by the database, not just the app.
terminal · 5-minute integration
# 1. Get a keyopen https://twinwrite.com/dashboard/settings/api-keys # 2. Connect from Claude Codeclaude mcp add twinwrite --url https://twinwrite.com/mcp --auth-token sk_live_… # 3. Prompt"Draft 3 posts about my launch and schedule them."

Same routine on REST: /docs/agents.

Ship a content agent today, not next quarter.

Spin up an account, copy a key, paste a Claude Code one-liner. The drafts are flowing before your standup ends.

The content API for AI agents — TwinWrite