substack-api-mcp 1.0.2__tar.gz → 1.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/PKG-INFO +23 -11
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/README.md +22 -10
- substack_api_mcp-1.0.3/mcp.json +11 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/pyproject.toml +2 -1
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/__init__.py +1 -1
- substack_api_mcp-1.0.2/mcp.json +0 -8
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/.github/workflows/ci.yml +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/.github/workflows/publish.yml +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/.gitignore +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/AGENTS.md +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/CLAUDE.md +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/LICENSE +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/assets/logo-white.svg +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/assets/logo.svg +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/add_subscribers.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/daily_stats.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/draft_from_markdown.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/export_subscribers.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/get_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/list_posts.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/list_subscribers.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/post_stats.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/publish_note.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/reply_to_comment.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/schedule_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/traffic_sources.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/unanswered_comments.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/examples/weekly_report.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/glama.json +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/api.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/app.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/cli.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/core/__init__.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/core/account_guard.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/core/context.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/core/errors.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/core/helpers.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/core/tools.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/mcp_context.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/mcp_server.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/runner.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/scripting.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/session.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/__init__.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/auth.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/client.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/feed.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/markdown.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/publishing.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/subscribers.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/__init__.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/add_subscriber.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/cancel_scheduled_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/create_draft.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/create_post_tag.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/create_subscriber_tag.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/delete_comment.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/delete_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/duplicate_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/export_subscribers.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/follow_user.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_audience_insights.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_conversation.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_daily_stats.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_feed.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_post_engagement.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_post_stats.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_post_traffic.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_publication_stats.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_unread_counts.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/like_comment.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/like_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_activity.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_comments.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_conversations.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_note_replies.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_notes.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_post_tags.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_posts.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_recommendations.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_sections.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_subscriber_tags.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_subscribers.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_subscriptions.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_traffic_sources.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/pin_comment.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/publish_note.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/publish_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/recommend_publication.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/remove_comment.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/remove_subscriber.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/reply_to_comment.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/reply_to_note.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/schedule_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/search_substack.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/send_message.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/tag_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/tag_subscribers.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/unpublish_post.py +0 -0
- {substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/update_draft.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: substack-api-mcp
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Self-hosted Substack API and MCP server on your own Chrome session. Noncommercial use (PolyForm Noncommercial 1.0.0).
|
|
5
5
|
Project-URL: Homepage, https://cotlet.dev/integrations/substack-api-mcp-server
|
|
6
6
|
Project-URL: Source, https://github.com/cotletdev/substack-api-mcp-server
|
|
@@ -21,6 +21,8 @@ Description-Content-Type: text/markdown
|
|
|
21
21
|
|
|
22
22
|
# Substack API and MCP server, self-hosted
|
|
23
23
|
|
|
24
|
+
<!-- mcp-name: dev.cotlet/substack -->
|
|
25
|
+
|
|
24
26
|
A **Substack API** and a **Substack MCP server** you run on your own computer, in Python, on the session of your own Google Chrome. All 50 Substack tools we run in production at [Cotlet](https://cotlet.dev/integrations/substack-api-mcp-server): posts and drafts from Markdown, publishing and scheduling, Notes, comments, subscribers, stats, recommendations and direct messages.
|
|
25
27
|
|
|
26
28
|
Substack has no public API to write posts, publish Notes or manage subscribers, and no official MCP server. This repo gives you both:
|
|
@@ -37,11 +39,10 @@ It is for technical people who want to run it themselves, **for noncommercial us
|
|
|
37
39
|
[](https://lobehub.com/mcp/cotletdev-substack-api-mcp-server)
|
|
38
40
|
|
|
39
41
|
```bash
|
|
40
|
-
|
|
41
|
-
python3 -m venv .venv && . .venv/bin/activate && pip install -e .
|
|
42
|
+
uv tool install substack-api-mcp # or: pip install substack-api-mcp
|
|
42
43
|
substack-mcp connect # reads your Substack session from Chrome
|
|
43
44
|
substack-mcp call list_posts
|
|
44
|
-
claude mcp add substack --
|
|
45
|
+
claude mcp add substack -- uvx substack-api-mcp mcp
|
|
45
46
|
```
|
|
46
47
|
|
|
47
48
|
## Contents
|
|
@@ -84,6 +85,17 @@ Substack's session cookie (`substack.sid`) lasts about three months. When Substa
|
|
|
84
85
|
|
|
85
86
|
## Install
|
|
86
87
|
|
|
88
|
+
From [PyPI](https://pypi.org/project/substack-api-mcp/):
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
uv tool install substack-api-mcp # or: pipx install substack-api-mcp, or: pip install substack-api-mcp
|
|
92
|
+
substack-mcp --version
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
MCP clients can also run it with no install: `uvx substack-api-mcp mcp`.
|
|
96
|
+
|
|
97
|
+
From source:
|
|
98
|
+
|
|
87
99
|
```bash
|
|
88
100
|
git clone https://github.com/cotletdev/substack-api-mcp-server.git
|
|
89
101
|
cd substack-api-mcp-server
|
|
@@ -97,7 +109,7 @@ With [uv](https://docs.astral.sh/uv/): `uv venv && uv pip install -e .`, then `u
|
|
|
97
109
|
|
|
98
110
|
Setting it up with an AI agent (Claude Code, Codex, Cursor)? Open it in this folder and ask it to set up the repo: [`AGENTS.md`](AGENTS.md) tells it every step, and it asks you only for the steps in Chrome.
|
|
99
111
|
|
|
100
|
-
To update: `git pull && pip install -e .`. We copy every change of the hosted Substack tools into this repo.
|
|
112
|
+
To update: `uv tool upgrade substack-api-mcp` (or `pip install -U substack-api-mcp`), from source `git pull && pip install -e .`. We copy every change of the hosted Substack tools into this repo.
|
|
101
113
|
|
|
102
114
|
## Connect your Chrome
|
|
103
115
|
|
|
@@ -164,9 +176,9 @@ The MCP server lists every tool with its input schema, a description written for
|
|
|
164
176
|
### Claude Code
|
|
165
177
|
|
|
166
178
|
```bash
|
|
167
|
-
claude mcp add substack --
|
|
179
|
+
claude mcp add substack -- uvx substack-api-mcp mcp
|
|
168
180
|
# read only:
|
|
169
|
-
claude mcp add substack --
|
|
181
|
+
claude mcp add substack -- uvx substack-api-mcp mcp --read-only
|
|
170
182
|
```
|
|
171
183
|
|
|
172
184
|
### Claude Desktop
|
|
@@ -177,8 +189,8 @@ claude mcp add substack -- /path/to/substack-api-mcp-server/.venv/bin/substack-m
|
|
|
177
189
|
{
|
|
178
190
|
"mcpServers": {
|
|
179
191
|
"substack": {
|
|
180
|
-
"command": "
|
|
181
|
-
"args": ["mcp"]
|
|
192
|
+
"command": "uvx",
|
|
193
|
+
"args": ["substack-api-mcp", "mcp"]
|
|
182
194
|
}
|
|
183
195
|
}
|
|
184
196
|
}
|
|
@@ -194,8 +206,8 @@ claude mcp add substack -- /path/to/substack-api-mcp-server/.venv/bin/substack-m
|
|
|
194
206
|
|
|
195
207
|
```toml
|
|
196
208
|
[mcp_servers.substack]
|
|
197
|
-
command = "
|
|
198
|
-
args = ["mcp"]
|
|
209
|
+
command = "uvx"
|
|
210
|
+
args = ["substack-api-mcp", "mcp"]
|
|
199
211
|
```
|
|
200
212
|
|
|
201
213
|
### Over HTTP
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Substack API and MCP server, self-hosted
|
|
2
2
|
|
|
3
|
+
<!-- mcp-name: dev.cotlet/substack -->
|
|
4
|
+
|
|
3
5
|
A **Substack API** and a **Substack MCP server** you run on your own computer, in Python, on the session of your own Google Chrome. All 50 Substack tools we run in production at [Cotlet](https://cotlet.dev/integrations/substack-api-mcp-server): posts and drafts from Markdown, publishing and scheduling, Notes, comments, subscribers, stats, recommendations and direct messages.
|
|
4
6
|
|
|
5
7
|
Substack has no public API to write posts, publish Notes or manage subscribers, and no official MCP server. This repo gives you both:
|
|
@@ -16,11 +18,10 @@ It is for technical people who want to run it themselves, **for noncommercial us
|
|
|
16
18
|
[](https://lobehub.com/mcp/cotletdev-substack-api-mcp-server)
|
|
17
19
|
|
|
18
20
|
```bash
|
|
19
|
-
|
|
20
|
-
python3 -m venv .venv && . .venv/bin/activate && pip install -e .
|
|
21
|
+
uv tool install substack-api-mcp # or: pip install substack-api-mcp
|
|
21
22
|
substack-mcp connect # reads your Substack session from Chrome
|
|
22
23
|
substack-mcp call list_posts
|
|
23
|
-
claude mcp add substack --
|
|
24
|
+
claude mcp add substack -- uvx substack-api-mcp mcp
|
|
24
25
|
```
|
|
25
26
|
|
|
26
27
|
## Contents
|
|
@@ -63,6 +64,17 @@ Substack's session cookie (`substack.sid`) lasts about three months. When Substa
|
|
|
63
64
|
|
|
64
65
|
## Install
|
|
65
66
|
|
|
67
|
+
From [PyPI](https://pypi.org/project/substack-api-mcp/):
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
uv tool install substack-api-mcp # or: pipx install substack-api-mcp, or: pip install substack-api-mcp
|
|
71
|
+
substack-mcp --version
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
MCP clients can also run it with no install: `uvx substack-api-mcp mcp`.
|
|
75
|
+
|
|
76
|
+
From source:
|
|
77
|
+
|
|
66
78
|
```bash
|
|
67
79
|
git clone https://github.com/cotletdev/substack-api-mcp-server.git
|
|
68
80
|
cd substack-api-mcp-server
|
|
@@ -76,7 +88,7 @@ With [uv](https://docs.astral.sh/uv/): `uv venv && uv pip install -e .`, then `u
|
|
|
76
88
|
|
|
77
89
|
Setting it up with an AI agent (Claude Code, Codex, Cursor)? Open it in this folder and ask it to set up the repo: [`AGENTS.md`](AGENTS.md) tells it every step, and it asks you only for the steps in Chrome.
|
|
78
90
|
|
|
79
|
-
To update: `git pull && pip install -e .`. We copy every change of the hosted Substack tools into this repo.
|
|
91
|
+
To update: `uv tool upgrade substack-api-mcp` (or `pip install -U substack-api-mcp`), from source `git pull && pip install -e .`. We copy every change of the hosted Substack tools into this repo.
|
|
80
92
|
|
|
81
93
|
## Connect your Chrome
|
|
82
94
|
|
|
@@ -143,9 +155,9 @@ The MCP server lists every tool with its input schema, a description written for
|
|
|
143
155
|
### Claude Code
|
|
144
156
|
|
|
145
157
|
```bash
|
|
146
|
-
claude mcp add substack --
|
|
158
|
+
claude mcp add substack -- uvx substack-api-mcp mcp
|
|
147
159
|
# read only:
|
|
148
|
-
claude mcp add substack --
|
|
160
|
+
claude mcp add substack -- uvx substack-api-mcp mcp --read-only
|
|
149
161
|
```
|
|
150
162
|
|
|
151
163
|
### Claude Desktop
|
|
@@ -156,8 +168,8 @@ claude mcp add substack -- /path/to/substack-api-mcp-server/.venv/bin/substack-m
|
|
|
156
168
|
{
|
|
157
169
|
"mcpServers": {
|
|
158
170
|
"substack": {
|
|
159
|
-
"command": "
|
|
160
|
-
"args": ["mcp"]
|
|
171
|
+
"command": "uvx",
|
|
172
|
+
"args": ["substack-api-mcp", "mcp"]
|
|
161
173
|
}
|
|
162
174
|
}
|
|
163
175
|
}
|
|
@@ -173,8 +185,8 @@ claude mcp add substack -- /path/to/substack-api-mcp-server/.venv/bin/substack-m
|
|
|
173
185
|
|
|
174
186
|
```toml
|
|
175
187
|
[mcp_servers.substack]
|
|
176
|
-
command = "
|
|
177
|
-
args = ["mcp"]
|
|
188
|
+
command = "uvx"
|
|
189
|
+
args = ["substack-api-mcp", "mcp"]
|
|
178
190
|
```
|
|
179
191
|
|
|
180
192
|
### Over HTTP
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "substack-api-mcp"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.3"
|
|
4
4
|
description = "Self-hosted Substack API and MCP server on your own Chrome session. Noncommercial use (PolyForm Noncommercial 1.0.0)."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "PolyForm-Noncommercial-1.0.0"
|
|
@@ -24,6 +24,7 @@ Source = "https://github.com/cotletdev/substack-api-mcp-server"
|
|
|
24
24
|
|
|
25
25
|
[project.scripts]
|
|
26
26
|
substack-mcp = "substack_api_mcp.cli:main"
|
|
27
|
+
substack-api-mcp = "substack_api_mcp.cli:main"
|
|
27
28
|
|
|
28
29
|
[build-system]
|
|
29
30
|
requires = ["hatchling>=1.27"]
|
substack_api_mcp-1.0.2/mcp.json
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/__init__.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/add_subscriber.py
RENAMED
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/create_draft.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/create_post_tag.py
RENAMED
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/delete_comment.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/delete_post.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/duplicate_post.py
RENAMED
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/follow_user.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_daily_stats.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_feed.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_post.py
RENAMED
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/get_post_stats.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/like_comment.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/like_post.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_activity.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_comments.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_notes.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_post_tags.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_posts.py
RENAMED
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/list_sections.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/pin_comment.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/publish_note.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/publish_post.py
RENAMED
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/remove_comment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/reply_to_note.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/schedule_post.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/search_substack.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/send_message.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/tag_post.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/tag_subscribers.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/unpublish_post.py
RENAMED
|
File without changes
|
{substack_api_mcp-1.0.2 → substack_api_mcp-1.0.3}/substack_api_mcp/substack/tools/update_draft.py
RENAMED
|
File without changes
|