@upload-post/mcp 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.
Files changed (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +225 -0
  3. package/dist/client.d.ts +32 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +61 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +66 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/oauth/auth_resolver.d.ts +33 -0
  12. package/dist/oauth/auth_resolver.d.ts.map +1 -0
  13. package/dist/oauth/auth_resolver.js +30 -0
  14. package/dist/oauth/auth_resolver.js.map +1 -0
  15. package/dist/oauth/authorize.d.ts +18 -0
  16. package/dist/oauth/authorize.d.ts.map +1 -0
  17. package/dist/oauth/authorize.js +26 -0
  18. package/dist/oauth/authorize.js.map +1 -0
  19. package/dist/oauth/config.d.ts +19 -0
  20. package/dist/oauth/config.d.ts.map +1 -0
  21. package/dist/oauth/config.js +28 -0
  22. package/dist/oauth/config.js.map +1 -0
  23. package/dist/oauth/http_utils.d.ts +8 -0
  24. package/dist/oauth/http_utils.d.ts.map +1 -0
  25. package/dist/oauth/http_utils.js +48 -0
  26. package/dist/oauth/http_utils.js.map +1 -0
  27. package/dist/oauth/introspect_cache.d.ts +19 -0
  28. package/dist/oauth/introspect_cache.d.ts.map +1 -0
  29. package/dist/oauth/introspect_cache.js +40 -0
  30. package/dist/oauth/introspect_cache.js.map +1 -0
  31. package/dist/oauth/metadata.d.ts +35 -0
  32. package/dist/oauth/metadata.d.ts.map +1 -0
  33. package/dist/oauth/metadata.js +43 -0
  34. package/dist/oauth/metadata.js.map +1 -0
  35. package/dist/oauth/registration.d.ts +14 -0
  36. package/dist/oauth/registration.d.ts.map +1 -0
  37. package/dist/oauth/registration.js +40 -0
  38. package/dist/oauth/registration.js.map +1 -0
  39. package/dist/oauth/tokens.d.ts +15 -0
  40. package/dist/oauth/tokens.d.ts.map +1 -0
  41. package/dist/oauth/tokens.js +43 -0
  42. package/dist/oauth/tokens.js.map +1 -0
  43. package/dist/oauth/upstream_client.d.ts +32 -0
  44. package/dist/oauth/upstream_client.d.ts.map +1 -0
  45. package/dist/oauth/upstream_client.js +62 -0
  46. package/dist/oauth/upstream_client.js.map +1 -0
  47. package/dist/schemas.d.ts +38 -0
  48. package/dist/schemas.d.ts.map +1 -0
  49. package/dist/schemas.js +121 -0
  50. package/dist/schemas.js.map +1 -0
  51. package/dist/server.d.ts +4 -0
  52. package/dist/server.d.ts.map +1 -0
  53. package/dist/server.js +36 -0
  54. package/dist/server.js.map +1 -0
  55. package/dist/tools/analytics.d.ts +4 -0
  56. package/dist/tools/analytics.d.ts.map +1 -0
  57. package/dist/tools/analytics.js +74 -0
  58. package/dist/tools/analytics.js.map +1 -0
  59. package/dist/tools/comments.d.ts +4 -0
  60. package/dist/tools/comments.d.ts.map +1 -0
  61. package/dist/tools/comments.js +108 -0
  62. package/dist/tools/comments.js.map +1 -0
  63. package/dist/tools/dms.d.ts +4 -0
  64. package/dist/tools/dms.d.ts.map +1 -0
  65. package/dist/tools/dms.js +100 -0
  66. package/dist/tools/dms.js.map +1 -0
  67. package/dist/tools/ffmpeg.d.ts +4 -0
  68. package/dist/tools/ffmpeg.d.ts.map +1 -0
  69. package/dist/tools/ffmpeg.js +96 -0
  70. package/dist/tools/ffmpeg.js.map +1 -0
  71. package/dist/tools/media_uploads.d.ts +4 -0
  72. package/dist/tools/media_uploads.d.ts.map +1 -0
  73. package/dist/tools/media_uploads.js +106 -0
  74. package/dist/tools/media_uploads.js.map +1 -0
  75. package/dist/tools/pages.d.ts +4 -0
  76. package/dist/tools/pages.d.ts.map +1 -0
  77. package/dist/tools/pages.js +101 -0
  78. package/dist/tools/pages.js.map +1 -0
  79. package/dist/tools/queue.d.ts +4 -0
  80. package/dist/tools/queue.d.ts.map +1 -0
  81. package/dist/tools/queue.js +79 -0
  82. package/dist/tools/queue.js.map +1 -0
  83. package/dist/tools/schedule.d.ts +4 -0
  84. package/dist/tools/schedule.d.ts.map +1 -0
  85. package/dist/tools/schedule.js +48 -0
  86. package/dist/tools/schedule.js.map +1 -0
  87. package/dist/tools/status.d.ts +4 -0
  88. package/dist/tools/status.d.ts.map +1 -0
  89. package/dist/tools/status.js +67 -0
  90. package/dist/tools/status.js.map +1 -0
  91. package/dist/tools/upload.d.ts +10 -0
  92. package/dist/tools/upload.d.ts.map +1 -0
  93. package/dist/tools/upload.js +397 -0
  94. package/dist/tools/upload.js.map +1 -0
  95. package/dist/tools/upload_studio.d.ts +3 -0
  96. package/dist/tools/upload_studio.d.ts.map +1 -0
  97. package/dist/tools/upload_studio.js +808 -0
  98. package/dist/tools/upload_studio.js.map +1 -0
  99. package/dist/tools/users.d.ts +4 -0
  100. package/dist/tools/users.d.ts.map +1 -0
  101. package/dist/tools/users.js +95 -0
  102. package/dist/tools/users.js.map +1 -0
  103. package/dist/transport/http.d.ts +33 -0
  104. package/dist/transport/http.d.ts.map +1 -0
  105. package/dist/transport/http.js +263 -0
  106. package/dist/transport/http.js.map +1 -0
  107. package/dist/transport/stdio.d.ts +3 -0
  108. package/dist/transport/stdio.d.ts.map +1 -0
  109. package/dist/transport/stdio.js +7 -0
  110. package/dist/transport/stdio.js.map +1 -0
  111. package/examples/mcp-config.json +11 -0
  112. package/package.json +68 -0
@@ -0,0 +1,101 @@
1
+ import { z } from "zod";
2
+ import { compact } from "../client.js";
3
+ import { genericResultOutputSchema, safe } from "../schemas.js";
4
+ export function registerPagesTools(server, client) {
5
+ server.registerTool("get_facebook_pages", {
6
+ title: "List Facebook pages",
7
+ description: "Facebook pages connected to a profile.",
8
+ inputSchema: {
9
+ profile: z.string().optional(),
10
+ },
11
+ outputSchema: genericResultOutputSchema,
12
+ annotations: {
13
+ readOnlyHint: true,
14
+ openWorldHint: false,
15
+ destructiveHint: false,
16
+ },
17
+ }, safe(async ({ profile }) => client.sdk.getFacebookPages(profile)));
18
+ server.registerTool("get_linkedin_pages", {
19
+ title: "List LinkedIn pages",
20
+ description: "LinkedIn company pages connected to a profile.",
21
+ inputSchema: {
22
+ profile: z.string().optional(),
23
+ },
24
+ outputSchema: genericResultOutputSchema,
25
+ annotations: {
26
+ readOnlyHint: true,
27
+ openWorldHint: false,
28
+ destructiveHint: false,
29
+ },
30
+ }, safe(async ({ profile }) => client.sdk.getLinkedinPages(profile)));
31
+ server.registerTool("get_pinterest_boards", {
32
+ title: "List Pinterest boards",
33
+ description: "Pinterest boards available to a profile.",
34
+ inputSchema: {
35
+ profile: z.string().optional(),
36
+ },
37
+ outputSchema: genericResultOutputSchema,
38
+ annotations: {
39
+ readOnlyHint: true,
40
+ openWorldHint: false,
41
+ destructiveHint: false,
42
+ },
43
+ }, safe(async ({ profile }) => client.sdk.getPinterestBoards(profile)));
44
+ server.registerTool("get_google_business_locations", {
45
+ title: "List Google Business locations",
46
+ description: "Google Business Profile locations the profile can post to.",
47
+ inputSchema: {
48
+ profile: z.string().optional(),
49
+ },
50
+ outputSchema: genericResultOutputSchema,
51
+ annotations: {
52
+ readOnlyHint: true,
53
+ openWorldHint: false,
54
+ destructiveHint: false,
55
+ },
56
+ }, safe(async (args) => client.request("GET", "/uploadposts/google-business/locations", {
57
+ query: compact(args),
58
+ })));
59
+ server.registerTool("select_google_business_location", {
60
+ title: "Select Google Business location",
61
+ description: "Pick the active Google Business location for a profile. Subsequent posts to `google_business` will publish there.",
62
+ inputSchema: {
63
+ profile: z.string(),
64
+ locationId: z.string(),
65
+ },
66
+ outputSchema: genericResultOutputSchema,
67
+ annotations: {
68
+ readOnlyHint: false,
69
+ openWorldHint: false,
70
+ destructiveHint: false,
71
+ },
72
+ }, safe(async (args) => {
73
+ const { profile, locationId } = args;
74
+ return client.request("POST", "/uploadposts/google-business/locations/select", {
75
+ body: compact({ profile, location_id: locationId }),
76
+ });
77
+ }));
78
+ server.registerTool("get_reddit_detailed_posts", {
79
+ title: "Get detailed Reddit posts",
80
+ description: "Recent Reddit posts published from a profile, with the platform-side metadata (subreddit, flair, score, …).",
81
+ inputSchema: {
82
+ profile: z
83
+ .string()
84
+ .describe("Upload-Post profile name. Required by the API."),
85
+ limit: z.number().int().positive().max(200).optional(),
86
+ },
87
+ outputSchema: genericResultOutputSchema,
88
+ annotations: {
89
+ readOnlyHint: true,
90
+ openWorldHint: false,
91
+ destructiveHint: false,
92
+ },
93
+ }, safe(async (args) => {
94
+ const { profile, ...rest } = args;
95
+ // The API requires the param to be named `profile_username`, not `profile`.
96
+ return client.request("GET", "/uploadposts/reddit/detailed-posts/", {
97
+ query: compact({ ...rest, profile_username: profile }),
98
+ });
99
+ }));
100
+ }
101
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/tools/pages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { UploadPostMcpClient } from "../client.js";
3
+ export declare function registerQueueTools(server: McpServer, client: UploadPostMcpClient): void;
4
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/tools/queue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAgGvF"}
@@ -0,0 +1,79 @@
1
+ import { z } from "zod";
2
+ import { compact } from "../client.js";
3
+ import { genericResultOutputSchema, safe } from "../schemas.js";
4
+ export function registerQueueTools(server, client) {
5
+ server.registerTool("get_queue_settings", {
6
+ title: "Get queue settings",
7
+ description: "Posting queue configuration (slots per day, time windows, timezone).",
8
+ inputSchema: {
9
+ profile_username: z.string().optional(),
10
+ },
11
+ outputSchema: genericResultOutputSchema,
12
+ annotations: {
13
+ readOnlyHint: true,
14
+ openWorldHint: false,
15
+ destructiveHint: false,
16
+ },
17
+ }, safe(async (args) => client.request("GET", "/uploadposts/queue/settings", {
18
+ query: compact(args),
19
+ })));
20
+ server.registerTool("update_queue_settings", {
21
+ title: "Update queue settings",
22
+ description: "Update posting queue configuration for a profile. Fields are flat, not nested: timezone, slots, days_of_week, and max_posts_per_slot.",
23
+ inputSchema: {
24
+ profile_username: z.string().describe("Upload-Post profile name to update."),
25
+ timezone: z
26
+ .string()
27
+ .optional()
28
+ .describe("IANA timezone, e.g. Europe/Madrid or America/New_York."),
29
+ slots: z
30
+ .array(z.object({
31
+ hour: z.number().int().min(0).max(23).describe("Hour in 24-hour local time."),
32
+ minute: z.number().int().min(0).max(59).optional().describe("Minute. Defaults to 0."),
33
+ }))
34
+ .max(24)
35
+ .optional()
36
+ .describe("Posting slots sorted by local time, e.g. [{hour: 10, minute: 0}, {hour: 16, minute: 0}]."),
37
+ days_of_week: z
38
+ .array(z.number().int().min(0).max(6))
39
+ .optional()
40
+ .describe("Allowed posting days where 0=Monday and 6=Sunday."),
41
+ max_posts_per_slot: z
42
+ .number()
43
+ .int()
44
+ .min(1)
45
+ .max(100)
46
+ .optional()
47
+ .describe("Maximum posts allowed in the same queue slot."),
48
+ },
49
+ outputSchema: genericResultOutputSchema,
50
+ // Replaces the existing config wholesale → mark as destructive so callers
51
+ // confirm before overwriting.
52
+ annotations: {
53
+ readOnlyHint: false,
54
+ openWorldHint: false,
55
+ destructiveHint: true,
56
+ },
57
+ }, safe(async (args) => client.request("POST", "/uploadposts/queue/settings", {
58
+ body: compact(args),
59
+ })));
60
+ server.registerTool("preview_queue", {
61
+ title: "Preview queue",
62
+ description: "Preview the upcoming queue slots and what would land in them. Optionally `nextSlot=true` returns just the next available slot timestamp.",
63
+ inputSchema: {
64
+ profile_username: z.string().optional(),
65
+ nextSlot: z.boolean().optional(),
66
+ },
67
+ outputSchema: genericResultOutputSchema,
68
+ annotations: {
69
+ readOnlyHint: true,
70
+ openWorldHint: false,
71
+ destructiveHint: false,
72
+ },
73
+ }, safe(async (args) => {
74
+ const { nextSlot, ...rest } = args;
75
+ const path = nextSlot ? "/uploadposts/queue/next-slot" : "/uploadposts/queue/preview";
76
+ return client.request("GET", path, { query: compact(rest) });
77
+ }));
78
+ }
79
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/tools/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { UploadPostMcpClient } from "../client.js";
3
+ export declare function registerScheduleTools(server: McpServer, client: UploadPostMcpClient): void;
4
+ //# sourceMappingURL=schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../src/tools/schedule.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CA4D1F"}
@@ -0,0 +1,48 @@
1
+ import { z } from "zod";
2
+ import { compact } from "../client.js";
3
+ import { genericResultOutputSchema, safe } from "../schemas.js";
4
+ export function registerScheduleTools(server, client) {
5
+ server.registerTool("list_scheduled", {
6
+ title: "List scheduled posts",
7
+ description: "List all currently scheduled (not-yet-published) posts.",
8
+ inputSchema: {},
9
+ outputSchema: genericResultOutputSchema,
10
+ annotations: {
11
+ readOnlyHint: true,
12
+ openWorldHint: false,
13
+ destructiveHint: false,
14
+ },
15
+ }, safe(async () => client.sdk.listScheduled()));
16
+ server.registerTool("cancel_scheduled", {
17
+ title: "Cancel scheduled post",
18
+ description: "Cancel a scheduled post by its `job_id`.",
19
+ inputSchema: {
20
+ jobId: z.string(),
21
+ },
22
+ outputSchema: genericResultOutputSchema,
23
+ annotations: {
24
+ readOnlyHint: false,
25
+ openWorldHint: false,
26
+ destructiveHint: true,
27
+ },
28
+ }, safe(async ({ jobId }) => client.sdk.cancelScheduled(jobId)));
29
+ server.registerTool("edit_scheduled", {
30
+ title: "Edit scheduled post",
31
+ description: "Reschedule a post: change date and/or timezone.",
32
+ inputSchema: {
33
+ jobId: z.string(),
34
+ scheduledDate: z.string().optional(),
35
+ timezone: z.string().optional(),
36
+ },
37
+ outputSchema: genericResultOutputSchema,
38
+ annotations: {
39
+ readOnlyHint: false,
40
+ openWorldHint: false,
41
+ destructiveHint: true,
42
+ },
43
+ }, safe(async (args) => {
44
+ const { jobId, ...rest } = args;
45
+ return client.sdk.editScheduled(jobId, compact(rest));
46
+ }));
47
+ }
48
+ //# sourceMappingURL=schedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/tools/schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEhE,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAA2B;IAClF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,yDAAyD;QACtE,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,yBAAyB;QACvC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,KAAK;SACvB;KACF,EACD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAC7C,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,0CAA0C;QACvD,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SAClB;QACD,YAAY,EAAE,yBAAyB;QACvC,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,IAAI;SACtB;KACF,EACD,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,KAAe,CAAC,CAAC,CACvE,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAChC;QACD,YAAY,EAAE,yBAAyB;QACvC,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,IAAI;SACtB;KACF,EACD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAA+C,CAAC;QAC3E,OAAO,MAAM,CAAC,GAAG,CAAC,aAAa,CAC7B,KAAK,EACL,OAAO,CAAC,IAAI,CAAkD,CAC/D,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { UploadPostMcpClient } from "../client.js";
3
+ export declare function registerStatusTools(server: McpServer, client: UploadPostMcpClient): void;
4
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CA0FxF"}
@@ -0,0 +1,67 @@
1
+ import { z } from "zod";
2
+ import { compact } from "../client.js";
3
+ import { genericResultOutputSchema, safe } from "../schemas.js";
4
+ export function registerStatusTools(server, client) {
5
+ server.registerTool("get_status", {
6
+ title: "Get async upload status",
7
+ description: "Check the status of an async upload by `request_id`. Poll this until `status` is 'success' or 'failed'.",
8
+ inputSchema: {
9
+ requestId: z.string(),
10
+ },
11
+ outputSchema: genericResultOutputSchema,
12
+ annotations: {
13
+ readOnlyHint: true,
14
+ openWorldHint: false,
15
+ destructiveHint: false,
16
+ },
17
+ }, safe(async ({ requestId }) => client.sdk.getStatus(requestId)));
18
+ server.registerTool("get_job_status", {
19
+ title: "Get scheduled job status",
20
+ description: "Check the status of a scheduled or queued upload by `job_id`. Use this for posts created with `addToQueue` or `scheduledDate`.",
21
+ inputSchema: {
22
+ jobId: z.string(),
23
+ },
24
+ outputSchema: genericResultOutputSchema,
25
+ annotations: {
26
+ readOnlyHint: true,
27
+ openWorldHint: false,
28
+ destructiveHint: false,
29
+ },
30
+ }, safe(async ({ jobId }) => client.sdk.getJobStatus(jobId)));
31
+ server.registerTool("get_history", {
32
+ title: "Get upload history",
33
+ description: "Paginated history of uploads across all profiles.",
34
+ inputSchema: {
35
+ page: z.number().int().positive().optional(),
36
+ limit: z.number().int().positive().max(200).optional(),
37
+ },
38
+ outputSchema: genericResultOutputSchema,
39
+ annotations: {
40
+ readOnlyHint: true,
41
+ openWorldHint: false,
42
+ destructiveHint: false,
43
+ },
44
+ }, safe(async (args) => client.sdk.getHistory(compact(args))));
45
+ server.registerTool("get_media", {
46
+ title: "Get recent media from connected accounts",
47
+ description: "Retrieve recent media (videos, photos, text posts) pulled directly from a profile's connected social accounts. Supports instagram, tiktok, youtube, linkedin, facebook, x, threads, pinterest, bluesky, reddit. Useful for browsing what already exists on a platform before posting more.",
48
+ inputSchema: {
49
+ user: z.string().optional().describe("Profile username to scope the query to."),
50
+ platform: z.string().optional().describe("Restrict to a single platform key."),
51
+ page_urn: z
52
+ .string()
53
+ .optional()
54
+ .describe("LinkedIn only. Numeric organization ID (e.g. '12345'), full URN ('urn:li:organization:12345'), or 'me' to force the personal profile. When omitted, accounts linked as an organization admin auto-resolve to the first administered organization; otherwise the personal profile is used."),
55
+ limit: z.number().int().positive().max(200).optional(),
56
+ },
57
+ outputSchema: genericResultOutputSchema,
58
+ annotations: {
59
+ readOnlyHint: true,
60
+ openWorldHint: false,
61
+ destructiveHint: false,
62
+ },
63
+ }, safe(async (args) => client.request("GET", "/uploadposts/media", {
64
+ query: compact(args),
65
+ })));
66
+ }
67
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { UploadPostMcpClient } from "../client.js";
3
+ /**
4
+ * The 4 publish endpoints exposed by the official SDK. We deliberately keep
5
+ * the schema "open" via passthrough so platform-specific overrides documented
6
+ * in the Upload-Post docs (tiktokPrivacyLevel, youtubePrivacyStatus, …) flow
7
+ * through unchanged, even when not strictly typed here.
8
+ */
9
+ export declare function registerUploadTools(server: McpServer, client: UploadPostMcpClient): void;
10
+ //# sourceMappingURL=upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/tools/upload.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAkRxD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CA2MxF"}