Planning surface

The planning surface holds the locked decisions every chapter prompt and outline pass honors — theme statement, reader promise, comp authors, beat sheet, POV / tense, the character roster (with want / fear / lie), the conflict matrix, mood references, and the outline grader / variants.

Read the plan

GET /v1/books/{bookId}/plan
authorization: Bearer ant_live_…

→ 200 {
  "data": {
    "themeStatement": "Love is what survives when control fails.",
    "readerPromise": "A literary novella about regret and tide.",
    "compAuthors": "Marilynne Robinson meets Anne Carson",
    "beatSheet": { "id": "freytag", "name": "Freytag's Pyramid" },
    "povLock": "third-limited",
    "tenseLock": "past",
    "povDepth": 70,
    "genre": "literary",
    "audience": "adult",
    "genreConfidence": 88,
    "audienceConfidence": 92,
    "autoDetectedGenre": true,
    "researchCitations": [
      { "title": "Tidal patterns of the Bay of Fundy", "url": "…" }
    ]
  }
}

Write any subset

Omit a field to leave it untouched. Pass null to clear it. The chapter writer and the outliner pick up the new values on the next generation call.

PATCH /v1/books/{bookId}/plan
content-type: application/json
authorization: Bearer ant_live_…

{
  "themeStatement": "A grandmother teaches the village a quieter way to grieve.",
  "compAuthors": "Marilynne Robinson meets Anne Carson",
  "beatSheetTemplate": "kishotenketsu",
  "tenseLock": "past",
  "povDepth": 80
}

Valid beat-sheet ids

  • save-the-cat
  • three-act
  • heros-journey
  • freytag
  • kishotenketsu
  • tell-promise-mean

Fetch the full template definitions (beats, intents, positions) from GET /v1/books/{bookId}/beat-sheets.

From the MCP

Claude Desktop / Claude Code with the Anthra MCP token can call get_plan and set_plan directly — same input shape, same validation, same per-token rate limit bucket.