postfast-mcp 0.2.0 → 0.3.0
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +3 -2
- package/dist/core/backend-port.d.ts +41 -0
- package/dist/core/build-tools.d.ts +6 -0
- package/dist/core/build-tools.js +13 -2
- package/dist/core/build-tools.js.map +1 -1
- package/dist/core/shared.d.ts +2 -0
- package/dist/core/shared.js +2 -0
- package/dist/core/shared.js.map +1 -1
- package/dist/core/tool-def.d.ts +8 -0
- package/dist/core/tools/inbox.d.ts +11 -0
- package/dist/core/tools/inbox.js +191 -0
- package/dist/core/tools/inbox.js.map +1 -0
- package/dist/core/tools/index.d.ts +4 -3
- package/dist/core/tools/index.js +6 -3
- package/dist/core/tools/index.js.map +1 -1
- package/dist/stdio/index.js +1 -1
- package/dist/stdio/rest-adapter.d.ts +11 -1
- package/dist/stdio/rest-adapter.js +52 -0
- package/dist/stdio/rest-adapter.js.map +1 -1
- package/package.json +1 -2
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
{
|
|
12
12
|
"name": "postfast",
|
|
13
13
|
"description": "Schedule, manage, and analyze social media posts via PostFast. Supports Facebook, Instagram, X, TikTok, LinkedIn, YouTube, BlueSky, Threads, Pinterest, Telegram, and Google Business Profile.",
|
|
14
|
-
"version": "0.
|
|
14
|
+
"version": "0.3.0",
|
|
15
15
|
"author": {
|
|
16
16
|
"name": "PostFast",
|
|
17
17
|
"email": "me@peturgeorgievv.com"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "postfast",
|
|
3
3
|
"description": "Schedule, manage, and analyze social media posts via PostFast. Supports Facebook, Instagram, X, TikTok, LinkedIn, YouTube, BlueSky, Threads, Pinterest, Telegram, and Google Business Profile. After installing, tell Cowork: 'Set my PostFast API key' — get your key at https://app.postfa.st/dashboard → API.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "PostFast",
|
|
7
7
|
"email": "me@peturgeorgievv.com"
|
package/README.md
CHANGED
|
@@ -195,8 +195,9 @@ node dist/stdio/index.js
|
|
|
195
195
|
Tools are authored once in `src/core` (the catalog — schemas, descriptions,
|
|
196
196
|
annotations, per-binding availability) and exposed to consumers as
|
|
197
197
|
`postfast-mcp/core`; `src/stdio` binds the catalog to the public REST API.
|
|
198
|
-
Releases
|
|
199
|
-
|
|
198
|
+
Releases: PRs add a `.changeset/*.md`; `npm run version` folds them into the
|
|
199
|
+
bump + changelog, and pushing the `vX.Y.Z` tag publishes npm + MCP Registry +
|
|
200
|
+
the MCPB release from CI (OIDC — no tokens anywhere).
|
|
200
201
|
|
|
201
202
|
## Badges
|
|
202
203
|
|
|
@@ -38,6 +38,37 @@ export interface UploadUrlsArgs {
|
|
|
38
38
|
contentType: string;
|
|
39
39
|
count: number;
|
|
40
40
|
}
|
|
41
|
+
export interface ListInboxConversationsArgs {
|
|
42
|
+
page: number;
|
|
43
|
+
limit: number;
|
|
44
|
+
platforms?: string[];
|
|
45
|
+
socialMediaIds?: string[];
|
|
46
|
+
statuses?: string[];
|
|
47
|
+
unreadOnly?: boolean;
|
|
48
|
+
assignedToUserId?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ListInboxItemsArgs {
|
|
51
|
+
conversationId: string;
|
|
52
|
+
page: number;
|
|
53
|
+
limit: number;
|
|
54
|
+
order?: 'ASC' | 'DESC';
|
|
55
|
+
}
|
|
56
|
+
export interface InboxReplyArgs {
|
|
57
|
+
itemId: string;
|
|
58
|
+
text: string;
|
|
59
|
+
}
|
|
60
|
+
export interface SetInboxItemStateArgs {
|
|
61
|
+
itemId: string;
|
|
62
|
+
action: string;
|
|
63
|
+
}
|
|
64
|
+
export interface SetInboxConversationStatusArgs {
|
|
65
|
+
conversationId: string;
|
|
66
|
+
status: string;
|
|
67
|
+
}
|
|
68
|
+
export interface AssignInboxConversationArgs {
|
|
69
|
+
conversationId: string;
|
|
70
|
+
assigneeUserId?: string;
|
|
71
|
+
}
|
|
41
72
|
export interface UploadFromUrlArgs {
|
|
42
73
|
sourceUrl: string;
|
|
43
74
|
contentType?: string;
|
|
@@ -94,4 +125,14 @@ export interface BackendPort {
|
|
|
94
125
|
uploadFromUrl(args: UploadFromUrlArgs, workspaceId?: string): Promise<unknown>;
|
|
95
126
|
/** Remote only: upload a conversation-attached file or base64 bytes. */
|
|
96
127
|
uploadMedia(args: UploadMediaArgs, workspaceId?: string): Promise<unknown>;
|
|
128
|
+
listInboxConversations?(args: ListInboxConversationsArgs, workspaceId?: string): Promise<unknown>;
|
|
129
|
+
getInboxConversation?(id: string, workspaceId?: string): Promise<unknown>;
|
|
130
|
+
listInboxItems?(args: ListInboxItemsArgs, workspaceId?: string): Promise<unknown>;
|
|
131
|
+
getInboxUnreadCount?(workspaceId?: string): Promise<unknown>;
|
|
132
|
+
replyToInboxItem?(args: InboxReplyArgs, workspaceId?: string): Promise<unknown>;
|
|
133
|
+
sendInboxPrivateReply?(args: InboxReplyArgs, workspaceId?: string): Promise<unknown>;
|
|
134
|
+
setInboxItemState?(args: SetInboxItemStateArgs, workspaceId?: string): Promise<unknown>;
|
|
135
|
+
markInboxConversationRead?(conversationId: string, workspaceId?: string): Promise<unknown>;
|
|
136
|
+
setInboxConversationStatus?(args: SetInboxConversationStatusArgs, workspaceId?: string): Promise<unknown>;
|
|
137
|
+
assignInboxConversation?(args: AssignInboxConversationArgs, workspaceId?: string): Promise<unknown>;
|
|
97
138
|
}
|
|
@@ -10,6 +10,12 @@ export interface BuildToolsOptions {
|
|
|
10
10
|
* this — its pf-api-key is already workspace-scoped.
|
|
11
11
|
*/
|
|
12
12
|
withWorkspaceField?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* When given, tools whose `portMethod` the port instance does not implement
|
|
15
|
+
* are skipped with a stderr log — so an adapter built against an older
|
|
16
|
+
* catalog keeps working when a newer catalog adds tools it can't serve yet.
|
|
17
|
+
*/
|
|
18
|
+
port?: BackendPort;
|
|
13
19
|
}
|
|
14
20
|
/** Resolve the catalog for one binding: filter, flatten binding-variant fields. */
|
|
15
21
|
export declare function buildTools(options: BuildToolsOptions): ResolvedTool[];
|
package/dist/core/build-tools.js
CHANGED
|
@@ -2,8 +2,18 @@ import { workspaceIdField } from './shared.js';
|
|
|
2
2
|
import { ALL_TOOLS } from './tools/index.js';
|
|
3
3
|
/** Resolve the catalog for one binding: filter, flatten binding-variant fields. */
|
|
4
4
|
export function buildTools(options) {
|
|
5
|
-
const { binding, withWorkspaceField = false } = options;
|
|
6
|
-
return ALL_TOOLS.filter((def) =>
|
|
5
|
+
const { binding, withWorkspaceField = false, port } = options;
|
|
6
|
+
return ALL_TOOLS.filter((def) => {
|
|
7
|
+
if (def.binding !== 'both' && def.binding !== binding)
|
|
8
|
+
return false;
|
|
9
|
+
if (port &&
|
|
10
|
+
def.portMethod &&
|
|
11
|
+
typeof port[def.portMethod] !== 'function') {
|
|
12
|
+
console.error(`[postfast-mcp/core] skipping tool "${def.name}": the backend port does not implement ${def.portMethod}() yet (older adapter, newer catalog)`);
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return true;
|
|
16
|
+
}).map((def) => {
|
|
7
17
|
const inputSchema = typeof def.inputSchema === 'function' ? def.inputSchema(binding) : def.inputSchema;
|
|
8
18
|
return {
|
|
9
19
|
name: def.name,
|
|
@@ -15,6 +25,7 @@ export function buildTools(options) {
|
|
|
15
25
|
outputSchema: def.outputSchema,
|
|
16
26
|
annotations: def.annotations,
|
|
17
27
|
_meta: def._meta,
|
|
28
|
+
portMethod: def.portMethod,
|
|
18
29
|
run: def.run,
|
|
19
30
|
};
|
|
20
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-tools.js","sourceRoot":"","sources":["../../src/core/build-tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"build-tools.js","sourceRoot":"","sources":["../../src/core/build-tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAkB7C,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAE9D,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9B,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;QACpE,IACE,IAAI;YACJ,GAAG,CAAC,UAAU;YACd,OAAQ,IAA2C,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,UAAU,EAClF,CAAC;YACD,OAAO,CAAC,KAAK,CACX,sCAAsC,GAAG,CAAC,IAAI,0CAA0C,GAAG,CAAC,UAAU,uCAAuC,CAC9I,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,WAAW,GACf,OAAO,GAAG,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;QAErF,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EACT,OAAO,GAAG,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW;YACpF,WAAW,EACT,kBAAkB,IAAI,GAAG,CAAC,eAAe,KAAK,KAAK;gBACjD,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE;gBACnD,CAAC,CAAC,WAAW;YACjB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,GAAG,EAAE,GAAG,CAAC,GAAG;SACb,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,MAAM,MAAM,GAAmB;QAC7B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;IACF,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,CAAC,CAAC,EAAE,IAAI,EAAE;YACV,CAAC,CAAE,IAAgC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAA0B;IACtD,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,SAAS,CAAE,GAAa,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAMD,oEAAoE;AACpE,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,OAA6B;IAE7B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,IAAI,EACT;YACE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,EACD,CAAC,IAA6B,EAAE,EAAE,CAChC,OAAO,CAAC,GAAG,EAAE;YACX,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,WAAiC,CAAC,CAAC;QACjE,CAAC,CAAC,CACL,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/core/shared.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const PLATFORMS: readonly ["FACEBOOK", "INSTAGRAM", "X", "TIKTOK", "LINKEDIN", "YOUTUBE", "BLUESKY", "THREADS", "PINTEREST", "TELEGRAM", "GOOGLE_BUSINESS_PROFILE"];
|
|
3
3
|
export declare const POST_STATUSES: readonly ["DRAFT", "SCHEDULED", "PUBLISHED", "FAILED"];
|
|
4
|
+
export declare const INBOX_CONVERSATION_STATUSES: readonly ["OPEN", "SNOOZED", "CLOSED"];
|
|
5
|
+
export declare const INBOX_ITEM_STATE_ACTIONS: readonly ["HIDE", "UNHIDE", "DELETE"];
|
|
4
6
|
export declare const CREATE_STATUSES: readonly ["DRAFT", "SCHEDULED"];
|
|
5
7
|
export declare const CREATE_APPROVAL_STATUSES: readonly ["PENDING_APPROVAL", "APPROVED"];
|
|
6
8
|
export declare const SET_APPROVAL_STATUSES: readonly ["PENDING_APPROVAL", "IN_PROGRESS", "APPROVED", "REJECTED", "NEEDS_WORK"];
|
package/dist/core/shared.js
CHANGED
|
@@ -13,6 +13,8 @@ export const PLATFORMS = [
|
|
|
13
13
|
'GOOGLE_BUSINESS_PROFILE',
|
|
14
14
|
];
|
|
15
15
|
export const POST_STATUSES = ['DRAFT', 'SCHEDULED', 'PUBLISHED', 'FAILED'];
|
|
16
|
+
export const INBOX_CONVERSATION_STATUSES = ['OPEN', 'SNOOZED', 'CLOSED'];
|
|
17
|
+
export const INBOX_ITEM_STATE_ACTIONS = ['HIDE', 'UNHIDE', 'DELETE'];
|
|
16
18
|
export const CREATE_STATUSES = ['DRAFT', 'SCHEDULED'];
|
|
17
19
|
export const CREATE_APPROVAL_STATUSES = ['PENDING_APPROVAL', 'APPROVED'];
|
|
18
20
|
export const SET_APPROVAL_STATUSES = [
|
package/dist/core/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/core/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU;IACV,WAAW;IACX,GAAG;IACH,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,WAAW;IACX,UAAU;IACV,yBAAyB;CACjB,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AACpF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,WAAW,CAAU,CAAC;AAC/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAU,CAAC;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,kBAAkB;IAClB,aAAa;IACb,UAAU;IACV,UAAU;IACV,YAAY;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY;IACZ,WAAW;IACX,WAAW;IACX,YAAY;CACJ,CAAC;AACX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,iBAAiB,CAAU,CAAC;AAExF,qFAAqF;AACrF,MAAM,UAAU,SAAS,CAAyB,MAAS;IACzD,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AAE9E,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,IAAI,EAAE;KACN,QAAQ,EAAE;KACV,QAAQ,CACP,6FAA6F,CAC9F,CAAC"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/core/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU;IACV,WAAW;IACX,GAAG;IACH,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,WAAW;IACX,UAAU;IACV,yBAAyB;CACjB,CAAC;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AACpF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAC;AAClF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAC9E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,WAAW,CAAU,CAAC;AAC/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAU,CAAC;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,kBAAkB;IAClB,aAAa;IACb,UAAU;IACV,UAAU;IACV,YAAY;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY;IACZ,WAAW;IACX,WAAW;IACX,YAAY;CACJ,CAAC;AACX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,iBAAiB,CAAU,CAAC;AAExF,qFAAqF;AACrF,MAAM,UAAU,SAAS,CAAyB,MAAS;IACzD,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;AAE9E,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,IAAI,EAAE;KACN,QAAQ,EAAE;KACV,QAAQ,CACP,6FAA6F,CAC9F,CAAC"}
|
package/dist/core/tool-def.d.ts
CHANGED
|
@@ -27,6 +27,13 @@ export interface ToolDef {
|
|
|
27
27
|
_meta?: Record<string, unknown>;
|
|
28
28
|
/** False only for tools that are not scoped to a workspace (list_workspaces). */
|
|
29
29
|
workspaceScoped?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* The BackendPort method this tool's run() dispatches to. When set and the
|
|
32
|
+
* port instance lacks the method (an older adapter running a newer catalog),
|
|
33
|
+
* the tool is skipped at registration with a stderr log instead of shipping
|
|
34
|
+
* a broken tool — lets bindings adopt new tool waves on their own schedule.
|
|
35
|
+
*/
|
|
36
|
+
portMethod?: keyof BackendPort;
|
|
30
37
|
/**
|
|
31
38
|
* Dispatch to the backend. `args` are the validated tool arguments minus
|
|
32
39
|
* `workspaceId`, which is split off by the registrar and passed separately
|
|
@@ -43,5 +50,6 @@ export interface ResolvedTool {
|
|
|
43
50
|
outputSchema?: ZodRawShape;
|
|
44
51
|
annotations: ToolAnnotations;
|
|
45
52
|
_meta?: Record<string, unknown>;
|
|
53
|
+
portMethod?: keyof BackendPort;
|
|
46
54
|
run: ToolDef['run'];
|
|
47
55
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToolDef } from '../tool-def.js';
|
|
2
|
+
/**
|
|
3
|
+
* Social inbox — a COMMENTS inbox (comments on the workspace's own posts;
|
|
4
|
+
* never described as DMs/messages). Coverage: TikTok (Business connections),
|
|
5
|
+
* Instagram, Facebook Pages, Threads. Reply capability is server-computed per
|
|
6
|
+
* conversation (canReply / maxReplyLength / windowState / disabledReason) —
|
|
7
|
+
* descriptions steer models to render from those fields, never platform rules.
|
|
8
|
+
* Every def carries portMethod so bindings whose adapter predates this wave
|
|
9
|
+
* skip these tools instead of shipping broken ones.
|
|
10
|
+
*/
|
|
11
|
+
export declare const inboxTools: ToolDef[];
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { INBOX_CONVERSATION_STATUSES, INBOX_ITEM_STATE_ACTIONS, PLATFORMS, dataListOutputSchema, } from '../shared.js';
|
|
3
|
+
/**
|
|
4
|
+
* Social inbox — a COMMENTS inbox (comments on the workspace's own posts;
|
|
5
|
+
* never described as DMs/messages). Coverage: TikTok (Business connections),
|
|
6
|
+
* Instagram, Facebook Pages, Threads. Reply capability is server-computed per
|
|
7
|
+
* conversation (canReply / maxReplyLength / windowState / disabledReason) —
|
|
8
|
+
* descriptions steer models to render from those fields, never platform rules.
|
|
9
|
+
* Every def carries portMethod so bindings whose adapter predates this wave
|
|
10
|
+
* skip these tools instead of shipping broken ones.
|
|
11
|
+
*/
|
|
12
|
+
export const inboxTools = [
|
|
13
|
+
{
|
|
14
|
+
name: 'list_inbox_conversations',
|
|
15
|
+
binding: 'both',
|
|
16
|
+
title: 'List Inbox Conversations',
|
|
17
|
+
description: "List comment conversations from the social inbox — comments on your connected accounts' posts, grouped per post, newest activity first. Covers TikTok (Business connections), Instagram, Facebook Pages, and Threads; comments arrive within seconds of being posted and only from connect/launch onward (no history backfill). Each conversation carries a server-computed reply capability — canReply, maxReplyLength, windowState, disabledReason — plus unreadCount, status (OPEN | SNOOZED | CLOSED), and assignedToUserId. ALWAYS derive whether and how long you can reply from those fields; never assume platform rules.",
|
|
18
|
+
inputSchema: {
|
|
19
|
+
page: z.number().int().min(0).default(0).describe('Page number (0-based)'),
|
|
20
|
+
limit: z
|
|
21
|
+
.number()
|
|
22
|
+
.int()
|
|
23
|
+
.min(1)
|
|
24
|
+
.max(50)
|
|
25
|
+
.default(20)
|
|
26
|
+
.describe('Conversations per page (max 50)'),
|
|
27
|
+
platforms: z.array(z.enum(PLATFORMS)).optional().describe('Filter by platforms'),
|
|
28
|
+
socialMediaIds: z
|
|
29
|
+
.array(z.uuid())
|
|
30
|
+
.optional()
|
|
31
|
+
.describe('Filter by specific social media account ids (from list_accounts)'),
|
|
32
|
+
statuses: z
|
|
33
|
+
.array(z.enum(INBOX_CONVERSATION_STATUSES))
|
|
34
|
+
.optional()
|
|
35
|
+
.describe('Filter by conversation statuses'),
|
|
36
|
+
unreadOnly: z
|
|
37
|
+
.boolean()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe('Only conversations with unread comments'),
|
|
40
|
+
assignedToUserId: z
|
|
41
|
+
.uuid()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe('Only conversations assigned to this workspace member'),
|
|
44
|
+
},
|
|
45
|
+
outputSchema: dataListOutputSchema,
|
|
46
|
+
annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
|
|
47
|
+
portMethod: 'listInboxConversations',
|
|
48
|
+
run: (port, args, workspaceId) => port.listInboxConversations(args, workspaceId),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'get_inbox_conversation',
|
|
52
|
+
binding: 'both',
|
|
53
|
+
title: 'Get Inbox Conversation',
|
|
54
|
+
description: 'Fetch one inbox conversation by id, including its server-computed reply capability (canReply, maxReplyLength, windowState, disabledReason) — derive reply ability from these fields, never from hardcoded platform rules. Returns null when the conversation does not exist in the workspace.',
|
|
55
|
+
inputSchema: {
|
|
56
|
+
id: z.uuid().describe('Conversation id (from list_inbox_conversations)'),
|
|
57
|
+
},
|
|
58
|
+
annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
|
|
59
|
+
portMethod: 'getInboxConversation',
|
|
60
|
+
run: (port, args, workspaceId) => port.getInboxConversation(args.id, workspaceId),
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'list_inbox_items',
|
|
64
|
+
binding: 'both',
|
|
65
|
+
title: 'List Inbox Items',
|
|
66
|
+
description: 'List the items of one inbox conversation — the comments and the replies sent to them — oldest first by default (order=DESC for newest first). Items carry direction (INBOUND | OUTBOUND), state (VISIBLE | HIDDEN | DELETED), author info, and on Instagram comments canPrivateReply (eligibility for send_inbox_private_reply). Replies sent from PostFast appear exactly once — no duplicates when the platform reports them back.',
|
|
67
|
+
inputSchema: {
|
|
68
|
+
conversationId: z
|
|
69
|
+
.uuid()
|
|
70
|
+
.describe('Conversation id (from list_inbox_conversations)'),
|
|
71
|
+
page: z.number().int().min(0).default(0).describe('Page number (0-based)'),
|
|
72
|
+
limit: z.number().int().min(1).max(50).default(20).describe('Items per page (max 50)'),
|
|
73
|
+
order: z
|
|
74
|
+
.enum(['ASC', 'DESC'])
|
|
75
|
+
.optional()
|
|
76
|
+
.describe('Sort by comment time. Default ASC (oldest first); DESC for newest first.'),
|
|
77
|
+
},
|
|
78
|
+
outputSchema: dataListOutputSchema,
|
|
79
|
+
annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
|
|
80
|
+
portMethod: 'listInboxItems',
|
|
81
|
+
run: (port, args, workspaceId) => port.listInboxItems(args, workspaceId),
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'get_inbox_unread_count',
|
|
85
|
+
binding: 'both',
|
|
86
|
+
title: 'Get Inbox Unread Count',
|
|
87
|
+
description: 'Total unread comment count across all inbox conversations in the workspace (the sum of per-conversation unreadCount). Use mark_inbox_conversation_read after presenting a conversation to the user.',
|
|
88
|
+
inputSchema: {},
|
|
89
|
+
outputSchema: { unreadCount: z.number().optional() },
|
|
90
|
+
annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
|
|
91
|
+
portMethod: 'getInboxUnreadCount',
|
|
92
|
+
run: (port, _args, workspaceId) => port.getInboxUnreadCount(workspaceId),
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'reply_to_inbox_item',
|
|
96
|
+
binding: 'both',
|
|
97
|
+
title: 'Reply to Inbox Comment',
|
|
98
|
+
description: "Reply publicly UNDER a specific comment — pass the comment item's id (from list_inbox_items), not the conversation id. BEFORE replying, check the conversation's canReply and maxReplyLength and stay within them; the caps are per platform (TikTok 150, Instagram 2,200, Facebook 8,000, Threads 500 characters) but the server-computed fields are authoritative — never assume. Failures return inbox.* codes (e.g. replyTooLong, replyNotSupported, rateLimited).",
|
|
99
|
+
inputSchema: {
|
|
100
|
+
itemId: z.uuid().describe('The comment item id to reply under (from list_inbox_items)'),
|
|
101
|
+
text: z.string().min(1).describe("Reply text. Must fit the conversation's maxReplyLength."),
|
|
102
|
+
},
|
|
103
|
+
outputSchema: { id: z.string().optional() },
|
|
104
|
+
annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
|
|
105
|
+
portMethod: 'replyToInboxItem',
|
|
106
|
+
run: (port, args, workspaceId) => port.replyToInboxItem(args, workspaceId),
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'send_inbox_private_reply',
|
|
110
|
+
binding: 'both',
|
|
111
|
+
title: 'Send Instagram Private Reply',
|
|
112
|
+
description: "Instagram only: send ONE private reply to a comment — it arrives as a direct message to the commenter and may land in their Message Requests folder. Allowed once per comment, within 7 days of the comment, up to 1,000 bytes (emoji and non-Latin text count multi-byte — roughly 1,000 characters, less with emoji). Check the item's canPrivateReply first (from list_inbox_items). A second attempt on the same comment fails with inbox.privateReplyAlreadySent; other failures include privateReplyWindowExpired and privateReplyNotSupported.",
|
|
113
|
+
inputSchema: {
|
|
114
|
+
itemId: z
|
|
115
|
+
.uuid()
|
|
116
|
+
.describe('The Instagram comment item id to reply privately to (canPrivateReply must be true)'),
|
|
117
|
+
text: z.string().min(1).describe('Private reply text (max 1,000 bytes)'),
|
|
118
|
+
},
|
|
119
|
+
outputSchema: { id: z.string().optional() },
|
|
120
|
+
annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
|
|
121
|
+
portMethod: 'sendInboxPrivateReply',
|
|
122
|
+
run: (port, args, workspaceId) => port.sendInboxPrivateReply(args, workspaceId),
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: 'set_inbox_item_state',
|
|
126
|
+
binding: 'both',
|
|
127
|
+
title: 'Moderate Inbox Comment',
|
|
128
|
+
description: 'Moderate a comment on the platform: HIDE hides it from the public, UNHIDE restores it, DELETE removes the comment on the platform — cannot be undone. Hide/unhide work on TikTok, Instagram, Facebook, and Threads; DELETE is not supported on Threads (inbox.deleteNotSupported). State changes made on the platform itself sync back to the inbox automatically.',
|
|
129
|
+
inputSchema: {
|
|
130
|
+
itemId: z.uuid().describe('The comment item id (from list_inbox_items)'),
|
|
131
|
+
action: z
|
|
132
|
+
.enum(INBOX_ITEM_STATE_ACTIONS)
|
|
133
|
+
.describe('HIDE, UNHIDE, or DELETE (DELETE is irreversible)'),
|
|
134
|
+
},
|
|
135
|
+
outputSchema: { id: z.string().optional() },
|
|
136
|
+
annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
|
|
137
|
+
portMethod: 'setInboxItemState',
|
|
138
|
+
run: (port, args, workspaceId) => port.setInboxItemState(args, workspaceId),
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: 'mark_inbox_conversation_read',
|
|
142
|
+
binding: 'both',
|
|
143
|
+
title: 'Mark Inbox Conversation Read',
|
|
144
|
+
description: "Mark one conversation read (zeroes its unreadCount). Do this after presenting a conversation's comments to the user. Internal to PostFast — nothing changes on the platform.",
|
|
145
|
+
inputSchema: {
|
|
146
|
+
conversationId: z
|
|
147
|
+
.uuid()
|
|
148
|
+
.describe('Conversation id (from list_inbox_conversations)'),
|
|
149
|
+
},
|
|
150
|
+
outputSchema: { id: z.string().optional() },
|
|
151
|
+
annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: false },
|
|
152
|
+
portMethod: 'markInboxConversationRead',
|
|
153
|
+
run: (port, args, workspaceId) => port.markInboxConversationRead(args.conversationId, workspaceId),
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
name: 'set_inbox_conversation_status',
|
|
157
|
+
binding: 'both',
|
|
158
|
+
title: 'Set Inbox Conversation Status',
|
|
159
|
+
description: 'Triage a conversation: set its status to OPEN, SNOOZED, or CLOSED. Internal to PostFast — nothing changes on the platform.',
|
|
160
|
+
inputSchema: {
|
|
161
|
+
conversationId: z
|
|
162
|
+
.uuid()
|
|
163
|
+
.describe('Conversation id (from list_inbox_conversations)'),
|
|
164
|
+
status: z.enum(INBOX_CONVERSATION_STATUSES).describe('New conversation status'),
|
|
165
|
+
},
|
|
166
|
+
outputSchema: { id: z.string().optional() },
|
|
167
|
+
annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: false },
|
|
168
|
+
portMethod: 'setInboxConversationStatus',
|
|
169
|
+
run: (port, args, workspaceId) => port.setInboxConversationStatus(args, workspaceId),
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
name: 'assign_inbox_conversation',
|
|
173
|
+
binding: 'both',
|
|
174
|
+
title: 'Assign Inbox Conversation',
|
|
175
|
+
description: 'Assign a conversation to a workspace member for follow-up, or omit assigneeUserId to unassign. The assignee must be a member of the workspace (inbox.assigneeNotMember otherwise). Internal to PostFast — nothing changes on the platform.',
|
|
176
|
+
inputSchema: {
|
|
177
|
+
conversationId: z
|
|
178
|
+
.uuid()
|
|
179
|
+
.describe('Conversation id (from list_inbox_conversations)'),
|
|
180
|
+
assigneeUserId: z
|
|
181
|
+
.uuid()
|
|
182
|
+
.optional()
|
|
183
|
+
.describe('Workspace member user id to assign. Omit to unassign.'),
|
|
184
|
+
},
|
|
185
|
+
outputSchema: { id: z.string().optional() },
|
|
186
|
+
annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: false },
|
|
187
|
+
portMethod: 'assignInboxConversation',
|
|
188
|
+
run: (port, args, workspaceId) => port.assignInboxConversation(args, workspaceId),
|
|
189
|
+
},
|
|
190
|
+
];
|
|
191
|
+
//# sourceMappingURL=inbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/core/tools/inbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ToolDef } from '../tool-def.js';
|
|
2
2
|
/**
|
|
3
|
-
* Every PostFast tool, in registration order. The order filtered to
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* Every PostFast tool, in registration order. The order filtered to a binding
|
|
4
|
+
* must stay a superset-append of the published order — clients and their
|
|
5
|
+
* prompts see it, so existing tools keep their positions and new waves go
|
|
6
|
+
* at the end.
|
|
6
7
|
*/
|
|
7
8
|
export declare const ALL_TOOLS: ToolDef[];
|
package/dist/core/tools/index.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { accountTools } from './accounts.js';
|
|
2
|
+
import { inboxTools } from './inbox.js';
|
|
2
3
|
import { postTools } from './posts.js';
|
|
3
4
|
import { uploadTools } from './uploads.js';
|
|
4
5
|
import { workspaceTools } from './workspaces.js';
|
|
5
6
|
/**
|
|
6
|
-
* Every PostFast tool, in registration order. The order filtered to
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* Every PostFast tool, in registration order. The order filtered to a binding
|
|
8
|
+
* must stay a superset-append of the published order — clients and their
|
|
9
|
+
* prompts see it, so existing tools keep their positions and new waves go
|
|
10
|
+
* at the end.
|
|
9
11
|
*/
|
|
10
12
|
export const ALL_TOOLS = [
|
|
11
13
|
...postTools,
|
|
12
14
|
...accountTools,
|
|
13
15
|
...workspaceTools,
|
|
14
16
|
...uploadTools,
|
|
17
|
+
...inboxTools,
|
|
15
18
|
];
|
|
16
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC,GAAG,SAAS;IACZ,GAAG,YAAY;IACf,GAAG,cAAc;IACjB,GAAG,WAAW;IACd,GAAG,UAAU;CACd,CAAC"}
|
package/dist/stdio/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { instructionsFor } from '../core/instructions.js';
|
|
|
6
6
|
import { RestAdapter } from './rest-adapter.js';
|
|
7
7
|
const server = new McpServer({
|
|
8
8
|
name: 'postfast',
|
|
9
|
-
version: '0.
|
|
9
|
+
version: '0.3.0',
|
|
10
10
|
}, { instructions: instructionsFor('stdio') });
|
|
11
11
|
const port = new RestAdapter();
|
|
12
12
|
registerCatalogTools(server, { binding: 'stdio', port });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnalyticsArgs, ApprovePostsArgs, BackendPort, ConnectLinkArgs, CreatePostsArgs, FollowerHistoryArgs, ListPostsArgs, LocalUploadResult, UploadUrlsArgs } from '../core/backend-port.js';
|
|
1
|
+
import type { AnalyticsArgs, ApprovePostsArgs, AssignInboxConversationArgs, BackendPort, ConnectLinkArgs, CreatePostsArgs, FollowerHistoryArgs, InboxReplyArgs, ListInboxConversationsArgs, ListInboxItemsArgs, ListPostsArgs, LocalUploadResult, SetInboxConversationStatusArgs, SetInboxItemStateArgs, UploadUrlsArgs } from '../core/backend-port.js';
|
|
2
2
|
/** The stdio bin's BackendPort: the public PostFast REST API over pf-api-key. */
|
|
3
3
|
export declare class RestAdapter implements BackendPort {
|
|
4
4
|
private baseUrl;
|
|
@@ -24,4 +24,14 @@ export declare class RestAdapter implements BackendPort {
|
|
|
24
24
|
uploadLocalFile(filePath: string): Promise<LocalUploadResult>;
|
|
25
25
|
uploadFromUrl(): Promise<unknown>;
|
|
26
26
|
uploadMedia(): Promise<unknown>;
|
|
27
|
+
listInboxConversations(args: ListInboxConversationsArgs): Promise<unknown>;
|
|
28
|
+
getInboxConversation(id: string): Promise<unknown>;
|
|
29
|
+
listInboxItems(args: ListInboxItemsArgs): Promise<unknown>;
|
|
30
|
+
getInboxUnreadCount(): Promise<unknown>;
|
|
31
|
+
replyToInboxItem(args: InboxReplyArgs): Promise<unknown>;
|
|
32
|
+
sendInboxPrivateReply(args: InboxReplyArgs): Promise<unknown>;
|
|
33
|
+
setInboxItemState(args: SetInboxItemStateArgs): Promise<unknown>;
|
|
34
|
+
markInboxConversationRead(conversationId: string): Promise<unknown>;
|
|
35
|
+
setInboxConversationStatus(args: SetInboxConversationStatusArgs): Promise<unknown>;
|
|
36
|
+
assignInboxConversation(args: AssignInboxConversationArgs): Promise<unknown>;
|
|
27
37
|
}
|
|
@@ -166,5 +166,57 @@ export class RestAdapter {
|
|
|
166
166
|
uploadMedia() {
|
|
167
167
|
throw new Error('Conversation-media upload is only available on the hosted PostFast MCP server.');
|
|
168
168
|
}
|
|
169
|
+
listInboxConversations(args) {
|
|
170
|
+
return this.get('/social-inbox/conversations', {
|
|
171
|
+
page: String(args.page),
|
|
172
|
+
limit: String(args.limit),
|
|
173
|
+
platforms: args.platforms?.join(','),
|
|
174
|
+
socialMediaIds: args.socialMediaIds?.join(','),
|
|
175
|
+
statuses: args.statuses?.join(','),
|
|
176
|
+
unreadOnly: args.unreadOnly === undefined ? undefined : String(args.unreadOnly),
|
|
177
|
+
assignedToUserId: args.assignedToUserId,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
getInboxConversation(id) {
|
|
181
|
+
return this.get(`/social-inbox/conversations/${id}`);
|
|
182
|
+
}
|
|
183
|
+
listInboxItems(args) {
|
|
184
|
+
return this.get(`/social-inbox/conversations/${args.conversationId}/items`, {
|
|
185
|
+
page: String(args.page),
|
|
186
|
+
limit: String(args.limit),
|
|
187
|
+
order: args.order,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
getInboxUnreadCount() {
|
|
191
|
+
return this.get('/social-inbox/unread-count');
|
|
192
|
+
}
|
|
193
|
+
replyToInboxItem(args) {
|
|
194
|
+
return this.post(`/social-inbox/items/${args.itemId}/reply`, {
|
|
195
|
+
text: args.text,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
sendInboxPrivateReply(args) {
|
|
199
|
+
return this.post(`/social-inbox/items/${args.itemId}/private-reply`, {
|
|
200
|
+
text: args.text,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
setInboxItemState(args) {
|
|
204
|
+
return this.post(`/social-inbox/items/${args.itemId}/state`, {
|
|
205
|
+
action: args.action,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
markInboxConversationRead(conversationId) {
|
|
209
|
+
return this.post(`/social-inbox/conversations/${conversationId}/read`);
|
|
210
|
+
}
|
|
211
|
+
setInboxConversationStatus(args) {
|
|
212
|
+
return this.post(`/social-inbox/conversations/${args.conversationId}/status`, {
|
|
213
|
+
status: args.status,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
assignInboxConversation(args) {
|
|
217
|
+
return this.post(`/social-inbox/conversations/${args.conversationId}/assign`, {
|
|
218
|
+
assigneeUserId: args.assigneeUserId,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
169
221
|
}
|
|
170
222
|
//# sourceMappingURL=rest-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest-adapter.js","sourceRoot":"","sources":["../../src/stdio/rest-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"rest-adapter.js","sourceRoot":"","sources":["../../src/stdio/rest-adapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "postfast-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"mcpName": "io.github.peturgeorgievv-factory/postfast-mcp",
|
|
5
5
|
"description": "MCP server for the PostFast API — schedule and manage social media posts via AI tools",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,6 @@
|
|
|
29
29
|
"dev": "tsc --watch",
|
|
30
30
|
"start": "node dist/stdio/index.js",
|
|
31
31
|
"version": "changeset version && node scripts/stamp-versions.mjs",
|
|
32
|
-
"release": "npm run build && changeset publish",
|
|
33
32
|
"prepublishOnly": "npm run build"
|
|
34
33
|
},
|
|
35
34
|
"keywords": [
|