Outline & sensitivity review

Editorial checks you can run before (and while) a book is written. Paid calls are charged before the model runs and refunded if it fails — the same prices as the matching MCP tools (grade_outline, generate_outline_variants, run_sensitivity_scan).

Read the outline grade

GET/v1/books/{bookId}/outline-gradescope: books:read

Returns the cached grade — overallScore (0–100), dimensions (five axes), critique, suggestions and weakChapters — plus stale: true when the outline has changed since it was graded. grade is null if it was never graded.

Grade the outline

POST/v1/books/{bookId}/outline-gradescope: generation:run

Re-grades the current chapter outline (needs at least three chapters) and caches the result. Costs one critique credit.

Outline variants

GET/v1/books/{bookId}/outline-variantsscope: books:read
POST/v1/books/{bookId}/outline-variantsscope: generation:run

POST generates a new round of three competing outlines from the premise, each with a label, an angle and a full chapter list. Costs three outline credits; needs a premise. GET returns the latest round as { variants, round }.

Outline snapshots

GET/v1/books/{bookId}/outline-snapshotsscope: books:read

Every snapshot captured before an outline mutation (so a structural edit can be rolled back): id, label, createdAt, chapterCount and the full outline.

List sensitivity flags

GET/v1/books/{bookId}/sensitivityscope: analytics:read

Every flag on the book, newest first: chapterId, category, severity, the flagged excerpt and the reviewer's rationale.

Run a sensitivity scan

POST/v1/books/{bookId}/sensitivityscope: generation:run

Scans one chapter ({ "chapterId": "…" }) or, with an empty body, every written chapter, and stores the new flags. Costs one critique credit per chapter, charged up front; if a scan fails partway, the unscanned chapters are refunded and the response is a 502 carrying chaptersScanned. Whole-book scans are capped at 30 chapters (413 above that — scan chapter by chapter).

{ "data": { "chaptersScanned": 12, "flagsAdded": 3 } }

Dismiss a flag

DELETE/v1/books/{bookId}/sensitivity/{flagId}scope: books:write

Permanently deletes one flag from the book.