Skip to main content
Glama

Create a draft

create_draft
Idempotent

Create a private Substack draft post for newsletters, podcasts, or threads. Returns the draft ID needed to edit, schedule, or publish it later.

Instructions

Create a new draft post. The draft is private until you publish it. Returns the draft id, which every other draft tool takes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyNoPost body. Markdown by default. Supported: headings, bold, italic, inline code, strikethrough, links, images, nested lists (any depth, ordered and unordered mixed), fenced code blocks with a language, blockquotes and horizontal rules. Two things worth knowing: - A line containing only a YouTube, X, Spotify or Vimeo URL becomes a real embedded player, not a link. Put the URL inside a sentence if you want a plain link. - Write <paywall> on its own line to mark where the paywall starts. Everything after it is for paying subscribers only. One per post. Markdown tables have no equivalent in Substack's editor, so they are preserved verbatim in a code block rather than being mangled.
typeNoPost type. 'newsletter' is the normal long-form post.newsletter
titleYesPost title. This is the headline, not an H1 in the body.
audienceNoWho can read it. 'everyone' is public, 'only_free' is any subscriber, 'only_paid' and 'founding' are paying tiers.everyone
subtitleNoOptional subtitle, shown under the title.
section_idNoPublish under a section. Call get_sections to find the id.
body_formatNoHow to read `body`. 'auto' detects it and is almost always right. Use 'prosemirror' to send a Substack document directly.
cover_imageNoCover image URL. Use upload_image first to get one hosted on Substack.
publicationNoWhich connected publication to act on, matched loosely against its hostname (for example 'example.substack.com' or just 'example'). Defaults to the first connected publication.
social_titleNoTitle used on social cards.
search_engine_titleNoSEO title, if different from the title.
search_engine_descriptionNoSEO meta description.
Install Server

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as a non-readonly, non-destructive, idempotent operation. The description adds meaningful behavioral context beyond that: drafts are private until published, and the return value is the draft id needed by other tools. There is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. It front-loads the core action, then adds the two highest-value behavioral facts: privacy until publication and the returned id's role in the broader tool ecosystem. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly explains the key return value, which is essential for chaining this tool with update_draft, publish_draft, and schedule_draft. The schema covers parameters, and annotations cover safety traits. Explicitly naming publish_draft or schedule_draft as the next steps would make it slightly more complete, but the current guidance is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents all 12 parameters. The description adds no parameter-level meaning, but none is needed because the baseline 3 applies when the schema does the heavy lifting. It does not harm or duplicate schema content.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Create a new draft post.' This clearly distinguishes it from siblings like update_draft, get_draft, publish_draft, and delete_draft, and the word 'new' separates it from template-based creation. Even without looking at the schema, an agent knows exactly what action this tool performs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys clear context: this is the starting point for draft workflows, and the returned draft id is consumed by 'every other draft tool.' This strongly implies using create_draft before update_draft, set_draft_body, publish_draft, or schedule_draft. It does not explicitly name alternatives or state when not to use it, but the sequencing guidance is valuable and clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/navidmoazzez/substack-mcp-cli'

If you have feedback or need assistance with the MCP directory API, please join our Discord server