MCP
Substack Intelligence for Researchers, Investors, and Content Teams MCP Server
MCP tools for Substack
Base URL
https://mcp.pressmonitor.com/substack/v1 Authentication
MCP calls also use Bearer tokens over JSON-RPC 2.0 requests.
Authorization: Bearer YOUR_TOKEN Discover Tools
Start by listing the tools exposed by the MCP server.
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'tools/list' }) }); console.log(await response.json()); import requests payload = { 'jsonrpc': '2.0', 'id': 1, 'method': 'tools/list' } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json()) tool
feed Feed
Feed
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| cursor | string | No | Cursor |
| tab | string | No | Tab |
Code Examples
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"feed","arguments":{"cursor":"NEXT_CURSOR","tab":"SOME_STRING_VALUE"}}}' const payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "feed", "arguments": { "cursor": "NEXT_CURSOR", "tab": "SOME_STRING_VALUE" } } }; const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify(payload) }); console.log(await response.json()); import requests payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "feed", "arguments": { "cursor": "NEXT_CURSOR", "tab": "SOME_STRING_VALUE" } } } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json()) tool
profile_activity Profile Activity
Profile Activity
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Profile id |
Code Examples
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"profile_activity","arguments":{"profile_id":"SOME_STRING_VALUE"}}}' const payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "profile_activity", "arguments": { "profile_id": "SOME_STRING_VALUE" } } }; const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify(payload) }); console.log(await response.json()); import requests payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "profile_activity", "arguments": { "profile_id": "SOME_STRING_VALUE" } } } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json()) tool
profile_posts Profile Posts
Profile Posts
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Profile id |
Code Examples
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"profile_posts","arguments":{"profile_id":"SOME_STRING_VALUE"}}}' const payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "profile_posts", "arguments": { "profile_id": "SOME_STRING_VALUE" } } }; const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify(payload) }); console.log(await response.json()); import requests payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "profile_posts", "arguments": { "profile_id": "SOME_STRING_VALUE" } } } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json()) tool
profile_public Profile Public
Profile Public
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| handle | string | Yes | Handle |
Code Examples
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"profile_public","arguments":{"handle":"SOME_STRING_VALUE"}}}' const payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "profile_public", "arguments": { "handle": "SOME_STRING_VALUE" } } }; const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify(payload) }); console.log(await response.json()); import requests payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "profile_public", "arguments": { "handle": "SOME_STRING_VALUE" } } } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json()) tool
reader_comment Reader Comment
Reader Comment
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| comment_id | string | Yes | Comment id |
Code Examples
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"reader_comment","arguments":{"comment_id":"SOME_STRING_VALUE"}}}' const payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "reader_comment", "arguments": { "comment_id": "SOME_STRING_VALUE" } } }; const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify(payload) }); console.log(await response.json()); import requests payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "reader_comment", "arguments": { "comment_id": "SOME_STRING_VALUE" } } } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json()) tool
reader_comment_replies Reader Comment Replies
Reader Comment Replies
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| comment_id | string | Yes | Comment id |
Code Examples
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"reader_comment_replies","arguments":{"comment_id":"SOME_STRING_VALUE"}}}' const payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "reader_comment_replies", "arguments": { "comment_id": "SOME_STRING_VALUE" } } }; const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify(payload) }); console.log(await response.json()); import requests payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "reader_comment_replies", "arguments": { "comment_id": "SOME_STRING_VALUE" } } } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json()) tool
reader_post Reader Post
Reader Post
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| post_id | string | Yes | Post id |
Code Examples
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"reader_post","arguments":{"post_id":"SOME_STRING_VALUE"}}}' const payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "reader_post", "arguments": { "post_id": "SOME_STRING_VALUE" } } }; const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify(payload) }); console.log(await response.json()); import requests payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "reader_post", "arguments": { "post_id": "SOME_STRING_VALUE" } } } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json()) tool
search_people Search People
Search People
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Search query |
| page | string | No | Page |
Code Examples
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_people","arguments":{"query":"SOME_STRING_VALUE","page":20}}}' const payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "search_people", "arguments": { "query": "SOME_STRING_VALUE", "page": 20 } } }; const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify(payload) }); console.log(await response.json()); import requests payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "search_people", "arguments": { "query": "SOME_STRING_VALUE", "page": 20 } } } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json()) tool
search_post Search Post
Search Post
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Search query |
| page | string | No | Page |
Code Examples
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_post","arguments":{"query":"SOME_STRING_VALUE","page":20}}}' const payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "search_post", "arguments": { "query": "SOME_STRING_VALUE", "page": 20 } } }; const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify(payload) }); console.log(await response.json()); import requests payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "search_post", "arguments": { "query": "SOME_STRING_VALUE", "page": 20 } } } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json()) tool
search_top Search Top
Search Top
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Search query |
Code Examples
curl -X POST \ 'https://mcp.pressmonitor.com/substack/v1' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_top","arguments":{"query":"SOME_STRING_VALUE"}}}' const payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "search_top", "arguments": { "query": "SOME_STRING_VALUE" } } }; const response = await fetch('https://mcp.pressmonitor.com/substack/v1', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, body: JSON.stringify(payload) }); console.log(await response.json()); import requests payload = { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "search_top", "arguments": { "query": "SOME_STRING_VALUE" } } } response = requests.post( 'https://mcp.pressmonitor.com/substack/v1', headers={ 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_TOKEN' }, json=payload, ) print(response.json())