Substack MCP server and CLI for Claude Code and AI agents. 65 tools for drafts, posts, Notes, subscribers, analytics, tags, comments and researching other publications.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
add_subscriber
write
-
add_tag_to_post
write
-
cancel_scheduled_note
write
-
comment_on_post
destructive
-
create_draft
write
-
create_draft_from_template
write
-
create_tag
write
-
create_template
write
-
delete_comment
destructive
-
delete_draft
destructive
-
delete_note
destructive
-
delete_template
destructive
-
export_subscribers
read
-
get_analytics
read
-
get_comment_thread
read
-
get_dashboard_summary
read
-
get_draft
read
-
get_email_stats
read
-
get_import_status
read
-
get_post
read
-
get_post_by_id
read
-
get_post_comments
read
-
get_post_stats
read
-
get_post_tags
read
-
get_profile_feed
read
-
get_publication_info
read
-
get_publication_settings
read
-
get_reader_feed
read
-
get_reader_post
read
-
get_revenue_summary
read
-
get_sections
read
-
get_subscriber_count
read
-
get_user_profile
read
-
list_contributors
read
-
list_drafts
read
-
list_notes
read
-
list_posts
read
-
list_publication_tags
read
-
list_reader_posts
read
-
list_scheduled_notes
read
-
list_scheduled_posts
read
-
list_subscribers
read
-
list_subscriptions
read
-
list_templates
read
-
preview_draft_body
read
-
publish_draft
destructive
-
publish_note
destructive
-
publish_note_with_link
destructive
-
rank_posts
read
-
remove_tag_from_post
destructive
-
restack_note
destructive
-
schedule_draft
write
-
schedule_note
write
-
search_posts
read
-
search_publications
read
-
set_draft_body
write
-
tag_ids
and group_membership cannot be exported. Substack drops them without failing, so they come back in missing_columns. Asking for all 48 returns 46.
-
unschedule_draft
write
-
update_draft
write
-
update_publication_settings
write
analyzed commit 18af6b0 · analyzer v33 · 18h ago
skills & prompt files 3
code files: 43
filesystem 7
- fs (weak) thenavidm-substack-mcp-cli-18af6b0/scripts/check-counts.mjs :14
import { readFileSync, existsSync } from "node:fs"; - fs thenavidm-substack-mcp-cli-18af6b0/src/auth/session.ts :16
import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; - fs thenavidm-substack-mcp-cli-18af6b0/src/content/image.ts :18
import { readFile } from "node:fs/promises"; - fs thenavidm-substack-mcp-cli-18af6b0/src/safety.ts :23
import { appendFileSync } from "node:fs"; - fs thenavidm-substack-mcp-cli-18af6b0/src/scheduler.ts :19
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; - fs thenavidm-substack-mcp-cli-18af6b0/src/server.ts :10
import { existsSync, readFileSync } from "node:fs"; - fs (weak) thenavidm-substack-mcp-cli-18af6b0/tests/cli.test.ts :10
import { readFileSync, existsSync } from "node:fs";
shell / exec 2
- shell (weak) thenavidm-substack-mcp-cli-18af6b0/scripts/check-counts.mjs :13
import { spawn } from "node:child_process"; - shell thenavidm-substack-mcp-cli-18af6b0/src/auth/login.ts :25
import { spawn } from "node:child_process";
network 4
- net thenavidm-substack-mcp-cli-18af6b0/src/api/client.ts :120
res = await fetch(url, init); - net thenavidm-substack-mcp-cli-18af6b0/src/auth/login.ts :226
const res = await fetch(`https://${host}/api/v1/publication_user`, { - net thenavidm-substack-mcp-cli-18af6b0/src/content/image.ts :21
import { isIP } from "node:net"; - net thenavidm-substack-mcp-cli-18af6b0/src/transport/http.ts :21
import { createServer, type IncomingMessage, type ServerResponse } from "node:http";
secrets 2
- secrets thenavidm-substack-mcp-cli-18af6b0/src/config.ts :99
const token = process.env.SUBSTACK_SESSION_TOKEN; - secrets thenavidm-substack-mcp-cli-18af6b0/src/transport/http.ts :42
token: process.env.SUBSTACK_MCP_TOKEN || undefined,
install hooks 1
- prepublishOnly thenavidm-substack-mcp-cli-18af6b0/package.json :21
npm run build
declared dependencies 7
- @modelcontextprotocol/sdk@^1.18.0
- zod@^3.23.8
- zod-to-json-schema@^3.24.1
- @types/node@^22.10.0
- typescript@^5.7.0
- vitest@^2.1.0
- playwright@>=1.40.0