get_posts_statistics
Get Posts Statistics. Read this writer's Substack post statistics for every newsletter selected on Posts Statistics, in one call.
| Group | Access | MCP name |
|---|---|---|
| Statistics and activity | Read-only | get_posts_statistics |
Description
The description the MCP server sends to the model, word for word. Its rules apply to every call.
Read this writer's Substack post statistics for every newsletter selected on Posts Statistics, in one call. Returns views, unique email opens, Substack's reported open rate, emails sent and delivered, email traffic share, email-attributed views, likes, comments, restacks, shares, clicks, and signups, plus each newsletter's subscriber split and ARR. Open rate is unique opens divided by emails delivered. Use the returned openRate. Do not recompute it, and do not treat emailTrafficShare as the open rate: that share is the portion of views that came from email, including repeat views. Defaults to the last 30 days, highest views first. Omit publicationId unless they named one newsletter. Requires the posts statistics feature and WriteStack extension 1.5.25 or newer. On failure, follow the error text.
Arguments
| Argument | Type | Required | Description |
|---|---|---|---|
dateRange | string | No | Time period. Use custom with startDate and endDate. One of: "last_7_days", "last_30_days", "last_90_days", "last_12_months", "all_time", "custom". Default "last_30_days". |
endDate | string | No | Format date-time. |
limit | integer | No | How many posts to return, highest views first (default 15, max 30). Min 1. Max 30. Default 15. |
publicationId | integer | No | Limit to one newsletter by its Substack publication id. Omit to include every newsletter selected on Posts Statistics. |
startDate | string | No | Format date-time. |
Example call
The smallest valid request: required arguments only, with placeholder values.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_posts_statistics",
"arguments": {}
}
}Result
The result has structuredContent that matches this schema. The same data is also in content as JSON text.
| Field | Type | Required | Description |
|---|---|---|---|
dateRange | string | Yes | |
endDate | string | Yes | |
extensionVersion | string | Yes | |
message | string | No | |
postCount | number | Yes | |
posts | object[] | Yes | |
posts[].clicks | number | Yes | |
posts[].comments | number | Yes | |
posts[].delivered | number | Yes | |
posts[].emailTrafficShare | any | Yes | |
posts[].emailViews | any | Yes | |
posts[].engagementRate | any | Yes | |
posts[].likes | number | Yes | |
posts[].openRate | any | Yes | |
posts[].postDate | string | null | Yes | |
posts[].postId | number | Yes | |
posts[].publicationId | number | Yes | |
posts[].restacks | number | Yes | |
posts[].sent | number | Yes | |
posts[].shares | number | Yes | |
posts[].signups | number | Yes | |
posts[].title | string | Yes | |
posts[].uniqueOpens | number | Yes | |
posts[].url | string | null | Yes | |
posts[].views | number | Yes | |
publications | object[] | Yes | |
publications[].arr | any | Yes | |
publications[].comps | number | Yes | |
publications[].delivered | number | Yes | |
publications[].emailTrafficShare | any | Yes | |
publications[].emailViews | number | Yes | |
publications[].free | number | Yes | |
publications[].freeTrials | number | Yes | |
publications[].gifts | number | Yes | |
publications[].name | string | Yes | |
publications[].openRate | any | Yes | |
publications[].paid | number | Yes | |
publications[].paying | number | Yes | |
publications[].postCount | number | Yes | |
publications[].publicationId | number | Yes | |
publications[].sent | number | Yes | |
publications[].totalSubscribers | number | Yes | |
publications[].uniqueOpens | any | Yes | |
publications[].views | number | Yes | |
startDate | string | Yes | |
summary | object | Yes | |
summary.delivered | number | Yes | |
summary.deliveryRate | any | Yes | |
summary.emailTrafficShare | any | Yes | |
summary.emailViews | number | Yes | |
summary.openRate | number | null | Yes | |
summary.sent | number | Yes | |
summary.uniqueOpens | any | Yes | |
summary.views | number | Yes |
Annotations
| Hint | Value |
|---|---|
readOnlyHint | true |
destructiveHint | false |
openWorldHint | false |
The full input and output JSON Schemas for every tool are in /mcp-tools.json.
get_notes_statistics
Get Notes Statistics. Analyze the user's published Substack notes analytics: returns a paginated batch of notes with engagement metrics (impressions, clicks, reactions, comments, restacks, profile visits, shares, free/paid subscribers) and an audience split (subscribers, followers, strangers) when Substack stored one.
list_activities
List Activities. List activity on the user's Substack (same rules as the WriteStack activity feed): non-dismissed items, excluding the user's own author, optional filter (all / comments / mentions).