Storytailor MCP

Storytailor as an agent inside your surface. The person using it has their own Storytailor account, so everything they create is theirs and shows up at app.storytailor.com. You are adding a door, not a silo.

Endpoint

TransportEndpoint
Streamable HTTPPOST https://mcp.storytailor.dev/mcp
stdionode dist/stdio.js (Claude Desktop, Cursor, MCP Inspector)

JSON-RPC 2.0: initialize, tools/list, tools/call, ping. Protocol versions 2025-06-18 (default), 2025-03-26, 2024-11-05. Batches supported; notification-only payloads answer 202.

Authentication

Send the user’s Storytailor access token once, on the connection, not as a tool argument:

Authorization: Bearer <storytailor-access-token>

Most tools need a token. Calling one without it returns a tool error (not a protocol error) telling the model to call auth.login, so an agent can recover on its own. A per-call accessToken argument overrides the connection token, which lets a session log in mid-conversation.

First call

curl -sX POST https://mcp.storytailor.dev/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

174 tools across auth, stories, characters, libraries, StorytailorIDs, reading and accessibility, narration, Hue, Care Circle, organisations, and commerce.

Wiring it with your AI coding tool

Paste this into Claude Code, Codex, Cursor, or Replit while you build:

Add Storytailor MCP to this project.

Endpoint: https://mcp.storytailor.dev/mcp  (JSON-RPC 2.0, MCP)
Auth: Authorization: Bearer <the signed-in user's Storytailor token>,
      set once on the connection.

Rules:
- Call tools/list first and use the returned schemas. Never invent tool names.
- A tool error asking for auth means call auth.login and retry with the token.
- Stories and characters belong to the END USER's Storytailor account.
  Never create a shared or app-owned account for all users.
- Story generation is asynchronous: story.compose returns an id, then poll
  story.status until assets are ready. Show honest progress, not a fake bar.

Error semantics

A product-level failure comes back as isError: true on the result: the call reached the tool and the tool reported a problem. JSON-RPC error is reserved for genuine protocol faults. One bad call never kills the session.