posterly-mcp-server 0.43.5 → 0.43.6
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.
- package/README.md +1 -1
- package/SUBMISSIONS.md +31 -4
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/tools/cancel-subscription.js +2 -2
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/lib/version.ts +1 -1
- package/src/tools/cancel-subscription.ts +2 -2
package/README.md
CHANGED
|
@@ -122,7 +122,7 @@ Add the same server definition to your Cursor MCP settings:
|
|
|
122
122
|
|
|
123
123
|
## Available tools
|
|
124
124
|
|
|
125
|
-
`posterly-mcp-server@0.43.
|
|
125
|
+
`posterly-mcp-server@0.43.6` exposes 90 tools.
|
|
126
126
|
|
|
127
127
|
Public setup tools work before `POSTERLY_API_KEY` exists:
|
|
128
128
|
|
package/SUBMISSIONS.md
CHANGED
|
@@ -34,7 +34,12 @@ person who applies the production migration and files the directory forms.
|
|
|
34
34
|
|
|
35
35
|
## Anthropic Connectors Directory
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
This is the remote MCP connector listing (Claude.ai / Claude desktop
|
|
38
|
+
connectors). It is distinct from the Claude Code plugin already pending review.
|
|
39
|
+
|
|
40
|
+
Submit the remote MCP server at
|
|
41
|
+
https://claude.ai/admin-settings/directory/submissions/new or
|
|
42
|
+
https://clau.de/mcp-directory-submission.
|
|
38
43
|
|
|
39
44
|
Fallback contact: mcp-review@anthropic.com.
|
|
40
45
|
|
|
@@ -55,6 +60,30 @@ Optional after deploy: bump and publish `posterly-mcp-server` if you want the
|
|
|
55
60
|
stdio README changes on npm. Hosted `/api/mcp` picks up this repo deploy
|
|
56
61
|
without an npm publish.
|
|
57
62
|
|
|
63
|
+
## ChatGPT / OpenAI Plugins Directory
|
|
64
|
+
|
|
65
|
+
This is a different form from the Claude plugin directory (already submitted)
|
|
66
|
+
and from the Anthropic Connectors Directory above. File it after the OAuth DCR
|
|
67
|
+
deploy is live. An agent cannot submit the form: Alex must complete OpenAI org
|
|
68
|
+
verification / Apps Management write access.
|
|
69
|
+
|
|
70
|
+
Portal: https://platform.openai.com/plugins
|
|
71
|
+
|
|
72
|
+
Use:
|
|
73
|
+
|
|
74
|
+
- MCP URL: `https://www.poster.ly/api/mcp`
|
|
75
|
+
- Auth: OAuth 2.1 + PKCE + DCR at `POST /api/oauth/register` (now live on prod)
|
|
76
|
+
- Domain verification: set `OPENAI_APPS_CHALLENGE_TOKEN` in Vercel to the
|
|
77
|
+
portal token, deploy, then Scan Tools. OpenAI fetches
|
|
78
|
+
`https://www.poster.ly/.well-known/openai-apps-challenge` and expects the
|
|
79
|
+
exact token as `text/plain` (no JSON).
|
|
80
|
+
- Homepage: `https://www.poster.ly/agents`
|
|
81
|
+
- Privacy: `https://www.poster.ly/privacy`
|
|
82
|
+
- Terms: `https://www.poster.ly/terms`
|
|
83
|
+
- Support: `https://www.poster.ly/dashboard/support` (or `/agents`)
|
|
84
|
+
|
|
85
|
+
Do not claim the plugin is listed until OpenAI publishes it.
|
|
86
|
+
|
|
58
87
|
## Other hosted hosts
|
|
59
88
|
|
|
60
89
|
ChatGPT-style hosts follow the same DCR + authorize + token flow. HTTPS
|
|
@@ -62,9 +91,7 @@ callbacks such as `https://chatgpt.com/oauth/callback` are already accepted by
|
|
|
62
91
|
the redirect URI validator. Extra browser origins can be added with
|
|
63
92
|
`MCP_TRUSTED_ORIGINS` (comma-separated hostnames or full URLs).
|
|
64
93
|
|
|
65
|
-
The ChatGPT plugin / app directory is
|
|
66
|
-
this OAuth DCR deploy is live; it is not covered by the Anthropic connector
|
|
67
|
-
submission.
|
|
94
|
+
The ChatGPT plugin / app directory form is covered in the section above.
|
|
68
95
|
|
|
69
96
|
## Registry metadata
|
|
70
97
|
|
package/dist/lib/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const POSTERLY_MCP_VERSION = "0.43.
|
|
1
|
+
export declare const POSTERLY_MCP_VERSION = "0.43.6";
|
package/dist/lib/version.js
CHANGED
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
// tool set (minus the intentional pre-auth signup tools that only this stdio
|
|
6
6
|
// package exposes). `npm run check:mcp-parity` enforces both the version match
|
|
7
7
|
// and the tool-list match, and runs in the pre-commit hook.
|
|
8
|
-
export const POSTERLY_MCP_VERSION = '0.43.
|
|
8
|
+
export const POSTERLY_MCP_VERSION = '0.43.6';
|
|
@@ -23,11 +23,11 @@ function formatCanceled(result) {
|
|
|
23
23
|
}
|
|
24
24
|
export const cancelSubscriptionTool = {
|
|
25
25
|
name: 'cancel_subscription',
|
|
26
|
-
description: "Cancel the authenticated user's posterly subscription. DESTRUCTIVE billing action; requires the billing:write scope. ALWAYS ask the user why they are cancelling FIRST and pass their answer as `reason` (one of the allowed values). By default
|
|
26
|
+
description: "Cancel the authenticated user's posterly subscription. DESTRUCTIVE billing action; requires the billing:write scope. ALWAYS ask the user why they are cancelling FIRST and pass their answer as `reason` (one of the allowed values). By default an active or trialing plan is set to cancel at the end of the current period. A past_due or unpaid plan always ends now, even when immediate is false: the unpaid renewal is dropped and payment retries stop. Pass immediate=true only when the user explicitly wants an active plan cancelled right now. Only call after the user explicitly confirms.",
|
|
27
27
|
inputSchema: z.object({
|
|
28
28
|
reason: z.enum(CANCELLATION_REASONS).describe('Why the user is cancelling. Ask the user before calling; do not guess.'),
|
|
29
29
|
feedback: z.string().max(2000).optional().describe('Optional free-text detail the user gave about why they are cancelling.'),
|
|
30
|
-
immediate: z.boolean().optional().describe('Cancel immediately instead of at period end. Defaults to false
|
|
30
|
+
immediate: z.boolean().optional().describe('Cancel immediately instead of at period end. Defaults to false. Ignored for past_due and unpaid plans, which always end now.'),
|
|
31
31
|
confirm: z.literal(true).describe('Must be true after the user explicitly confirms the cancellation.'),
|
|
32
32
|
}),
|
|
33
33
|
async execute(client, input) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "posterly-mcp-server",
|
|
3
|
-
"version": "0.43.
|
|
3
|
+
"version": "0.43.6",
|
|
4
4
|
"mcpName": "io.github.awpthorp/posterly",
|
|
5
5
|
"description": "MCP server for posterly: schedule and publish social media posts across 18 platforms from any MCP client (Claude, ChatGPT, Cursor, Windsurf, Cline, and more)",
|
|
6
6
|
"license": "MIT",
|
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.awpthorp/posterly",
|
|
4
4
|
"title": "posterly",
|
|
5
5
|
"description": "Validate, schedule, publish, and analyze social content across 18 platforms with posterly.",
|
|
6
|
-
"version": "0.43.
|
|
6
|
+
"version": "0.43.6",
|
|
7
7
|
"websiteUrl": "https://www.poster.ly/mcp",
|
|
8
8
|
"repository": {
|
|
9
9
|
"url": "https://github.com/awpthorp/posterly",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
{
|
|
15
15
|
"registryType": "npm",
|
|
16
16
|
"identifier": "posterly-mcp-server",
|
|
17
|
-
"version": "0.43.
|
|
17
|
+
"version": "0.43.6",
|
|
18
18
|
"transport": {
|
|
19
19
|
"type": "stdio"
|
|
20
20
|
},
|
package/src/lib/version.ts
CHANGED
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
// tool set (minus the intentional pre-auth signup tools that only this stdio
|
|
6
6
|
// package exposes). `npm run check:mcp-parity` enforces both the version match
|
|
7
7
|
// and the tool-list match, and runs in the pre-commit hook.
|
|
8
|
-
export const POSTERLY_MCP_VERSION = '0.43.
|
|
8
|
+
export const POSTERLY_MCP_VERSION = '0.43.6';
|
|
@@ -28,11 +28,11 @@ function formatCanceled(result: CancelSubscriptionResponse): string {
|
|
|
28
28
|
export const cancelSubscriptionTool = {
|
|
29
29
|
name: 'cancel_subscription',
|
|
30
30
|
description:
|
|
31
|
-
"Cancel the authenticated user's posterly subscription. DESTRUCTIVE billing action; requires the billing:write scope. ALWAYS ask the user why they are cancelling FIRST and pass their answer as `reason` (one of the allowed values). By default
|
|
31
|
+
"Cancel the authenticated user's posterly subscription. DESTRUCTIVE billing action; requires the billing:write scope. ALWAYS ask the user why they are cancelling FIRST and pass their answer as `reason` (one of the allowed values). By default an active or trialing plan is set to cancel at the end of the current period. A past_due or unpaid plan always ends now, even when immediate is false: the unpaid renewal is dropped and payment retries stop. Pass immediate=true only when the user explicitly wants an active plan cancelled right now. Only call after the user explicitly confirms.",
|
|
32
32
|
inputSchema: z.object({
|
|
33
33
|
reason: z.enum(CANCELLATION_REASONS).describe('Why the user is cancelling. Ask the user before calling; do not guess.'),
|
|
34
34
|
feedback: z.string().max(2000).optional().describe('Optional free-text detail the user gave about why they are cancelling.'),
|
|
35
|
-
immediate: z.boolean().optional().describe('Cancel immediately instead of at period end. Defaults to false
|
|
35
|
+
immediate: z.boolean().optional().describe('Cancel immediately instead of at period end. Defaults to false. Ignored for past_due and unpaid plans, which always end now.'),
|
|
36
36
|
confirm: z.literal(true).describe('Must be true after the user explicitly confirms the cancellation.'),
|
|
37
37
|
}),
|
|
38
38
|
|