Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SUBSTACK_USER_IDYesYour Substack User ID
SUBSTACK_SESSION_TOKENYesYour Substack session token (the value of the connect.sid cookie, usually starting with s%3A)
SUBSTACK_PUBLICATION_URLYesYour Substack URL, including custom domain if you have one (e.g., https://newsletter.yourdomain.com or https://yourblog.substack.com)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_subscriber_countA

Get the current subscriber count for your Substack publication

list_published_postsA

List published posts with pagination. Returns title, date, slug, and URL for each post.

list_draftsB

List draft posts. Returns title, creation date, and audience for each draft.

get_postA

Get the full content of a published post by ID. Returns title, body HTML, metadata.

get_draftA

Get the full content of a draft post by ID. Returns title, body, metadata.

get_post_commentsA

Get comments on a published post. Returns commenter name, comment body, date, and reaction counts.

get_sectionsA

List your publication's sections (categories). Returns each section's id and name. Use a section id as section_id when creating or updating a draft to file it under that section.

get_post_analyticsA

Get performance stats (views, emails sent/delivered/opened, signups, subscribes, estimated value, comments, reactions) for a published post by ID. Substack has no per-post stats endpoint, so this searches your 500 most recent published posts for the ID; returns a not-found note if it isn't among them.

list_scheduled_postsA

List posts scheduled for future publication, soonest first. Read-only visibility into what's queued — scheduling itself is done in Substack's editor (this server does not schedule, publish, or delete long-form posts). Returns id, title, audience, and scheduled time (trigger_at).

create_draftA

Create a new draft post. Accepts markdown body which is converted to Substack's format. Does NOT publish — creates a draft only.

update_draftA

Update an existing draft post. Only works on unpublished drafts. Accepts markdown body.

upload_imageA

Upload an image to Substack's CDN. Provide exactly one of image_base64 (a base64 data URI) or image_path (a local file path). Returns a hosted image URL that is publicly fetchable by anyone with the link (an unlisted asset — not attributed to you or added to your feed).

create_noteA

Create a Substack Note (short-form content). Accepts markdown text. PUBLISHES IMMEDIATELY to your public Notes feed — Notes have no draft state on Substack, and this server has no delete tools, so there is no undo from here.

create_note_with_linkA

Create a Substack Note with a link attachment, displayed as a rich card below the note text. PUBLISHES IMMEDIATELY to your public Notes feed — same caveats as create_note: no draft state, no undo from this server.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/conorbronsdon/substack-mcp'

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