Anthra developer platform
Build with Anthra
Anthra exposes two programmatic surfaces on top of the same studio that powers /dashboard:
- REST API at
/api/v1/*— JSON in, JSON out (plus streamedtext/plainfor chapter generation). - MCP server at
/api/mcp— connect Claude, Cursor, or any Model Context Protocol client with a personal access token and Anthra appears as a set of callable tools.
Both surfaces use the same authentication, the same scopes, and the same underlying database — you can mix them freely.
Start here
- Quickstart — mint a key, create a book, write its first chapter end-to-end with
curl. - Authentication & keys — tokens, scopes, expiry, revocation.
- Connect via MCP — Claude Desktop, Cursor, and Claude Code configs.
What you can do
| Capability | REST | MCP tool | Scope |
|---|---|---|---|
| List / read books | GET /v1/books | list_books, get_book | books:read |
| Create or edit a book | POST /v1/books, PATCH /v1/books/{id} | create_book, update_book | books:write |
| Generate outline | POST /v1/books/{id}/outline | generate_outline | generation:run |
| Write / rewrite a chapter | POST …/chapters/{cid}/write (stream) | write_chapter, rewrite_chapter | generation:run |
| Narrate with ElevenLabs | POST …/chapters/{cid}/narrate | narrate_chapter | generation:run |
| Publish / unpublish | POST /v1/books/{id}/publish | publish_book, unpublish_book | publish:write |
| Reader analytics | GET /v1/books/{id}/analytics | get_reader_analytics | analytics:read |
| Account + token usage | GET /v1/account, GET /v1/usage | get_usage | account:read |
| Planning surface (theme, promise, comp, locks) | GET / PATCH /v1/books/{id}/plan | get_plan, set_plan | books:read · books:write |
| Characters (want / fear / lie) | GET / POST /v1/books/{id}/characters | list_characters, create_character | books:read · books:write |
| Writer's bible (characters, plot, world, glossary…) | GET /v1/books/{id}/documents, GET / PUT /v1/books/{id}/documents/{kind} | list_book_documents, read_book_document,write_book_document, draft_book_document | books:read · books:write |
| Beat sheets (Save the Cat, Freytag, …) | GET /v1/books/{id}/beat-sheets | list_beat_sheets | books:read |
| Sensitivity flags | GET / POST /v1/books/{id}/sensitivity | run_sensitivity_scan, list_sensitivity_flags, dismiss_sensitivity_flag | generation:run · analytics:read |
| Background jobs | GET /v1/jobs, GET /v1/jobs/{jobId} | list_jobs, get_job_status | account:read |
| Narration voice directory | GET /v1/voices | list_voices | books:read |
| Batch narration (whole book) | loop POST …/chapters/{cid}/narrate | narrate_book | generation:run |
| Cover art / chapter illustrations | POST /v1/books/{id}/cover-image, POST /v1/books/{id}/back-cover, POST /v1/books/{id}/spine, POST /v1/books/{id}/cover/compose, POST /v1/chapters/{cid}/image | generate_cover_art, generate_back_cover,generate_spine, compose_cover_spread,generate_chapter_image, choose_cover_color | generation:run |
| Chapter restructuring | PATCH /v1/books/{id}/chapters/{cid} | list_chapters, update_chapter, split_chapter, merge_chapters, reorder_chapters, set_chapter_meta, list_chapter_revisions, restore_chapter_revision | books:read · books:write |
| Manuscript export (EPUB / DOCX / PDF / Markdown) | POST /v1/books/{id}/produce | export_book_markdown, produce_book, get_production_job_status | generation:run |
| Translation (clone into another language) | POST /v1/books/{id}/translate | translate_book | generation:run |
| Editorial & quality (lint, critique, continuity, drift, repetition, cliches) | — | lint_prose, critique_chapter, check_continuity, find_repetition, suggest_cliche_replacements, spoken_readability, style_drift, set_forbidden_words | books:read · generation:run |
| Prose analysis (filter words, adverbs, POV/tense, rhythm, clichés) | — | find_filter_words, analyze_adverb_density, analyze_sensory_balance, check_pov_slippage, check_tense_consistency, analyze_sentence_rhythm, detect_semantic_cliches | books:read · generation:run |
| Specialist & critique panel (round-table, plot doctor) | POST /v1/tools/round_table_critique | call_specialist, round_table_critique, skeptic_verify, draft_tournament, long_horizon_plot_doctor | generation:run |
| Reader feedback (test-reader panel, emotional arc, hooks) | POST /v1/tools/test_reader_panel | test_reader_panel, emotional_arc, score_hook, score_ending | generation:run |
| Worldbuilding & continuity (rules, timeline, foreshadowing) | — | check_continuity, check_scene_consistency, register_foreshadowing, list_unpaid_foreshadowing, refresh_timeline, list_object_trail | books:read · generation:run |
| Persona & structural editing (track-changes, POV/tense flip) | POST /v1/tools/edit_chapter_with_persona | edit_chapter_with_persona, track_changes_edit, sentence_variants, flip_chapter_tense, shift_chapter_pov, voice_transplant_paragraph | generation:run |
| Collaboration (assignments & activity feed) | — | list_collaborators, invite_collaborator, remove_collaborator, assign_chapter, list_chapter_assignments, list_activity_feed | books:read · books:write |
| Author preferences | — | list_author_preferences, set_author_preference | account:read · books:write |
Planning surface (added 2026-06)
The studio's planning workbench is now fully programmable. Both REST and MCP can:
- Read and write the theme statement, reader promise, comp authors, beat sheet, POV / tense locks, and POV depth dial.
- Manage the character roster with Truby-style
want/fear/lieaxes and the inter-character conflict matrix. - Generate and apply outline variants, grade the current outline, run the premise-sharpening interview, pick one of three premise pitches, auto-detect genre, and run era research with citation links.
- List tone / mood references and roll the outline back via snapshots.
REST tool gateway (added 2026-06)
Beyond the idiomatic routes above, every tool in the toolkit is now reachable over a generic gateway — the same ~239 tools the MCP server and in-app agent share, at full parity. Two endpoints:
GET /api/v1/tools— the live catalog: every tool name, description, required scope, and JSON Schema for its arguments. This is the authoritative, always-current list.POST /api/v1/tools/{tool}— invoke any tool by name with a JSON body matching its schema. Scope-gated exactly like the idiomatic routes.
# Discover every tool + its JSON Schema
curl "$ANTHRA_BASE/tools" \
-H "authorization: Bearer $ANTHRA_TOKEN"
# Invoke one by name
curl -X POST "$ANTHRA_BASE/tools/generate_outline" \
-H "authorization: Bearer $ANTHRA_TOKEN" \
-H "content-type: application/json" \
-d '{ "bookId": "…uuid…" }'The gateway is the fastest way to reach newer capabilities — prose analysis, the specialist panel, reader feedback, worldbuilding & continuity, structural editing, and collaboration — without waiting for a dedicated route. See the tool reference for the catalog grouped by capability. OpenAPI is published at v1.1.0.
Versioning
The REST surface is namespaced by version (/api/v1). Anthra will introduce a new namespace before making any breaking change; v1 is stable and additive-only.