---
title: "Writer Thinking Endpoint"
method: POST
path: "/api/mcp/writer_thinking"
tags: ["mcp"]
---

# Writer Thinking Endpoint

`POST /api/mcp/writer_thinking`

## Request

- Base URL: `https://writer.swapp1990.org` (the document declares no server; this is the origin it was published from)
- URL: `https://writer.swapp1990.org/api/mcp/writer_thinking`
- Auth: none declared

Show the writer's approach before applying a chapter revision.

Direct MCP form of the website's `start_chat_operation(kind="writer_thinking")`.
Returns rendered `editorial_summary` for human inspection plus compact
`thinking` data that can be passed to `revise_chapter.writer_thinking`.

Client path (authoring_mode='client' / server_llm=false):
  - without client_thinking: no-LLM brief (contract + prompt + base_plan_hash)
  - with client_thinking + base_plan_hash: commit client approach, no server LLM

## Request body

- WriterThinkingInput: Input for the writer-thinking preview ("Show writer plan"). Sends ONLY the minimal spine (the server adds premise/cast/setting/voice from the story plan) plus the structured beat plan — deliberately no ledger or curated prior context. See docs/PLAN_tool_driven_writer.md. Client path (authoring_mode='client' or server_llm=false): - without client_thinking: no-LLM brief (contract + prompt + context) - with client_thinking (+ base_plan_hash): commit client-authored approach without server LLM usage. Optional plan_id stores it on the pending client revision plan (same as submit_client_writer_approach).
  - `job_id` string, required: The story job ID.
  - `chapter` integer, required
  - `plan` object, nullable: Structured revision plan (short_plan, long_plan, beats) to preview the writer's execution for. Alias of structured_plan.
  - `structured_plan` object, nullable: Alias accepted for pass-through from revise_chapter. Same shape as plan: {short_plan, long_plan, beats[]}.
  - `target_words` integer, nullable: Target word count for the write.
  - `model` string, nullable: Model override.
  - `revision` integer, nullable: Base revision (used for the default target word count).
  - `authoring_mode` 'server' | 'client', nullable: Set to 'client' to return a no-LLM writer-thinking brief or commit client_thinking without server LLM usage.
  - `server_llm` boolean, nullable: Set false as an alias for authoring_mode='client'. Do not send model in this mode.
  - `client_thinking` object, nullable: Client-authored writer approach/thinking payload to commit in client mode. Same contract as submit_client_writer_approach.approach: require chapter_strategy + segments[]. Alias of client_approach.
  - `client_approach` object, nullable: Alias for client_thinking (writer approach payload).
  - `base_plan_hash` string, nullable: Hash returned by the no-LLM writer_thinking brief; required when submitting client_thinking so the approach matches the planned beats.
  - `plan_id` string, nullable: Optional accepted revision-plan id. When submitting client_thinking, stores the approach on that pending client plan (parity with submit_client_writer_approach).
  - `editorial_summary` string, nullable: Optional human-readable approach summary when committing client_thinking.
  - `client_name` string: Client identity for no-LLM provenance.
  - `client_model` string, nullable: Client-side model name for no-LLM provenance. Never used for server API calls.
  - `artifact_version` string: Version label for submitted client_thinking artifacts.

## Response `200`

Successful Response

- GenericToolResponse: Fallback for tools whose payload is still being tightened.
  - `story_url` string, nullable
  - `article_url` string, nullable
  - `job_id` string, nullable
  - `status` string, nullable
  - `is_terminal` boolean, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/swapp1990/apis/writeforyou-mcp-api.md) · [All operations](https://skmtc.dev/swapp1990/apis/writeforyou-mcp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/swapp1990/apis/writeforyou-mcp-api/revisions/ce5e2a89ab4d?raw)
