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

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

| Group | Access | MCP name |
| --- | --- | --- |
| Articles | Irreversible | `push_article_to_substack` |

<Callout type="warn">This tool changes data in a way that cannot be undone. Confirm with the writer before calling it.</Callout>

## Description [#description]

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

> Push or update a WriteStack article as a Substack draft through the user's Chrome extension. BEFORE calling this tool, you MUST call list_article_newsletters and ASK the user which newsletter to push the article to. Never assume. Pass the chosen publicationId — only enabled newsletters are accepted. If WriteStack is open, this usually finishes in seconds. Otherwise it is queued and syncs the next time WriteStack is open with the extension. Pushing an article that already has a Substack draft updates (overwrites) that draft.

## Arguments [#arguments]

| Argument | Type | Required | Description |
| --- | --- | --- | --- |
| `articleId` | `string` | Yes |  |
| `publicationId` | `number` | Yes | Enabled newsletter publicationId. BEFORE creating or pushing an article, call list_article_newsletters and ASK the user which newsletter to use. Never guess or pick a default. Only IDs returned by that tool are accepted — newsletters the user hid from Articles are rejected. |

## 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": "push_article_to_substack",
    "arguments": {
      "articleId": "…",
      "publicationId": 1
    }
  }
}
```

## Result [#result]

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

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `articleId` | `string` | Yes |  |
| `message` | `string` | Yes |  |
| `queued` | `boolean` | No |  |
| `status` | `string` | Yes |  |
| `substackDraftUrl` | `string \| null` | No |  |
| `substackScheduledAt` | `string \| null` | No |  |

## Annotations [#annotations]

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

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