github TypeScript re-analysis due

thenavidm/substack-mcp-cli

github

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.

maintainer
thenavidm
license
MIT
first seen
2026-09-03
last seen
2026-09-04
releases · 30d
6
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 60 tools
transport stdio · streamable-http · http counts 60 tools · 0 res · 0 prompts permission surface via README inference

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

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 18af6b0 · analyzer v33 · 18h ago

skills & prompt files 3

code evidence vv2.2.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

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