MCPVault

Substack MCP

Unclaimed

by marcomoauro

A Model Context Protocol (MCP) Server for Substack enabling LLM clients to interact with Substack's API for automations like creating posts, managing drafts, and more.

Unclaimed listing

Is this your MCP server?

This listing was auto-indexed from the public record. Claim it to edit the page, set compatibility and unlock growth tools. Takes under two minutes.

Claim this server

Tools (40)

active_only

(boolean, optional): exclude paused and expired subscriptions. Defaults to true.

after

(string, optional): the nextafter from a previous response. A timestamp, not an

audience

(everyone onlypaid onlyfree founding, optional)

body

(string): Body of the post. Plain text becomes one paragraph per line — Markdown is not

columns

(array, optional): which columns to include, defaulting to all of them

cover_image

(string, optional): the social preview image. A URL already on substack-post-media.s3.amazonaws.com or substackcdn.com is used as-is; anything else is downloaded and re-hosted on Substack first, under the same guards as uploadimage

create_if_missing

(boolean, optional): create the tag when no name matches. Defaults to true;

cursor

(string, optional): the nextcursor from a previous response

DateTime

ison isafter isonorafter isbefore isonorbefore

default_comment_sort

(bestfirst mostrecentfirst oldestfirst, optional)

description

(string, optional): the social preview description — not the subtitle

draft_id

(number): the id returned by listposts or createdraftpost

draft_subtitle

(string, optional)

draft_title

(string, optional)

filters

(array, optional): conditions combined with AND, each {column, operator, value}

full

(boolean, optional): return all 111 fields (~24 KB) instead of the projection.

include_body

(boolean, optional): defaults to true

include_hidden

(boolean, optional): include tags not shown in the navigation. Defaults to true.

include_tabs

(boolean, optional): also return the available tab ids

limit

(number, optional): 1–100, defaults to 25

max_wait_seconds

(number, optional): 1–600, defaulting to 120

offset

(number, optional): for paging

path

(string): absolute path to an image file on the machine running this server, read straight

post_id

(number, optional): the post the image belongs to; its effect is unconfirmed

search

(string, optional): free text matched against subscriber name and email

search_engine_description

(string, optional)

search_engine_title

(string, optional)

send

(boolean, optional): email the post to subscribers. Defaults to false, unlike the

slug

(string, optional): the post's URL slug

social_title

(string, optional): the title used when the post is shared elsewhere

sort_by

(string, optional): any filterable column

sort_direction

(asc desc, optional): defaults to desc

status

(drafts published scheduled): which list to read

subtitle

(string): Subtitle of the post

tab

(string, optional): tab id — for-you (default) or subscribed. Never the display name:

tag_name

(string): matched case-insensitively against existing tags

title

(string): Title of the post

url

(string): the http(s) URL of an image to download and re-host

user_id

(number, optional): defaults to SUBSTACKUSERID — your own account

write_comment_permissions

(everyone subscribers onlypaid none, optional): who may comment