posterly-mcp-server 0.44.0 → 0.45.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/README.md +310 -111
- package/dist/index.js +190 -894
- package/dist/lib/alias-transport.d.ts +84 -0
- package/dist/lib/alias-transport.js +193 -0
- package/dist/lib/api-client.d.ts +18 -0
- package/dist/lib/api-client.js +55 -0
- package/dist/lib/preview-token-core.d.ts +62 -0
- package/dist/lib/preview-token-core.js +131 -0
- package/dist/lib/preview-token.d.ts +23 -0
- package/dist/lib/preview-token.js +44 -0
- package/dist/lib/tool-registry.d.ts +246 -0
- package/dist/lib/tool-registry.js +394 -0
- package/dist/lib/tool-runtime.d.ts +68 -0
- package/dist/lib/tool-runtime.js +85 -0
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/tools/audit-google-business-profile.js +1 -1
- package/dist/tools/connect-account.d.ts +4 -4
- package/dist/tools/connect-account.js +2 -2
- package/dist/tools/create-connect-session.d.ts +2 -2
- package/dist/tools/create-connect-session.js +2 -2
- package/dist/tools/create-post.d.ts +6 -6
- package/dist/tools/create-post.js +3 -3
- package/dist/tools/create-posts-batch.d.ts +4 -4
- package/dist/tools/create-webhook.d.ts +2 -2
- package/dist/tools/delete-post.d.ts +34 -10
- package/dist/tools/delete-post.js +52 -16
- package/dist/tools/generate-captions.d.ts +2 -2
- package/dist/tools/generate-image.d.ts +4 -4
- package/dist/tools/generate-image.js +2 -2
- package/dist/tools/generate-video.d.ts +6 -6
- package/dist/tools/generate-video.js +1 -1
- package/dist/tools/get-agent-signup-info.js +2 -2
- package/dist/tools/get-post.d.ts +16 -1
- package/dist/tools/get-post.js +35 -19
- package/dist/tools/list-accounts.d.ts +49 -3
- package/dist/tools/list-accounts.js +148 -33
- package/dist/tools/list-analytics.d.ts +111 -0
- package/dist/tools/list-analytics.js +393 -0
- package/dist/tools/list-brands.d.ts +38 -3
- package/dist/tools/list-brands.js +138 -20
- package/dist/tools/list-comments.d.ts +29 -9
- package/dist/tools/list-comments.js +75 -34
- package/dist/tools/list-conversations.d.ts +32 -9
- package/dist/tools/list-conversations.js +63 -27
- package/dist/tools/list-google-business-media.js +1 -1
- package/dist/tools/list-google-business-reviews.d.ts +32 -9
- package/dist/tools/list-google-business-reviews.js +77 -52
- package/dist/tools/list-jobs.d.ts +60 -0
- package/dist/tools/list-jobs.js +81 -0
- package/dist/tools/list-platforms.d.ts +62 -3
- package/dist/tools/list-platforms.js +118 -9
- package/dist/tools/list-posts.d.ts +2 -2
- package/dist/tools/manage-comment.d.ts +102 -0
- package/dist/tools/manage-comment.js +125 -0
- package/dist/tools/manage-conversation.d.ts +79 -0
- package/dist/tools/manage-conversation.js +75 -0
- package/dist/tools/manage-google-business-media.d.ts +103 -0
- package/dist/tools/manage-google-business-media.js +126 -0
- package/dist/tools/manage-google-business-review.d.ts +146 -0
- package/dist/tools/manage-google-business-review.js +115 -0
- package/dist/tools/manage-oauth-client.d.ts +121 -0
- package/dist/tools/manage-oauth-client.js +94 -0
- package/dist/tools/manage-webhook.d.ts +99 -0
- package/dist/tools/manage-webhook.js +87 -0
- package/dist/tools/start-signup.d.ts +2 -2
- package/dist/tools/submit-agent-feedback.d.ts +4 -4
- package/dist/tools/trigger-platform-helper.d.ts +2 -2
- package/dist/tools/update-post.d.ts +62 -11
- package/dist/tools/update-post.js +79 -26
- package/dist/tools/upload-media.d.ts +32 -9
- package/dist/tools/upload-media.js +54 -18
- package/dist/tools/validate-post.d.ts +4 -4
- package/dist/tools/whoami.d.ts +15 -2
- package/dist/tools/whoami.js +221 -25
- package/package.json +5 -3
- package/scripts/test-alias-transport.mjs +368 -0
- package/scripts/test-client-header-sanitization.mjs +78 -0
- package/scripts/test-tool-annotations.mjs +38 -17
- package/server.json +9 -2
- package/src/index.ts +227 -1443
- package/src/lib/alias-transport.ts +233 -0
- package/src/lib/api-client.ts +65 -0
- package/src/lib/preview-token-core.ts +157 -0
- package/src/lib/preview-token.ts +54 -0
- package/src/lib/tool-registry.ts +538 -0
- package/src/lib/tool-runtime.ts +117 -0
- package/src/lib/version.ts +1 -1
- package/src/tools/audit-google-business-profile.ts +1 -1
- package/src/tools/connect-account.ts +2 -2
- package/src/tools/create-connect-session.ts +2 -2
- package/src/tools/create-post.ts +3 -3
- package/src/tools/delete-post.ts +60 -19
- package/src/tools/generate-image.ts +2 -2
- package/src/tools/generate-video.ts +1 -1
- package/src/tools/get-agent-signup-info.ts +2 -2
- package/src/tools/get-post.ts +35 -21
- package/src/tools/list-accounts.ts +187 -39
- package/src/tools/list-analytics.ts +444 -0
- package/src/tools/list-brands.ts +162 -26
- package/src/tools/list-comments.ts +86 -43
- package/src/tools/list-conversations.ts +81 -39
- package/src/tools/list-google-business-media.ts +1 -1
- package/src/tools/list-google-business-reviews.ts +93 -64
- package/src/tools/list-jobs.ts +91 -0
- package/src/tools/list-platforms.ts +135 -11
- package/src/tools/manage-comment.ts +142 -0
- package/src/tools/manage-conversation.ts +89 -0
- package/src/tools/manage-google-business-media.ts +147 -0
- package/src/tools/manage-google-business-review.ts +139 -0
- package/src/tools/manage-oauth-client.ts +116 -0
- package/src/tools/manage-webhook.ts +103 -0
- package/src/tools/update-post.ts +106 -39
- package/src/tools/upload-media.ts +76 -28
- package/src/tools/whoami.ts +253 -30
- package/tool-annotations.json +76 -149
- package/tool-registry.json +2085 -0
- package/src/tools/add-google-business-media.ts +0 -50
- package/src/tools/create-oauth-client.ts +0 -36
- package/src/tools/delete-comment.ts +0 -29
- package/src/tools/delete-google-business-media.ts +0 -30
- package/src/tools/delete-google-business-review-reply.ts +0 -30
- package/src/tools/delete-oauth-client.ts +0 -23
- package/src/tools/delete-post-group.ts +0 -17
- package/src/tools/delete-webhook.ts +0 -17
- package/src/tools/get-account-analytics.ts +0 -171
- package/src/tools/get-brand-profile.ts +0 -86
- package/src/tools/get-brand.ts +0 -34
- package/src/tools/get-comment.ts +0 -47
- package/src/tools/get-connect-link.ts +0 -61
- package/src/tools/get-connect-session.ts +0 -63
- package/src/tools/get-conversation.ts +0 -44
- package/src/tools/get-google-business-review-link.ts +0 -30
- package/src/tools/get-image-job.ts +0 -36
- package/src/tools/get-learned-voice.ts +0 -31
- package/src/tools/get-mcp-status.ts +0 -212
- package/src/tools/get-performance-profile.ts +0 -47
- package/src/tools/get-platform-schema.ts +0 -56
- package/src/tools/get-post-analytics.ts +0 -243
- package/src/tools/get-post-insights.ts +0 -60
- package/src/tools/get-post-missing.ts +0 -16
- package/src/tools/get-video-job.ts +0 -36
- package/src/tools/list-brand-accounts.ts +0 -36
- package/src/tools/reply-google-business-review.ts +0 -32
- package/src/tools/reply-to-comment.ts +0 -30
- package/src/tools/send-message.ts +0 -28
- package/src/tools/suggest-google-business-review-reply.ts +0 -44
- package/src/tools/sync-inbox.ts +0 -28
- package/src/tools/test-webhook.ts +0 -18
- package/src/tools/update-comment.ts +0 -31
- package/src/tools/update-oauth-client.ts +0 -38
- package/src/tools/update-post-release-id.ts +0 -25
- package/src/tools/update-post-status.ts +0 -31
- package/src/tools/update-webhook.ts +0 -36
- package/src/tools/upload-media-from-url.ts +0 -33
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { PosterlyClient } from '../lib/api-client.js';
|
|
3
|
+
import { type ToolContext } from '../lib/tool-runtime.js';
|
|
4
|
+
type ManageOAuthClientInput = {
|
|
5
|
+
action: 'create' | 'update' | 'delete';
|
|
6
|
+
client_id?: string;
|
|
7
|
+
client_name?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
homepage?: string;
|
|
10
|
+
allowed_redirect_uris?: string[];
|
|
11
|
+
default_scopes?: string[];
|
|
12
|
+
is_active?: boolean;
|
|
13
|
+
confirm?: boolean;
|
|
14
|
+
preview_id?: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const manageOAuthClientTool: {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputSchema: z.ZodObject<{
|
|
20
|
+
action: z.ZodEnum<["create", "update", "delete"]>;
|
|
21
|
+
client_id: z.ZodOptional<z.ZodString>;
|
|
22
|
+
client_name: z.ZodOptional<z.ZodString>;
|
|
23
|
+
description: z.ZodOptional<z.ZodString>;
|
|
24
|
+
homepage: z.ZodOptional<z.ZodString>;
|
|
25
|
+
allowed_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
26
|
+
default_scopes: z.ZodOptional<z.ZodArray<z.ZodEnum<["accounts:read", "accounts:write", "posts:read", "posts:write", "media:write", "analytics:read"]>, "many">>;
|
|
27
|
+
is_active: z.ZodOptional<z.ZodBoolean>;
|
|
28
|
+
confirm: z.ZodOptional<z.ZodBoolean>;
|
|
29
|
+
preview_id: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
action: "update" | "create" | "delete";
|
|
32
|
+
description?: string | undefined;
|
|
33
|
+
confirm?: boolean | undefined;
|
|
34
|
+
preview_id?: string | undefined;
|
|
35
|
+
client_id?: string | undefined;
|
|
36
|
+
client_name?: string | undefined;
|
|
37
|
+
homepage?: string | undefined;
|
|
38
|
+
allowed_redirect_uris?: string[] | undefined;
|
|
39
|
+
default_scopes?: ("accounts:read" | "accounts:write" | "posts:read" | "posts:write" | "media:write" | "analytics:read")[] | undefined;
|
|
40
|
+
is_active?: boolean | undefined;
|
|
41
|
+
}, {
|
|
42
|
+
action: "update" | "create" | "delete";
|
|
43
|
+
description?: string | undefined;
|
|
44
|
+
confirm?: boolean | undefined;
|
|
45
|
+
preview_id?: string | undefined;
|
|
46
|
+
client_id?: string | undefined;
|
|
47
|
+
client_name?: string | undefined;
|
|
48
|
+
homepage?: string | undefined;
|
|
49
|
+
allowed_redirect_uris?: string[] | undefined;
|
|
50
|
+
default_scopes?: ("accounts:read" | "accounts:write" | "posts:read" | "posts:write" | "media:write" | "analytics:read")[] | undefined;
|
|
51
|
+
is_active?: boolean | undefined;
|
|
52
|
+
}>;
|
|
53
|
+
/** The old tools' exact input schemas, for alias calls (see alias-transport.ts). */
|
|
54
|
+
legacySchemas: {
|
|
55
|
+
create_oauth_client: z.ZodObject<{
|
|
56
|
+
client_name: z.ZodString;
|
|
57
|
+
description: z.ZodOptional<z.ZodString>;
|
|
58
|
+
homepage: z.ZodOptional<z.ZodString>;
|
|
59
|
+
allowed_redirect_uris: z.ZodArray<z.ZodString, "many">;
|
|
60
|
+
default_scopes: z.ZodArray<z.ZodEnum<["accounts:read", "accounts:write", "posts:read", "posts:write", "media:write", "analytics:read"]>, "many">;
|
|
61
|
+
is_active: z.ZodOptional<z.ZodBoolean>;
|
|
62
|
+
confirm: z.ZodLiteral<true>;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
confirm: true;
|
|
65
|
+
client_name: string;
|
|
66
|
+
allowed_redirect_uris: string[];
|
|
67
|
+
default_scopes: ("accounts:read" | "accounts:write" | "posts:read" | "posts:write" | "media:write" | "analytics:read")[];
|
|
68
|
+
description?: string | undefined;
|
|
69
|
+
homepage?: string | undefined;
|
|
70
|
+
is_active?: boolean | undefined;
|
|
71
|
+
}, {
|
|
72
|
+
confirm: true;
|
|
73
|
+
client_name: string;
|
|
74
|
+
allowed_redirect_uris: string[];
|
|
75
|
+
default_scopes: ("accounts:read" | "accounts:write" | "posts:read" | "posts:write" | "media:write" | "analytics:read")[];
|
|
76
|
+
description?: string | undefined;
|
|
77
|
+
homepage?: string | undefined;
|
|
78
|
+
is_active?: boolean | undefined;
|
|
79
|
+
}>;
|
|
80
|
+
update_oauth_client: z.ZodObject<{
|
|
81
|
+
client_id: z.ZodString;
|
|
82
|
+
client_name: z.ZodOptional<z.ZodString>;
|
|
83
|
+
description: z.ZodOptional<z.ZodString>;
|
|
84
|
+
homepage: z.ZodOptional<z.ZodString>;
|
|
85
|
+
allowed_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
86
|
+
default_scopes: z.ZodOptional<z.ZodArray<z.ZodEnum<["accounts:read", "accounts:write", "posts:read", "posts:write", "media:write", "analytics:read"]>, "many">>;
|
|
87
|
+
is_active: z.ZodOptional<z.ZodBoolean>;
|
|
88
|
+
confirm: z.ZodLiteral<true>;
|
|
89
|
+
}, "strip", z.ZodTypeAny, {
|
|
90
|
+
confirm: true;
|
|
91
|
+
client_id: string;
|
|
92
|
+
description?: string | undefined;
|
|
93
|
+
client_name?: string | undefined;
|
|
94
|
+
homepage?: string | undefined;
|
|
95
|
+
allowed_redirect_uris?: string[] | undefined;
|
|
96
|
+
default_scopes?: ("accounts:read" | "accounts:write" | "posts:read" | "posts:write" | "media:write" | "analytics:read")[] | undefined;
|
|
97
|
+
is_active?: boolean | undefined;
|
|
98
|
+
}, {
|
|
99
|
+
confirm: true;
|
|
100
|
+
client_id: string;
|
|
101
|
+
description?: string | undefined;
|
|
102
|
+
client_name?: string | undefined;
|
|
103
|
+
homepage?: string | undefined;
|
|
104
|
+
allowed_redirect_uris?: string[] | undefined;
|
|
105
|
+
default_scopes?: ("accounts:read" | "accounts:write" | "posts:read" | "posts:write" | "media:write" | "analytics:read")[] | undefined;
|
|
106
|
+
is_active?: boolean | undefined;
|
|
107
|
+
}>;
|
|
108
|
+
delete_oauth_client: z.ZodObject<{
|
|
109
|
+
client_id: z.ZodString;
|
|
110
|
+
confirm: z.ZodLiteral<true>;
|
|
111
|
+
}, "strip", z.ZodTypeAny, {
|
|
112
|
+
confirm: true;
|
|
113
|
+
client_id: string;
|
|
114
|
+
}, {
|
|
115
|
+
confirm: true;
|
|
116
|
+
client_id: string;
|
|
117
|
+
}>;
|
|
118
|
+
};
|
|
119
|
+
execute(client: PosterlyClient, input: ManageOAuthClientInput, ctx: ToolContext): Promise<string>;
|
|
120
|
+
};
|
|
121
|
+
export {};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { code, mdKeyValue, mdSection } from '../lib/format.js';
|
|
3
|
+
import { omitKeys, previewThenConfirm, readFailedNote, readForPreview, validateArgs } from '../lib/tool-runtime.js';
|
|
4
|
+
const scopeSchema = z.enum(['accounts:read', 'accounts:write', 'posts:read', 'posts:write', 'media:write', 'analytics:read']);
|
|
5
|
+
export const manageOAuthClientTool = {
|
|
6
|
+
name: 'manage_oauth_client',
|
|
7
|
+
description: 'Manage self-serve OAuth 2.1 + PKCE developer clients (public clients with no client secret; list them with list_oauth_clients). action=create: client_name, allowed_redirect_uris, and default_scopes; confirm=true only after the user confirms the name, redirect URIs, and scopes. action=update: client_id plus the changed fields; confirm=true after the user confirms the changes. action=delete: client_id; prevents new authorizations (existing access tokens stay revocable as API keys); preview then confirm: call without confirm to get a preview and preview_id, show it, then call again with confirm=true and that preview_id.',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
action: z.enum(['create', 'update', 'delete']).describe('create, update, or delete.'),
|
|
10
|
+
client_id: z.string().min(1).optional().describe('update and delete: the client_id from list_oauth_clients.'),
|
|
11
|
+
client_name: z.string().min(1).max(120).optional().describe('create (required) or update.'),
|
|
12
|
+
description: z.string().max(500).optional(),
|
|
13
|
+
homepage: z.string().url().optional(),
|
|
14
|
+
allowed_redirect_uris: z.array(z.string().url()).min(1).max(10).optional().describe('create (required) or update.'),
|
|
15
|
+
default_scopes: z.array(scopeSchema).min(1).optional().describe('create (required) or update.'),
|
|
16
|
+
is_active: z.boolean().optional(),
|
|
17
|
+
confirm: z
|
|
18
|
+
.boolean()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('create and update: true after explicit user confirmation. delete: leave out to get a preview; true only with the preview_id after the user approved it.'),
|
|
21
|
+
preview_id: z.string().optional().describe('delete: the preview_id from the preview call. Required with confirm: true.'),
|
|
22
|
+
}),
|
|
23
|
+
/** The old tools' exact input schemas, for alias calls (see alias-transport.ts). */
|
|
24
|
+
legacySchemas: {
|
|
25
|
+
create_oauth_client: z.object({
|
|
26
|
+
client_name: z.string().min(1).max(120),
|
|
27
|
+
description: z.string().max(500).optional(),
|
|
28
|
+
homepage: z.string().url().optional(),
|
|
29
|
+
allowed_redirect_uris: z.array(z.string().url()).min(1).max(10),
|
|
30
|
+
default_scopes: z.array(scopeSchema).min(1),
|
|
31
|
+
is_active: z.boolean().optional(),
|
|
32
|
+
confirm: z.literal(true),
|
|
33
|
+
}),
|
|
34
|
+
update_oauth_client: z.object({
|
|
35
|
+
client_id: z.string().min(1),
|
|
36
|
+
client_name: z.string().min(1).max(120).optional(),
|
|
37
|
+
description: z.string().max(500).optional(),
|
|
38
|
+
homepage: z.string().url().optional(),
|
|
39
|
+
allowed_redirect_uris: z.array(z.string().url()).min(1).max(10).optional(),
|
|
40
|
+
default_scopes: z.array(scopeSchema).min(1).optional(),
|
|
41
|
+
is_active: z.boolean().optional(),
|
|
42
|
+
confirm: z.literal(true),
|
|
43
|
+
}),
|
|
44
|
+
delete_oauth_client: z.object({ client_id: z.string().min(1), confirm: z.literal(true) }),
|
|
45
|
+
},
|
|
46
|
+
async execute(client, input, ctx) {
|
|
47
|
+
const { mode, args } = validateArgs(ctx, 'manage_oauth_client', input);
|
|
48
|
+
const call = args;
|
|
49
|
+
if (mode === 'create') {
|
|
50
|
+
if (call.confirm !== true) {
|
|
51
|
+
throw new Error('Refusing to create OAuth client without confirm=true after explicit user confirmation.');
|
|
52
|
+
}
|
|
53
|
+
const payload = omitKeys(call, ['action', 'confirm', 'preview_id']);
|
|
54
|
+
const result = await client.createOAuthClient(payload);
|
|
55
|
+
return `OAuth client created: ${result.client.client_name}\nclient_id: ${result.client.client_id}\nRedirect URIs: ${result.client.allowed_redirect_uris.join(', ')}`;
|
|
56
|
+
}
|
|
57
|
+
if (mode === 'update') {
|
|
58
|
+
if (call.confirm !== true) {
|
|
59
|
+
throw new Error('Refusing to update OAuth client without confirm=true after explicit user confirmation.');
|
|
60
|
+
}
|
|
61
|
+
const payload = omitKeys(call, ['action', 'confirm', 'preview_id', 'client_id']);
|
|
62
|
+
const result = await client.updateOAuthClient(String(call.client_id), payload);
|
|
63
|
+
return `OAuth client updated: ${result.client.client_name} (${result.client.client_id}) active=${result.client.is_active}`;
|
|
64
|
+
}
|
|
65
|
+
return previewThenConfirm({
|
|
66
|
+
tool: 'manage_oauth_client',
|
|
67
|
+
action: 'delete',
|
|
68
|
+
args,
|
|
69
|
+
nonce: false,
|
|
70
|
+
legacyRefusal: 'Refusing to delete OAuth client without confirm=true after explicit user confirmation.',
|
|
71
|
+
ctx,
|
|
72
|
+
describe: async () => {
|
|
73
|
+
const read = await readForPreview(() => client.listOAuthClients());
|
|
74
|
+
const found = read.ok ? read.data.clients.find((item) => String(item.client_id) === String(call.client_id)) : null;
|
|
75
|
+
const details = found
|
|
76
|
+
? mdSection('OAuth client', mdKeyValue([
|
|
77
|
+
['Name', found.client_name],
|
|
78
|
+
['Client ID', code(found.client_id)],
|
|
79
|
+
['Redirect URIs', found.allowed_redirect_uris.join(', ')],
|
|
80
|
+
['Active', found.is_active],
|
|
81
|
+
]))
|
|
82
|
+
: [
|
|
83
|
+
read.ok ? '_This client was not found in your OAuth client list, so the preview shows the request as given._' : readFailedNote(read.error),
|
|
84
|
+
mdKeyValue([['Client ID', code(String(call.client_id))]]),
|
|
85
|
+
].join('\n\n');
|
|
86
|
+
return [details, 'This deletes the OAuth client: nobody can authorize it again. Existing access tokens stay revocable as API keys.'].join('\n\n');
|
|
87
|
+
},
|
|
88
|
+
run: async () => {
|
|
89
|
+
const result = await client.deleteOAuthClient(String(call.client_id));
|
|
90
|
+
return `OAuth client deleted: ${result.client_id}`;
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { PosterlyClient } from '../lib/api-client.js';
|
|
3
|
+
import { type ToolContext } from '../lib/tool-runtime.js';
|
|
4
|
+
type ManageWebhookInput = {
|
|
5
|
+
action: 'update' | 'delete' | 'test';
|
|
6
|
+
webhook_id: string;
|
|
7
|
+
url?: string;
|
|
8
|
+
events?: string[];
|
|
9
|
+
workspace_id?: string | null;
|
|
10
|
+
description?: string | null;
|
|
11
|
+
is_active?: boolean;
|
|
12
|
+
confirm?: boolean;
|
|
13
|
+
preview_id?: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const manageWebhookTool: {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
inputSchema: z.ZodObject<{
|
|
19
|
+
action: z.ZodEnum<["update", "delete", "test"]>;
|
|
20
|
+
webhook_id: z.ZodString;
|
|
21
|
+
url: z.ZodOptional<z.ZodString>;
|
|
22
|
+
events: z.ZodOptional<z.ZodArray<z.ZodEnum<["webhook.test", "post.created", "post.updated", "post.deleted", "post.publishing", "post.published", "post.failed", "account.disconnected", "analytics.synced", "approval.requested", "approval.approved", "approval.changes_requested", "approval.rejected", "approval.commented"]>, "many">>;
|
|
23
|
+
workspace_id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
|
|
24
|
+
description: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
|
|
25
|
+
is_active: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
+
confirm: z.ZodOptional<z.ZodBoolean>;
|
|
27
|
+
preview_id: z.ZodOptional<z.ZodString>;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
action: "update" | "delete" | "test";
|
|
30
|
+
webhook_id: string;
|
|
31
|
+
description?: string | null | undefined;
|
|
32
|
+
confirm?: boolean | undefined;
|
|
33
|
+
preview_id?: string | undefined;
|
|
34
|
+
workspace_id?: string | null | undefined;
|
|
35
|
+
url?: string | undefined;
|
|
36
|
+
is_active?: boolean | undefined;
|
|
37
|
+
events?: ("webhook.test" | "post.created" | "post.updated" | "post.deleted" | "post.publishing" | "post.published" | "post.failed" | "account.disconnected" | "analytics.synced" | "approval.requested" | "approval.approved" | "approval.changes_requested" | "approval.rejected" | "approval.commented")[] | undefined;
|
|
38
|
+
}, {
|
|
39
|
+
action: "update" | "delete" | "test";
|
|
40
|
+
webhook_id: string;
|
|
41
|
+
description?: string | null | undefined;
|
|
42
|
+
confirm?: boolean | undefined;
|
|
43
|
+
preview_id?: string | undefined;
|
|
44
|
+
workspace_id?: string | null | undefined;
|
|
45
|
+
url?: string | undefined;
|
|
46
|
+
is_active?: boolean | undefined;
|
|
47
|
+
events?: ("webhook.test" | "post.created" | "post.updated" | "post.deleted" | "post.publishing" | "post.published" | "post.failed" | "account.disconnected" | "analytics.synced" | "approval.requested" | "approval.approved" | "approval.changes_requested" | "approval.rejected" | "approval.commented")[] | undefined;
|
|
48
|
+
}>;
|
|
49
|
+
/** The old tools' exact input schemas, for alias calls (see alias-transport.ts). */
|
|
50
|
+
legacySchemas: {
|
|
51
|
+
update_webhook: z.ZodObject<{
|
|
52
|
+
webhook_id: z.ZodString;
|
|
53
|
+
url: z.ZodOptional<z.ZodString>;
|
|
54
|
+
events: z.ZodOptional<z.ZodArray<z.ZodEnum<["webhook.test", "post.created", "post.updated", "post.deleted", "post.publishing", "post.published", "post.failed", "account.disconnected", "analytics.synced", "approval.requested", "approval.approved", "approval.changes_requested", "approval.rejected", "approval.commented"]>, "many">>;
|
|
55
|
+
workspace_id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
|
|
56
|
+
description: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
|
|
57
|
+
is_active: z.ZodOptional<z.ZodBoolean>;
|
|
58
|
+
confirm: z.ZodLiteral<true>;
|
|
59
|
+
}, "strip", z.ZodTypeAny, {
|
|
60
|
+
confirm: true;
|
|
61
|
+
webhook_id: string;
|
|
62
|
+
description?: string | null | undefined;
|
|
63
|
+
workspace_id?: string | null | undefined;
|
|
64
|
+
url?: string | undefined;
|
|
65
|
+
is_active?: boolean | undefined;
|
|
66
|
+
events?: ("webhook.test" | "post.created" | "post.updated" | "post.deleted" | "post.publishing" | "post.published" | "post.failed" | "account.disconnected" | "analytics.synced" | "approval.requested" | "approval.approved" | "approval.changes_requested" | "approval.rejected" | "approval.commented")[] | undefined;
|
|
67
|
+
}, {
|
|
68
|
+
confirm: true;
|
|
69
|
+
webhook_id: string;
|
|
70
|
+
description?: string | null | undefined;
|
|
71
|
+
workspace_id?: string | null | undefined;
|
|
72
|
+
url?: string | undefined;
|
|
73
|
+
is_active?: boolean | undefined;
|
|
74
|
+
events?: ("webhook.test" | "post.created" | "post.updated" | "post.deleted" | "post.publishing" | "post.published" | "post.failed" | "account.disconnected" | "analytics.synced" | "approval.requested" | "approval.approved" | "approval.changes_requested" | "approval.rejected" | "approval.commented")[] | undefined;
|
|
75
|
+
}>;
|
|
76
|
+
delete_webhook: z.ZodObject<{
|
|
77
|
+
webhook_id: z.ZodString;
|
|
78
|
+
confirm: z.ZodLiteral<true>;
|
|
79
|
+
}, "strip", z.ZodTypeAny, {
|
|
80
|
+
confirm: true;
|
|
81
|
+
webhook_id: string;
|
|
82
|
+
}, {
|
|
83
|
+
confirm: true;
|
|
84
|
+
webhook_id: string;
|
|
85
|
+
}>;
|
|
86
|
+
test_webhook: z.ZodObject<{
|
|
87
|
+
webhook_id: z.ZodString;
|
|
88
|
+
confirm: z.ZodLiteral<true>;
|
|
89
|
+
}, "strip", z.ZodTypeAny, {
|
|
90
|
+
confirm: true;
|
|
91
|
+
webhook_id: string;
|
|
92
|
+
}, {
|
|
93
|
+
confirm: true;
|
|
94
|
+
webhook_id: string;
|
|
95
|
+
}>;
|
|
96
|
+
};
|
|
97
|
+
execute(client: PosterlyClient, input: ManageWebhookInput, ctx: ToolContext): Promise<string>;
|
|
98
|
+
};
|
|
99
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { code, mdKeyValue, mdSection } from '../lib/format.js';
|
|
3
|
+
import { omitKeys, previewThenConfirm, readFailedNote, readForPreview, validateArgs } from '../lib/tool-runtime.js';
|
|
4
|
+
import { webhookEventSchema } from './webhook-events.js';
|
|
5
|
+
export const manageWebhookTool = {
|
|
6
|
+
name: 'manage_webhook',
|
|
7
|
+
description: 'Change a webhook subscription (list them first with list_webhooks). action=update (webhook_id): change URL, events, workspace, description, or active state; outbound side effects, so pass confirm=true only after explicit confirmation. action=delete (webhook_id): remove the subscription; preview then confirm: call without confirm to get a preview and preview_id, show the URL, events, and workspace, then call again with confirm=true and that preview_id. action=test (webhook_id): send a signed webhook.test delivery; confirm=true after explicit confirmation.',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
action: z.enum(['update', 'delete', 'test']).describe('update, delete, or test.'),
|
|
10
|
+
webhook_id: z.string().describe('Webhook ID from list_webhooks.'),
|
|
11
|
+
url: z.string().url().optional().describe('update only.'),
|
|
12
|
+
events: z.array(webhookEventSchema).optional().describe('update only.'),
|
|
13
|
+
workspace_id: z.union([z.string(), z.null()]).optional().describe('update only. null clears the workspace.'),
|
|
14
|
+
description: z.union([z.string().max(240), z.null()]).optional().describe('update only.'),
|
|
15
|
+
is_active: z.boolean().optional().describe('update only.'),
|
|
16
|
+
confirm: z
|
|
17
|
+
.boolean()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe('update and test: true after the user explicitly confirms. delete: leave out to get a preview; true only with the preview_id after the user approved it.'),
|
|
20
|
+
preview_id: z.string().optional().describe('delete: the preview_id from the preview call. Required with confirm: true.'),
|
|
21
|
+
}),
|
|
22
|
+
/** The old tools' exact input schemas, for alias calls (see alias-transport.ts). */
|
|
23
|
+
legacySchemas: {
|
|
24
|
+
update_webhook: z.object({
|
|
25
|
+
webhook_id: z.string(),
|
|
26
|
+
url: z.string().url().optional(),
|
|
27
|
+
events: z.array(webhookEventSchema).optional(),
|
|
28
|
+
workspace_id: z.union([z.string(), z.null()]).optional(),
|
|
29
|
+
description: z.union([z.string().max(240), z.null()]).optional(),
|
|
30
|
+
is_active: z.boolean().optional(),
|
|
31
|
+
confirm: z.literal(true),
|
|
32
|
+
}),
|
|
33
|
+
delete_webhook: z.object({ webhook_id: z.string(), confirm: z.literal(true) }),
|
|
34
|
+
test_webhook: z.object({ webhook_id: z.string(), confirm: z.literal(true) }),
|
|
35
|
+
},
|
|
36
|
+
async execute(client, input, ctx) {
|
|
37
|
+
const { mode, args } = validateArgs(ctx, 'manage_webhook', input);
|
|
38
|
+
const call = args;
|
|
39
|
+
if (mode === 'update') {
|
|
40
|
+
if (call.confirm !== true) {
|
|
41
|
+
throw new Error('Refusing to update webhook without confirm=true after explicit user confirmation.');
|
|
42
|
+
}
|
|
43
|
+
const payload = omitKeys(call, ['action', 'confirm', 'preview_id', 'webhook_id']);
|
|
44
|
+
const result = await client.updateWebhook(call.webhook_id, payload);
|
|
45
|
+
const active = result.webhook.is_active ? 'active' : 'inactive';
|
|
46
|
+
return `Webhook updated: ${result.webhook.id}\nURL: ${result.webhook.url}\nState: ${active}\nEvents: ${result.webhook.events.join(', ')}`;
|
|
47
|
+
}
|
|
48
|
+
if (mode === 'test') {
|
|
49
|
+
if (call.confirm !== true) {
|
|
50
|
+
throw new Error('Refusing to test webhook without confirm=true after explicit user confirmation.');
|
|
51
|
+
}
|
|
52
|
+
const result = await client.testWebhook(call.webhook_id);
|
|
53
|
+
const delivery = result.delivery || {};
|
|
54
|
+
return `Webhook test sent.\nDelivery: ${JSON.stringify(delivery, null, 2)}`;
|
|
55
|
+
}
|
|
56
|
+
return previewThenConfirm({
|
|
57
|
+
tool: 'manage_webhook',
|
|
58
|
+
action: 'delete',
|
|
59
|
+
args,
|
|
60
|
+
nonce: false,
|
|
61
|
+
legacyRefusal: 'Refusing to delete webhook without confirm=true after explicit user confirmation.',
|
|
62
|
+
ctx,
|
|
63
|
+
describe: async () => {
|
|
64
|
+
// There is no GET /webhooks/:id, so the preview finds it in the list.
|
|
65
|
+
const read = await readForPreview(() => client.listWebhooks({}));
|
|
66
|
+
const webhook = read.ok ? read.data.webhooks.find((item) => String(item.id) === String(call.webhook_id)) : null;
|
|
67
|
+
const details = webhook
|
|
68
|
+
? mdSection('Webhook', mdKeyValue([
|
|
69
|
+
['Webhook ID', code(webhook.id)],
|
|
70
|
+
['URL', webhook.url],
|
|
71
|
+
['Events', webhook.events?.length ? webhook.events.join(', ') : 'default events'],
|
|
72
|
+
['State', webhook.is_active ? 'active' : 'inactive'],
|
|
73
|
+
['Workspace', webhook.workspace_id ? code(webhook.workspace_id) : 'all workspaces'],
|
|
74
|
+
]))
|
|
75
|
+
: [
|
|
76
|
+
read.ok ? '_This webhook was not found in your webhook list, so the preview shows the request as given._' : readFailedNote(read.error),
|
|
77
|
+
mdKeyValue([['Webhook ID', code(call.webhook_id)]]),
|
|
78
|
+
].join('\n\n');
|
|
79
|
+
return [details, 'This deletes the webhook subscription. posterly stops sending events to its URL.'].join('\n\n');
|
|
80
|
+
},
|
|
81
|
+
run: async () => {
|
|
82
|
+
const result = await client.deleteWebhook(call.webhook_id);
|
|
83
|
+
return `Webhook deleted: ${result.id}`;
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
};
|
|
@@ -20,13 +20,13 @@ export declare const startSignupTool: {
|
|
|
20
20
|
api_addon: boolean;
|
|
21
21
|
return_path: string;
|
|
22
22
|
source: string;
|
|
23
|
-
debug?: boolean | undefined;
|
|
24
23
|
name?: string | undefined;
|
|
24
|
+
debug?: boolean | undefined;
|
|
25
25
|
tos_accepted?: boolean | undefined;
|
|
26
26
|
}, {
|
|
27
27
|
email: string;
|
|
28
|
-
debug?: boolean | undefined;
|
|
29
28
|
name?: string | undefined;
|
|
29
|
+
debug?: boolean | undefined;
|
|
30
30
|
tier?: "starter" | "pro" | "power_user" | "agency" | undefined;
|
|
31
31
|
interval?: "month" | undefined;
|
|
32
32
|
api_addon?: boolean | undefined;
|
|
@@ -24,8 +24,8 @@ export declare const submitAgentFeedbackInputSchema: z.ZodObject<{
|
|
|
24
24
|
attempt?: number | undefined;
|
|
25
25
|
}>>;
|
|
26
26
|
}, "strict", z.ZodTypeAny, {
|
|
27
|
-
source: "mcp" | "cli" | "rest" | "skill";
|
|
28
27
|
tool: string;
|
|
28
|
+
source: "mcp" | "cli" | "rest" | "skill";
|
|
29
29
|
outcome: "success" | "error" | "abandoned";
|
|
30
30
|
client?: string | undefined;
|
|
31
31
|
error_code?: string | undefined;
|
|
@@ -37,8 +37,8 @@ export declare const submitAgentFeedbackInputSchema: z.ZodObject<{
|
|
|
37
37
|
attempt?: number | undefined;
|
|
38
38
|
} | undefined;
|
|
39
39
|
}, {
|
|
40
|
-
source: "mcp" | "cli" | "rest" | "skill";
|
|
41
40
|
tool: string;
|
|
41
|
+
source: "mcp" | "cli" | "rest" | "skill";
|
|
42
42
|
outcome: "success" | "error" | "abandoned";
|
|
43
43
|
client?: string | undefined;
|
|
44
44
|
error_code?: string | undefined;
|
|
@@ -78,8 +78,8 @@ export declare const submitAgentFeedbackTool: {
|
|
|
78
78
|
attempt?: number | undefined;
|
|
79
79
|
}>>;
|
|
80
80
|
}, "strict", z.ZodTypeAny, {
|
|
81
|
-
source: "mcp" | "cli" | "rest" | "skill";
|
|
82
81
|
tool: string;
|
|
82
|
+
source: "mcp" | "cli" | "rest" | "skill";
|
|
83
83
|
outcome: "success" | "error" | "abandoned";
|
|
84
84
|
client?: string | undefined;
|
|
85
85
|
error_code?: string | undefined;
|
|
@@ -91,8 +91,8 @@ export declare const submitAgentFeedbackTool: {
|
|
|
91
91
|
attempt?: number | undefined;
|
|
92
92
|
} | undefined;
|
|
93
93
|
}, {
|
|
94
|
-
source: "mcp" | "cli" | "rest" | "skill";
|
|
95
94
|
tool: string;
|
|
95
|
+
source: "mcp" | "cli" | "rest" | "skill";
|
|
96
96
|
outcome: "success" | "error" | "abandoned";
|
|
97
97
|
client?: string | undefined;
|
|
98
98
|
error_code?: string | undefined;
|
|
@@ -10,12 +10,12 @@ export declare const triggerPlatformHelperTool: {
|
|
|
10
10
|
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
11
11
|
}, "strip", z.ZodTypeAny, {
|
|
12
12
|
helper: "linkedin.recent_mentions" | "pinterest.boards" | "tiktok.creator_info" | "x.quota";
|
|
13
|
-
platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "x" | "telegram" | "bluesky" | "discord" | "
|
|
13
|
+
platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "x" | "telegram" | "bluesky" | "discord" | "wordpress" | "devto" | "hashnode" | "lemmy" | "slack" | "mastodon" | "gmb" | "google-business" | "google_business_profile" | undefined;
|
|
14
14
|
account_id?: string | undefined;
|
|
15
15
|
params?: Record<string, unknown> | undefined;
|
|
16
16
|
}, {
|
|
17
17
|
helper: "linkedin.recent_mentions" | "pinterest.boards" | "tiktok.creator_info" | "x.quota";
|
|
18
|
-
platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "x" | "telegram" | "bluesky" | "discord" | "
|
|
18
|
+
platform?: "instagram" | "instagram-standalone" | "facebook" | "tiktok" | "twitter" | "threads" | "linkedin" | "youtube" | "pinterest" | "google_business" | "x" | "telegram" | "bluesky" | "discord" | "wordpress" | "devto" | "hashnode" | "lemmy" | "slack" | "mastodon" | "gmb" | "google-business" | "google_business_profile" | undefined;
|
|
19
19
|
account_id?: string | undefined;
|
|
20
20
|
params?: Record<string, unknown> | undefined;
|
|
21
21
|
}>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import type { PosterlyClient } from '../lib/api-client.js';
|
|
3
|
+
import { type ToolContext } from '../lib/tool-runtime.js';
|
|
3
4
|
declare const instagramSettingsSchema: z.ZodObject<{
|
|
4
5
|
__type: z.ZodOptional<z.ZodEnum<["instagram", "instagram-standalone"]>>;
|
|
5
6
|
post_type: z.ZodOptional<z.ZodEnum<["post", "feed", "story", "reel", "carousel"]>>;
|
|
@@ -481,6 +482,22 @@ declare const platformSettingsSchema: z.ZodObject<{
|
|
|
481
482
|
audio_id: z.ZodOptional<z.ZodString>;
|
|
482
483
|
ai_generated: z.ZodOptional<z.ZodBoolean>;
|
|
483
484
|
}, z.ZodTypeAny, "passthrough">>;
|
|
485
|
+
type EditInput = {
|
|
486
|
+
post_id: number;
|
|
487
|
+
caption?: string;
|
|
488
|
+
scheduled_at?: string;
|
|
489
|
+
media_url?: string;
|
|
490
|
+
media_urls?: string[];
|
|
491
|
+
post_type?: string;
|
|
492
|
+
instagram_settings?: z.infer<typeof instagramSettingsSchema>;
|
|
493
|
+
platform_settings?: z.infer<typeof platformSettingsSchema>;
|
|
494
|
+
confirm: true;
|
|
495
|
+
};
|
|
496
|
+
type UpdatePostInput = EditInput & {
|
|
497
|
+
status?: 'scheduled' | 'paused' | 'draft';
|
|
498
|
+
release_id?: string;
|
|
499
|
+
group_id?: string;
|
|
500
|
+
};
|
|
484
501
|
export declare const updatePostTool: {
|
|
485
502
|
name: string;
|
|
486
503
|
description: string;
|
|
@@ -975,10 +992,14 @@ export declare const updatePostTool: {
|
|
|
975
992
|
audio_id: z.ZodOptional<z.ZodString>;
|
|
976
993
|
ai_generated: z.ZodOptional<z.ZodBoolean>;
|
|
977
994
|
}, z.ZodTypeAny, "passthrough">>>;
|
|
995
|
+
status: z.ZodOptional<z.ZodEnum<["scheduled", "paused", "draft"]>>;
|
|
996
|
+
release_id: z.ZodOptional<z.ZodString>;
|
|
997
|
+
group_id: z.ZodOptional<z.ZodString>;
|
|
978
998
|
confirm: z.ZodLiteral<true>;
|
|
979
999
|
}, "strip", z.ZodTypeAny, {
|
|
980
1000
|
confirm: true;
|
|
981
1001
|
post_id: number;
|
|
1002
|
+
status?: "scheduled" | "paused" | "draft" | undefined;
|
|
982
1003
|
scheduled_at?: string | undefined;
|
|
983
1004
|
media_url?: string | undefined;
|
|
984
1005
|
media_urls?: string[] | undefined;
|
|
@@ -1140,9 +1161,12 @@ export declare const updatePostTool: {
|
|
|
1140
1161
|
audio_id: z.ZodOptional<z.ZodString>;
|
|
1141
1162
|
ai_generated: z.ZodOptional<z.ZodBoolean>;
|
|
1142
1163
|
}, z.ZodTypeAny, "passthrough"> | undefined;
|
|
1164
|
+
release_id?: string | undefined;
|
|
1165
|
+
group_id?: string | undefined;
|
|
1143
1166
|
}, {
|
|
1144
1167
|
confirm: true;
|
|
1145
1168
|
post_id: number;
|
|
1169
|
+
status?: "scheduled" | "paused" | "draft" | undefined;
|
|
1146
1170
|
scheduled_at?: string | undefined;
|
|
1147
1171
|
media_url?: string | undefined;
|
|
1148
1172
|
media_urls?: string[] | undefined;
|
|
@@ -1304,17 +1328,44 @@ export declare const updatePostTool: {
|
|
|
1304
1328
|
audio_id: z.ZodOptional<z.ZodString>;
|
|
1305
1329
|
ai_generated: z.ZodOptional<z.ZodBoolean>;
|
|
1306
1330
|
}, z.ZodTypeAny, "passthrough"> | undefined;
|
|
1331
|
+
release_id?: string | undefined;
|
|
1332
|
+
group_id?: string | undefined;
|
|
1307
1333
|
}>;
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1334
|
+
/** The old tools' exact input schemas, for alias calls (see alias-transport.ts). */
|
|
1335
|
+
legacySchemas: {
|
|
1336
|
+
update_post_status: z.ZodObject<{
|
|
1337
|
+
post_id: z.ZodNumber;
|
|
1338
|
+
status: z.ZodEnum<["scheduled", "paused", "draft"]>;
|
|
1339
|
+
scheduled_at: z.ZodOptional<z.ZodString>;
|
|
1340
|
+
confirm: z.ZodBoolean;
|
|
1341
|
+
}, "strip", z.ZodTypeAny, {
|
|
1342
|
+
status: "scheduled" | "paused" | "draft";
|
|
1343
|
+
confirm: boolean;
|
|
1344
|
+
post_id: number;
|
|
1345
|
+
scheduled_at?: string | undefined;
|
|
1346
|
+
}, {
|
|
1347
|
+
status: "scheduled" | "paused" | "draft";
|
|
1348
|
+
confirm: boolean;
|
|
1349
|
+
post_id: number;
|
|
1350
|
+
scheduled_at?: string | undefined;
|
|
1351
|
+
}>;
|
|
1352
|
+
update_post_release_id: z.ZodObject<{
|
|
1353
|
+
post_id: z.ZodNumber;
|
|
1354
|
+
release_id: z.ZodString;
|
|
1355
|
+
group_id: z.ZodOptional<z.ZodString>;
|
|
1356
|
+
confirm: z.ZodLiteral<true>;
|
|
1357
|
+
}, "strip", z.ZodTypeAny, {
|
|
1358
|
+
confirm: true;
|
|
1359
|
+
post_id: number;
|
|
1360
|
+
release_id: string;
|
|
1361
|
+
group_id?: string | undefined;
|
|
1362
|
+
}, {
|
|
1363
|
+
confirm: true;
|
|
1364
|
+
post_id: number;
|
|
1365
|
+
release_id: string;
|
|
1366
|
+
group_id?: string | undefined;
|
|
1367
|
+
}>;
|
|
1368
|
+
};
|
|
1369
|
+
execute(client: PosterlyClient, input: UpdatePostInput, ctx: ToolContext): Promise<string>;
|
|
1319
1370
|
};
|
|
1320
1371
|
export {};
|