ScryMaster Docs

MCP quickstart — author with an AI agent

ScryMaster has a full authoring API and a bundled MCP connector with complete Studio parity: an AI assistant can create, edit, validate, simulate, and publish an adventure end-to-end — no browser. This is the ten-step path. The deep reference (every endpoint, every tool, error codes) is the API & MCP reference.

The contract, in one line: get_vocabulary → get_adventure → edit → save_adventure(baseHash) → validate_adventure → simulate_adventure → dry_publish → publish_adventure. Follow it every time — it’s what keeps AI-authored stories valid, non-clobbering, and safe to publish.

The ten steps

  1. Create an account at scrymaster.com (free).
  2. Generate a token. In the Studio, open any story → ⚙ Settings → Integrations → API tokens → create one. It starts with scry_; treat it like a password and revoke it any time.
  3. Connect — three ways. (a) The remote connector (one URL, recommended): claude mcp add --transport http scrymaster https://scrymaster.com/api/mcp — authenticate via the OAuth sign-in it offers, or a scry_… bearer header. (b) The npm stdio server: claude mcp add scrymaster --env SCRYMASTER_TOKEN=scry_… --env SCRYMASTER_API_URL=https://scrymaster.com -- npx -y @scrymaster/mcp — or the equivalent { "command": "npx", "args": ["-y", "@scrymaster/mcp"] } in any MCP client. (c) REST directly (no MCP client): every tool below maps 1:1 to a bearer-authed call in the API reference — send Authorization: Bearer scry_… to https://scrymaster.com/api/v1/…. Always use the apex host — never www (it redirects and some agents won’t follow it).
  4. Ground on the vocabulary. Call get_vocabulary (GET /api/v1/actions) first, always. The engine is default-deny — a verb that isn’t listed is rejected. Never author from memory.
  5. Create the adventure. create_adventure with a full document grounded in that vocabulary → you get a draft id. The full body schema is published in /api/v1/openapi.json under components.schemas (AdventureDoc + every sub-shape: node grammar per kind, the closed Action verbs, the Condition AST) — build the doc from the schema, don’t reverse-engineer it from a sample. Details in the API reference.
  6. Read before you write. get_adventure returns the doc and a draftHash. Hold onto it.
  7. Save safely. save_adventure with that hash as baseHash. If the draft changed under you (another tab, another tool), you get a 409 — re-read, re-apply your edit to the fresh doc, save again. Never retry a save blindly.
  8. Validate. validate_adventure — schema, reachability, and the closed-verb check. Fix anything it flags.
  9. Simulate. simulate_adventure auto-plays the story to confirm it can be finished and the difficulty reads right (completion rate, death rate, never-reached beats).
  10. Read the quality signals — steer toward GOOD, not just valid. After each build pass run validate → simulate → get_health → get_world: get_health is the 0–100 scorecard (unpaid variables, fake-agency choices, lethality, never-visited beats — each names the beat); get_world shows whether your cast/quests/factions actually read back. Fix what they name, then move on. See the quality metrics + the playbookrichness is consequence, not choice count.
  11. Dry-publish, then publish. dry_publish returns the full verdict with no write (validation, IP denylist, compatibility, would-be version, any content-loss report). When it’s green — and the human is ready — publish_adventure. Publishing never breaks a player’s in-progress save: runs pin the version they started on.

No MCP? Browser ChatGPT works too

You don’t need an agentic setup. Co-writer mode: point any assistant at https://scrymaster.com/docs (or /llms.txt) — the craft guides, the live vocabulary, and the worked example are all public; it coaches you while you build in the Studio. Full authoring from ChatGPT: create a custom GPT and import /api/v1/openapi.json as an Action (auth type: API key → Bearer → your scry_… token) — the spec carries the complete AdventureDoc schemas, so browser ChatGPT can create, save, validate, simulate, and publish directly, no MCP client at all. Use the apex URL — never www.

What you get for free

  • No clobbering — the baseHash/409 contract means two editors (you and a human, or two tools) can never silently overwrite each other.
  • Real gates — the same validation, denylist, and data-loss checks the Studio enforces run on your publish; you can’t ship something a human couldn’t.
  • Labeled authorship — every write you make is recorded and labeled in the story’s provenance ledger at the event level (tagged mcp-pat, visible to the owner in the publish center’s “Recent activity”). To be precise: recorded today = each MCP/PAT write event; not yet = per-field authorship inside each node/prose field (that granularity is a future layer). The human always knows an AI changed something and when — the finer attribution is coming.
  • Official content is protecteddelete_adventure refuses the platform tutorial (403).

Deep reference: API & MCP reference →