Skip to main content
Glama

Generate Substack post

generate_substack_post
Read-only

Draft one Substack post and save it to the user's files, ready to paste into their Substack editor. Nothing is published and nothing is sent. Drafts are limited to 20 per day. Templates: 'post' takes signoff; 'digest' takes intro, signoff. Write the body as markdown (paragraphs, lists, links) or as blocks, never both. The title and subtitle are the post's own headline and standfirst. audience is everyone, paid or founding. It costs 1 credit, or nothing on a Solo or Pro plan. Do not call this again to retry. When Substack is connected, call get_my_substack_voice first and write the post in that voice.

Input Schema

NameRequiredDescriptionDefault
propsNoText fields for the template, all strings.
titleYesThe post's headline.
blocksNoThe body as blocks.
audienceNo
markdownNoThe body as markdown.
subtitleNoThe line under the headline.
template_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added
  2. Removed
  3. Added

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only provide readOnlyHint=true, so the description carries most of the burden and delivers: rate limit (20 drafts/day), credit cost and plan exemptions, template/prop contracts, mutually exclusive body formats, audience semantics, and explicit non-publication/non-send guarantees. This is unusually rich behavioral disclosure beyond the structured fields.

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

Conciseness4/5

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

Dense but front-loaded: the core purpose and scope come first, then constraints, templates, format, cost, and the voice prerequisite. Every sentence carries operational information, though the run of short declarative sentences reads more like a checklist than prose.

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?

For a 7-parameter tool with nested objects and no output schema, the description covers creation rules, format, cost, limits, and ordering well. It stops short of saying what the call returns (file name/location, draft id), which an agent would want given there is no output schema.

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

Parameters4/5

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

Schema coverage is 71%, and the description adds genuinely new meaning: which prop fields each template requires ('post' takes signoff; 'digest' takes intro, signoff) and the markdown-XOR-blocks rule, neither of which appears in the schema. The audience line largely restates the enum, which keeps it from a 5.

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

Purpose4/5

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

States a specific verb and resource: 'Draft one Substack post and save it to the user's files.' An agent immediately knows it produces a draft artifact rather than reading existing posts. However, it never explicitly differentiates itself from related siblings such as draft_my_planned_posts or plan_generation, so it stops short of the 5 bar.

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?

Gives strong sequencing guidance ('When Substack is connected, call get_my_substack_voice first') and a clear when-not ('Do not call this again to retry'), plus cost and rate-limit context. It does not name alternative tools for the case where a draft already exists, but the operational context is clear.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.