# ask_coach (/docs/build/mcp-reference/ask_coach)

{/* GENERATED by scripts/generate-mcp-reference.mjs from the MCP server tools/list. Do not edit. */}

| Group | Access | MCP name |
| --- | --- | --- |
| Coach | Writes data | `ask_coach` |

## Description [#description]

The description the MCP server sends to the model, word for word. Its rules apply to every call.

> Talk to the WriteStack Coach (Quill), the user's Substack growth coach. It knows their notes, posts, stats, memory, and playbooks. Pass thread_id back to continue the same conversation. The reply is also saved as a Coach chat the user can open at thread_url. This spends the user's Coach allowance.

## Arguments [#arguments]

| Argument | Type | Required | Description |
| --- | --- | --- | --- |
| `message` | `string` | Yes | What to ask the Coach, in the user's words, plus any context they gave you. Min length 1. Max length 40000. |
| `thread_id` | `string` | No | thread_id from an earlier ask_coach result. Pass it to continue that conversation. Leave it out to start a new chat. |

## Example call [#example-call]

The smallest valid request: required arguments only, with placeholder values.

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ask_coach",
    "arguments": {
      "message": "…"
    }
  }
}
```

## Result [#result]

The result has `structuredContent` that matches this schema. The same data is also in `content` as JSON text.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `reply` | `string` | Yes |  |
| `thread_id` | `string` | Yes |  |
| `thread_url` | `string` | Yes |  |

## Annotations [#annotations]

| Hint | Value |
| --- | --- |
| `readOnlyHint` | `false` |
| `destructiveHint` | `false` |
| `openWorldHint` | `false` |

The full input and output JSON Schemas for every tool are in [/mcp-tools.json](/mcp-tools.json).
