social-mcp 2.1.0 → 2.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 (103) hide show
  1. package/README.md +129 -3
  2. package/dist/index.js +64 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/config.d.ts +34 -0
  5. package/dist/lib/config.js +34 -0
  6. package/dist/lib/config.js.map +1 -1
  7. package/dist/services/beehiiv-service.d.ts +69 -0
  8. package/dist/services/beehiiv-service.js +97 -0
  9. package/dist/services/beehiiv-service.js.map +1 -0
  10. package/dist/services/devto-service.d.ts +99 -0
  11. package/dist/services/devto-service.js +92 -0
  12. package/dist/services/devto-service.js.map +1 -0
  13. package/dist/services/email-service.d.ts +5 -1
  14. package/dist/services/email-service.js +76 -4
  15. package/dist/services/email-service.js.map +1 -1
  16. package/dist/services/ghost-service.d.ts +80 -0
  17. package/dist/services/ghost-service.js +123 -0
  18. package/dist/services/ghost-service.js.map +1 -0
  19. package/dist/services/hashnode-service.d.ts +86 -0
  20. package/dist/services/hashnode-service.js +161 -0
  21. package/dist/services/hashnode-service.js.map +1 -0
  22. package/dist/services/tumblr-service.d.ts +73 -0
  23. package/dist/services/tumblr-service.js +113 -0
  24. package/dist/services/tumblr-service.js.map +1 -0
  25. package/dist/services/twitch-service.d.ts +85 -0
  26. package/dist/services/twitch-service.js +135 -0
  27. package/dist/services/twitch-service.js.map +1 -0
  28. package/dist/tools/beehiiv-tools/create-post.d.ts +40 -0
  29. package/dist/tools/beehiiv-tools/create-post.js +49 -0
  30. package/dist/tools/beehiiv-tools/create-post.js.map +1 -0
  31. package/dist/tools/beehiiv-tools/get-posts.d.ts +20 -0
  32. package/dist/tools/beehiiv-tools/get-posts.js +51 -0
  33. package/dist/tools/beehiiv-tools/get-posts.js.map +1 -0
  34. package/dist/tools/beehiiv-tools/get-subscribers.d.ts +20 -0
  35. package/dist/tools/beehiiv-tools/get-subscribers.js +48 -0
  36. package/dist/tools/beehiiv-tools/get-subscribers.js.map +1 -0
  37. package/dist/tools/devto-tools/create-article.d.ts +30 -0
  38. package/dist/tools/devto-tools/create-article.js +47 -0
  39. package/dist/tools/devto-tools/create-article.js.map +1 -0
  40. package/dist/tools/devto-tools/get-article.d.ts +16 -0
  41. package/dist/tools/devto-tools/get-article.js +40 -0
  42. package/dist/tools/devto-tools/get-article.js.map +1 -0
  43. package/dist/tools/devto-tools/get-articles.d.ts +18 -0
  44. package/dist/tools/devto-tools/get-articles.js +41 -0
  45. package/dist/tools/devto-tools/get-articles.js.map +1 -0
  46. package/dist/tools/devto-tools/update-article.d.ts +28 -0
  47. package/dist/tools/devto-tools/update-article.js +51 -0
  48. package/dist/tools/devto-tools/update-article.js.map +1 -0
  49. package/dist/tools/email-tools/send-bulk-email.d.ts +8 -0
  50. package/dist/tools/email-tools/send-bulk-email.js +17 -1
  51. package/dist/tools/email-tools/send-bulk-email.js.map +1 -1
  52. package/dist/tools/email-tools/send-email.d.ts +8 -0
  53. package/dist/tools/email-tools/send-email.js +17 -1
  54. package/dist/tools/email-tools/send-email.js.map +1 -1
  55. package/dist/tools/ghost-tools/create-post.d.ts +36 -0
  56. package/dist/tools/ghost-tools/create-post.js +51 -0
  57. package/dist/tools/ghost-tools/create-post.js.map +1 -0
  58. package/dist/tools/ghost-tools/delete-post.d.ts +18 -0
  59. package/dist/tools/ghost-tools/delete-post.js +28 -0
  60. package/dist/tools/ghost-tools/delete-post.js.map +1 -0
  61. package/dist/tools/ghost-tools/get-posts.d.ts +30 -0
  62. package/dist/tools/ghost-tools/get-posts.js +51 -0
  63. package/dist/tools/ghost-tools/get-posts.js.map +1 -0
  64. package/dist/tools/ghost-tools/update-post.d.ts +36 -0
  65. package/dist/tools/ghost-tools/update-post.js +58 -0
  66. package/dist/tools/ghost-tools/update-post.js.map +1 -0
  67. package/dist/tools/hashnode-tools/create-post.d.ts +34 -0
  68. package/dist/tools/hashnode-tools/create-post.js +46 -0
  69. package/dist/tools/hashnode-tools/create-post.js.map +1 -0
  70. package/dist/tools/hashnode-tools/get-posts.d.ts +18 -0
  71. package/dist/tools/hashnode-tools/get-posts.js +48 -0
  72. package/dist/tools/hashnode-tools/get-posts.js.map +1 -0
  73. package/dist/tools/hashnode-tools/get-publication.d.ts +16 -0
  74. package/dist/tools/hashnode-tools/get-publication.js +36 -0
  75. package/dist/tools/hashnode-tools/get-publication.js.map +1 -0
  76. package/dist/tools/tumblr-tools/create-post.d.ts +34 -0
  77. package/dist/tools/tumblr-tools/create-post.js +45 -0
  78. package/dist/tools/tumblr-tools/create-post.js.map +1 -0
  79. package/dist/tools/tumblr-tools/delete-post.d.ts +18 -0
  80. package/dist/tools/tumblr-tools/delete-post.js +28 -0
  81. package/dist/tools/tumblr-tools/delete-post.js.map +1 -0
  82. package/dist/tools/tumblr-tools/get-blog-info.d.ts +16 -0
  83. package/dist/tools/tumblr-tools/get-blog-info.js +38 -0
  84. package/dist/tools/tumblr-tools/get-blog-info.js.map +1 -0
  85. package/dist/tools/tumblr-tools/get-posts.d.ts +40 -0
  86. package/dist/tools/tumblr-tools/get-posts.js +53 -0
  87. package/dist/tools/tumblr-tools/get-posts.js.map +1 -0
  88. package/dist/tools/twitch-tools/get-channel-info.d.ts +18 -0
  89. package/dist/tools/twitch-tools/get-channel-info.js +38 -0
  90. package/dist/tools/twitch-tools/get-channel-info.js.map +1 -0
  91. package/dist/tools/twitch-tools/get-streams.d.ts +22 -0
  92. package/dist/tools/twitch-tools/get-streams.js +50 -0
  93. package/dist/tools/twitch-tools/get-streams.js.map +1 -0
  94. package/dist/tools/twitch-tools/get-user.d.ts +18 -0
  95. package/dist/tools/twitch-tools/get-user.js +39 -0
  96. package/dist/tools/twitch-tools/get-user.js.map +1 -0
  97. package/dist/tools/twitch-tools/search-channels.d.ts +22 -0
  98. package/dist/tools/twitch-tools/search-channels.js +41 -0
  99. package/dist/tools/twitch-tools/search-channels.js.map +1 -0
  100. package/dist/tools/twitch-tools/send-chat-message.d.ts +24 -0
  101. package/dist/tools/twitch-tools/send-chat-message.js +39 -0
  102. package/dist/tools/twitch-tools/send-chat-message.js.map +1 -0
  103. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twitch-service.js","sourceRoot":"","sources":["../../src/services/twitch-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ title: z.ZodString;
4
+ bodyHtml: z.ZodString;
5
+ subtitle: z.ZodOptional<z.ZodString>;
6
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
7
+ draft: "draft";
8
+ confirmed: "confirmed";
9
+ }>>>;
10
+ audience: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
11
+ free: "free";
12
+ premium: "premium";
13
+ all: "all";
14
+ }>>>;
15
+ publicationId: z.ZodOptional<z.ZodString>;
16
+ apiKey: z.ZodOptional<z.ZodString>;
17
+ }, z.core.$strip>;
18
+ type Params = z.infer<typeof params>;
19
+ export declare const createPostTool: {
20
+ readonly name: "BEEHIIV_CREATE_POST";
21
+ readonly description: "Create a newsletter post on Beehiiv. Set status to 'confirmed' to schedule it for sending.";
22
+ readonly parameters: z.ZodObject<{
23
+ title: z.ZodString;
24
+ bodyHtml: z.ZodString;
25
+ subtitle: z.ZodOptional<z.ZodString>;
26
+ status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
27
+ draft: "draft";
28
+ confirmed: "confirmed";
29
+ }>>>;
30
+ audience: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
31
+ free: "free";
32
+ premium: "premium";
33
+ all: "all";
34
+ }>>>;
35
+ publicationId: z.ZodOptional<z.ZodString>;
36
+ apiKey: z.ZodOptional<z.ZodString>;
37
+ }, z.core.$strip>;
38
+ readonly execute: (p: Params) => Promise<string>;
39
+ };
40
+ export {};
@@ -0,0 +1,49 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { BeehiivService, getBeehiivService } from "../../services/beehiiv-service.js";
4
+ const params = z.object({
5
+ title: z.string().min(1).describe("Newsletter subject line / title"),
6
+ bodyHtml: z.string().min(1).describe("Post body as HTML"),
7
+ subtitle: z.string().optional().describe("Preview text shown in email clients below the subject line"),
8
+ status: z
9
+ .enum(["draft", "confirmed"])
10
+ .optional()
11
+ .default("draft")
12
+ .describe("'draft' saves the post, 'confirmed' schedules/sends it"),
13
+ audience: z
14
+ .enum(["free", "premium", "all"])
15
+ .optional()
16
+ .default("free")
17
+ .describe("Who receives this post (default: free subscribers)"),
18
+ publicationId: z.string().optional().describe("Beehiiv publication ID (overrides BEEHIIV_PUBLICATION_ID env var)"),
19
+ apiKey: z.string().optional().describe("Beehiiv API key (overrides BEEHIIV_API_KEY env var)"),
20
+ });
21
+ export const createPostTool = {
22
+ name: "BEEHIIV_CREATE_POST",
23
+ description: "Create a newsletter post on Beehiiv. Set status to 'confirmed' to schedule it for sending.",
24
+ parameters: params,
25
+ execute: async (p) => {
26
+ try {
27
+ const service = p.apiKey
28
+ ? new BeehiivService({ apiKey: p.apiKey, publicationId: p.publicationId })
29
+ : getBeehiivService();
30
+ const result = await service.createPost(p.publicationId, p.title, p.bodyHtml, p.subtitle, p.status ?? "draft", p.audience ?? "free");
31
+ const post = result.data;
32
+ return [
33
+ `Beehiiv post ${post.status === "draft" ? "saved as draft" : "confirmed"}!`,
34
+ ``,
35
+ `Title: ${post.title ?? post.id}`,
36
+ `ID: ${post.id}`,
37
+ `Status: ${post.status}`,
38
+ ...(post.web_url ? [`URL: ${post.web_url}`] : []),
39
+ ...(post.audience ? [`Audience: ${post.audience}`] : []),
40
+ ].join("\n");
41
+ }
42
+ catch (error) {
43
+ if (error instanceof CredentialsError)
44
+ return `Error: ${error.message}`;
45
+ return `Error creating Beehiiv post: ${error instanceof Error ? error.message : "Unknown error"}`;
46
+ }
47
+ },
48
+ };
49
+ //# sourceMappingURL=create-post.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-post.js","sourceRoot":"","sources":["../../../src/tools/beehiiv-tools/create-post.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
5
+ publicationId: z.ZodOptional<z.ZodString>;
6
+ apiKey: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ type Params = z.infer<typeof params>;
9
+ export declare const getPostsTool: {
10
+ readonly name: "BEEHIIV_GET_POSTS";
11
+ readonly description: "List posts for a Beehiiv publication, including send stats.";
12
+ readonly parameters: z.ZodObject<{
13
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
14
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
15
+ publicationId: z.ZodOptional<z.ZodString>;
16
+ apiKey: z.ZodOptional<z.ZodString>;
17
+ }, z.core.$strip>;
18
+ readonly execute: (p: Params) => Promise<string>;
19
+ };
20
+ export {};
@@ -0,0 +1,51 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { BeehiivService, getBeehiivService } from "../../services/beehiiv-service.js";
4
+ const params = z.object({
5
+ page: z.number().int().positive().optional().default(1).describe("Page number (default: 1)"),
6
+ limit: z.number().int().min(1).max(100).optional().default(10).describe("Posts per page (default: 10, max: 100)"),
7
+ publicationId: z.string().optional().describe("Beehiiv publication ID (overrides BEEHIIV_PUBLICATION_ID env var)"),
8
+ apiKey: z.string().optional().describe("Beehiiv API key (overrides BEEHIIV_API_KEY env var)"),
9
+ });
10
+ export const getPostsTool = {
11
+ name: "BEEHIIV_GET_POSTS",
12
+ description: "List posts for a Beehiiv publication, including send stats.",
13
+ parameters: params,
14
+ execute: async (p) => {
15
+ try {
16
+ const service = p.apiKey
17
+ ? new BeehiivService({ apiKey: p.apiKey, publicationId: p.publicationId })
18
+ : getBeehiivService();
19
+ const result = await service.getPosts(p.publicationId, p.page ?? 1, p.limit ?? 10);
20
+ if (!result.data.length)
21
+ return "No posts found.";
22
+ const total = result.total_results != null ? ` (${result.total_results} total)` : "";
23
+ return [
24
+ `Beehiiv Posts${total}:`,
25
+ ``,
26
+ ...result.data.map((post, i) => {
27
+ const date = post.publish_date
28
+ ? new Date(post.publish_date * 1000).toISOString().split("T")[0]
29
+ : null;
30
+ const openRate = post.stats?.email?.open_rate != null
31
+ ? `${(post.stats.email.open_rate * 100).toFixed(1)}%`
32
+ : null;
33
+ return [
34
+ `${i + 1}. ${post.title ?? post.id}`,
35
+ ` ID: ${post.id} | Status: ${post.status}`,
36
+ ...(date ? [` Published: ${date}`] : []),
37
+ ...(post.audience ? [` Audience: ${post.audience}`] : []),
38
+ ...(openRate ? [` Open Rate: ${openRate}`] : []),
39
+ ...(post.web_url ? [` URL: ${post.web_url}`] : []),
40
+ ].join("\n");
41
+ }),
42
+ ].join("\n");
43
+ }
44
+ catch (error) {
45
+ if (error instanceof CredentialsError)
46
+ return `Error: ${error.message}`;
47
+ return `Error fetching Beehiiv posts: ${error instanceof Error ? error.message : "Unknown error"}`;
48
+ }
49
+ },
50
+ };
51
+ //# sourceMappingURL=get-posts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-posts.js","sourceRoot":"","sources":["../../../src/tools/beehiiv-tools/get-posts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
5
+ publicationId: z.ZodOptional<z.ZodString>;
6
+ apiKey: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ type Params = z.infer<typeof params>;
9
+ export declare const getSubscribersTool: {
10
+ readonly name: "BEEHIIV_GET_SUBSCRIBERS";
11
+ readonly description: "List subscribers for a Beehiiv publication.";
12
+ readonly parameters: z.ZodObject<{
13
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
14
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
15
+ publicationId: z.ZodOptional<z.ZodString>;
16
+ apiKey: z.ZodOptional<z.ZodString>;
17
+ }, z.core.$strip>;
18
+ readonly execute: (p: Params) => Promise<string>;
19
+ };
20
+ export {};
@@ -0,0 +1,48 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { BeehiivService, getBeehiivService } from "../../services/beehiiv-service.js";
4
+ const params = z.object({
5
+ page: z.number().int().positive().optional().default(1).describe("Page number (default: 1)"),
6
+ limit: z.number().int().min(1).max(100).optional().default(10).describe("Subscribers per page (default: 10, max: 100)"),
7
+ publicationId: z.string().optional().describe("Beehiiv publication ID (overrides BEEHIIV_PUBLICATION_ID env var)"),
8
+ apiKey: z.string().optional().describe("Beehiiv API key (overrides BEEHIIV_API_KEY env var)"),
9
+ });
10
+ export const getSubscribersTool = {
11
+ name: "BEEHIIV_GET_SUBSCRIBERS",
12
+ description: "List subscribers for a Beehiiv publication.",
13
+ parameters: params,
14
+ execute: async (p) => {
15
+ try {
16
+ const service = p.apiKey
17
+ ? new BeehiivService({ apiKey: p.apiKey, publicationId: p.publicationId })
18
+ : getBeehiivService();
19
+ const result = await service.getSubscribers(p.publicationId, p.page ?? 1, p.limit ?? 10);
20
+ if (!result.data.length)
21
+ return "No subscribers found.";
22
+ const total = result.total_results != null ? ` (${result.total_results} total)` : "";
23
+ return [
24
+ `Beehiiv Subscribers${total}:`,
25
+ ``,
26
+ ...result.data.map((sub, i) => {
27
+ const date = sub.created
28
+ ? new Date(sub.created * 1000).toISOString().split("T")[0]
29
+ : null;
30
+ return [
31
+ `${i + 1}. ${sub.email ?? sub.id}`,
32
+ ` Status: ${sub.status}`,
33
+ ...(date ? [` Subscribed: ${date}`] : []),
34
+ ...(sub.subscription_premium_tier_names?.length
35
+ ? [` Tiers: ${sub.subscription_premium_tier_names.join(", ")}`]
36
+ : []),
37
+ ].join("\n");
38
+ }),
39
+ ].join("\n");
40
+ }
41
+ catch (error) {
42
+ if (error instanceof CredentialsError)
43
+ return `Error: ${error.message}`;
44
+ return `Error fetching Beehiiv subscribers: ${error instanceof Error ? error.message : "Unknown error"}`;
45
+ }
46
+ },
47
+ };
48
+ //# sourceMappingURL=get-subscribers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-subscribers.js","sourceRoot":"","sources":["../../../src/tools/beehiiv-tools/get-subscribers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ title: z.ZodString;
4
+ bodyMarkdown: z.ZodString;
5
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
6
+ published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ description: z.ZodOptional<z.ZodString>;
8
+ canonicalUrl: z.ZodOptional<z.ZodString>;
9
+ series: z.ZodOptional<z.ZodString>;
10
+ mainImage: z.ZodOptional<z.ZodString>;
11
+ apiKey: z.ZodOptional<z.ZodString>;
12
+ }, z.core.$strip>;
13
+ type Params = z.infer<typeof params>;
14
+ export declare const createArticleTool: {
15
+ readonly name: "DEVTO_CREATE_ARTICLE";
16
+ readonly description: "Create or draft an article on Dev.to. Set published=true to publish immediately, or false (default) to save as draft.";
17
+ readonly parameters: z.ZodObject<{
18
+ title: z.ZodString;
19
+ bodyMarkdown: z.ZodString;
20
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
21
+ published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
22
+ description: z.ZodOptional<z.ZodString>;
23
+ canonicalUrl: z.ZodOptional<z.ZodString>;
24
+ series: z.ZodOptional<z.ZodString>;
25
+ mainImage: z.ZodOptional<z.ZodString>;
26
+ apiKey: z.ZodOptional<z.ZodString>;
27
+ }, z.core.$strip>;
28
+ readonly execute: (p: Params) => Promise<string>;
29
+ };
30
+ export {};
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { DevToService, getDevToService } from "../../services/devto-service.js";
4
+ const params = z.object({
5
+ title: z.string().min(1).max(255).describe("Article title"),
6
+ bodyMarkdown: z.string().min(1).describe("Article body in Markdown format"),
7
+ tags: z
8
+ .array(z.string())
9
+ .max(4)
10
+ .optional()
11
+ .describe("Up to 4 tags (e.g. ['javascript', 'webdev'])"),
12
+ published: z
13
+ .boolean()
14
+ .optional()
15
+ .default(false)
16
+ .describe("Whether to publish immediately (default: false = draft)"),
17
+ description: z.string().max(160).optional().describe("Short description/subtitle shown in listings"),
18
+ canonicalUrl: z.string().url().optional().describe("Canonical URL if cross-posting from another site"),
19
+ series: z.string().optional().describe("Series name to group related articles"),
20
+ mainImage: z.string().url().optional().describe("Cover image URL"),
21
+ apiKey: z.string().optional().describe("Dev.to API key (overrides DEVTO_API_KEY env var)"),
22
+ });
23
+ export const createArticleTool = {
24
+ name: "DEVTO_CREATE_ARTICLE",
25
+ description: "Create or draft an article on Dev.to. Set published=true to publish immediately, or false (default) to save as draft.",
26
+ parameters: params,
27
+ execute: async (p) => {
28
+ try {
29
+ const service = p.apiKey ? new DevToService({ apiKey: p.apiKey }) : getDevToService();
30
+ const article = await service.createArticle(p.title, p.bodyMarkdown, p.tags ?? [], p.published ?? false, p.description, p.canonicalUrl, p.series, p.mainImage);
31
+ return [
32
+ `Article ${article.published ? "published" : "saved as draft"} on Dev.to!`,
33
+ ``,
34
+ `Title: ${article.title}`,
35
+ `ID: ${article.id}`,
36
+ ...(article.url ? [`URL: ${article.url}`] : []),
37
+ ...(article.slug ? [`Slug: ${article.slug}`] : []),
38
+ ].join("\n");
39
+ }
40
+ catch (error) {
41
+ if (error instanceof CredentialsError)
42
+ return `Error: ${error.message}`;
43
+ return `Error creating Dev.to article: ${error instanceof Error ? error.message : "Unknown error"}`;
44
+ }
45
+ },
46
+ };
47
+ //# sourceMappingURL=create-article.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-article.js","sourceRoot":"","sources":["../../../src/tools/devto-tools/create-article.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ id: z.ZodNumber;
4
+ apiKey: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>;
6
+ type Params = z.infer<typeof params>;
7
+ export declare const getArticleTool: {
8
+ readonly name: "DEVTO_GET_ARTICLE";
9
+ readonly description: "Get a specific Dev.to article by ID, including its full Markdown body.";
10
+ readonly parameters: z.ZodObject<{
11
+ id: z.ZodNumber;
12
+ apiKey: z.ZodOptional<z.ZodString>;
13
+ }, z.core.$strip>;
14
+ readonly execute: (p: Params) => Promise<string>;
15
+ };
16
+ export {};
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { DevToService, getDevToService } from "../../services/devto-service.js";
4
+ const params = z.object({
5
+ id: z.number().int().positive().describe("Article ID (visible in DEVTO_GET_MY_ARTICLES output)"),
6
+ apiKey: z.string().optional().describe("Dev.to API key (overrides DEVTO_API_KEY env var)"),
7
+ });
8
+ export const getArticleTool = {
9
+ name: "DEVTO_GET_ARTICLE",
10
+ description: "Get a specific Dev.to article by ID, including its full Markdown body.",
11
+ parameters: params,
12
+ execute: async (p) => {
13
+ try {
14
+ const service = p.apiKey ? new DevToService({ apiKey: p.apiKey }) : getDevToService();
15
+ const a = await service.getArticle(p.id);
16
+ const tags = Array.isArray(a.tag_list)
17
+ ? a.tag_list.join(", ")
18
+ : a.tag_list ?? "";
19
+ return [
20
+ `Title: ${a.title}`,
21
+ `ID: ${a.id}`,
22
+ `Published: ${a.published ? "Yes" : "Draft"}`,
23
+ ...(a.published_at ? [`Published At: ${a.published_at}`] : []),
24
+ ...(a.url ? [`URL: ${a.url}`] : []),
25
+ ...(tags ? [`Tags: ${tags}`] : []),
26
+ ...(a.description ? [`Description: ${a.description}`] : []),
27
+ ...(a.reading_time_minutes != null ? [`Reading Time: ${a.reading_time_minutes} min`] : []),
28
+ ...(a.comments_count != null ? [`Comments: ${a.comments_count}`] : []),
29
+ ...(a.positive_reactions_count != null ? [`Reactions: ${a.positive_reactions_count}`] : []),
30
+ ...(a.body_markdown ? [`\n--- Body ---\n${a.body_markdown}`] : []),
31
+ ].join("\n");
32
+ }
33
+ catch (error) {
34
+ if (error instanceof CredentialsError)
35
+ return `Error: ${error.message}`;
36
+ return `Error fetching Dev.to article: ${error instanceof Error ? error.message : "Unknown error"}`;
37
+ }
38
+ },
39
+ };
40
+ //# sourceMappingURL=get-article.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-article.js","sourceRoot":"","sources":["../../../src/tools/devto-tools/get-article.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
4
+ perPage: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
5
+ apiKey: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>;
7
+ type Params = z.infer<typeof params>;
8
+ export declare const getArticlesTool: {
9
+ readonly name: "DEVTO_GET_MY_ARTICLES";
10
+ readonly description: "Get all articles published by the authenticated Dev.to user.";
11
+ readonly parameters: z.ZodObject<{
12
+ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
13
+ perPage: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
14
+ apiKey: z.ZodOptional<z.ZodString>;
15
+ }, z.core.$strip>;
16
+ readonly execute: (p: Params) => Promise<string>;
17
+ };
18
+ export {};
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { DevToService, getDevToService } from "../../services/devto-service.js";
4
+ const params = z.object({
5
+ page: z.number().int().positive().optional().default(1).describe("Page number (default: 1)"),
6
+ perPage: z.number().int().min(1).max(100).optional().default(10).describe("Articles per page (default: 10, max: 100)"),
7
+ apiKey: z.string().optional().describe("Dev.to API key (overrides DEVTO_API_KEY env var)"),
8
+ });
9
+ export const getArticlesTool = {
10
+ name: "DEVTO_GET_MY_ARTICLES",
11
+ description: "Get all articles published by the authenticated Dev.to user.",
12
+ parameters: params,
13
+ execute: async (p) => {
14
+ try {
15
+ const service = p.apiKey ? new DevToService({ apiKey: p.apiKey }) : getDevToService();
16
+ const articles = await service.getMyArticles(p.page ?? 1, p.perPage ?? 10);
17
+ if (!articles.length)
18
+ return "No articles found.";
19
+ return articles
20
+ .map((a, i) => {
21
+ const tags = Array.isArray(a.tag_list)
22
+ ? a.tag_list.join(", ")
23
+ : a.tag_list ?? "";
24
+ return [
25
+ `${i + 1}. ${a.title}`,
26
+ ` ID: ${a.id} | Published: ${a.published ? "Yes" : "Draft"}`,
27
+ ...(a.url ? [` URL: ${a.url}`] : []),
28
+ ...(tags ? [` Tags: ${tags}`] : []),
29
+ ...(a.positive_reactions_count != null ? [` Reactions: ${a.positive_reactions_count}`] : []),
30
+ ].join("\n");
31
+ })
32
+ .join("\n\n");
33
+ }
34
+ catch (error) {
35
+ if (error instanceof CredentialsError)
36
+ return `Error: ${error.message}`;
37
+ return `Error fetching Dev.to articles: ${error instanceof Error ? error.message : "Unknown error"}`;
38
+ }
39
+ },
40
+ };
41
+ //# sourceMappingURL=get-articles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-articles.js","sourceRoot":"","sources":["../../../src/tools/devto-tools/get-articles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { z } from "zod";
2
+ declare const params: z.ZodObject<{
3
+ id: z.ZodNumber;
4
+ title: z.ZodOptional<z.ZodString>;
5
+ bodyMarkdown: z.ZodOptional<z.ZodString>;
6
+ published: z.ZodOptional<z.ZodBoolean>;
7
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ description: z.ZodOptional<z.ZodString>;
9
+ canonicalUrl: z.ZodOptional<z.ZodString>;
10
+ apiKey: z.ZodOptional<z.ZodString>;
11
+ }, z.core.$strip>;
12
+ type Params = z.infer<typeof params>;
13
+ export declare const updateArticleTool: {
14
+ readonly name: "DEVTO_UPDATE_ARTICLE";
15
+ readonly description: "Update an existing Dev.to article. Only provided fields are changed.";
16
+ readonly parameters: z.ZodObject<{
17
+ id: z.ZodNumber;
18
+ title: z.ZodOptional<z.ZodString>;
19
+ bodyMarkdown: z.ZodOptional<z.ZodString>;
20
+ published: z.ZodOptional<z.ZodBoolean>;
21
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
+ description: z.ZodOptional<z.ZodString>;
23
+ canonicalUrl: z.ZodOptional<z.ZodString>;
24
+ apiKey: z.ZodOptional<z.ZodString>;
25
+ }, z.core.$strip>;
26
+ readonly execute: (p: Params) => Promise<string>;
27
+ };
28
+ export {};
@@ -0,0 +1,51 @@
1
+ import { z } from "zod";
2
+ import { CredentialsError } from "../../lib/errors.js";
3
+ import { DevToService, getDevToService } from "../../services/devto-service.js";
4
+ const params = z.object({
5
+ id: z.number().int().positive().describe("Article ID to update"),
6
+ title: z.string().min(1).max(255).optional().describe("New title"),
7
+ bodyMarkdown: z.string().optional().describe("New body content in Markdown"),
8
+ published: z.boolean().optional().describe("Set to true to publish a draft"),
9
+ tags: z.array(z.string()).max(4).optional().describe("Updated tags (replaces existing tags)"),
10
+ description: z.string().max(160).optional().describe("New short description"),
11
+ canonicalUrl: z.string().url().optional().describe("New canonical URL"),
12
+ apiKey: z.string().optional().describe("Dev.to API key (overrides DEVTO_API_KEY env var)"),
13
+ });
14
+ export const updateArticleTool = {
15
+ name: "DEVTO_UPDATE_ARTICLE",
16
+ description: "Update an existing Dev.to article. Only provided fields are changed.",
17
+ parameters: params,
18
+ execute: async (p) => {
19
+ try {
20
+ const service = p.apiKey ? new DevToService({ apiKey: p.apiKey }) : getDevToService();
21
+ const updates = {};
22
+ if (p.title !== undefined)
23
+ updates.title = p.title;
24
+ if (p.bodyMarkdown !== undefined)
25
+ updates.body_markdown = p.bodyMarkdown;
26
+ if (p.published !== undefined)
27
+ updates.published = p.published;
28
+ if (p.tags !== undefined)
29
+ updates.tags = p.tags;
30
+ if (p.description !== undefined)
31
+ updates.description = p.description;
32
+ if (p.canonicalUrl !== undefined)
33
+ updates.canonical_url = p.canonicalUrl;
34
+ const a = await service.updateArticle(p.id, updates);
35
+ return [
36
+ `Article updated on Dev.to!`,
37
+ ``,
38
+ `Title: ${a.title}`,
39
+ `ID: ${a.id}`,
40
+ `Published: ${a.published ? "Yes" : "Draft"}`,
41
+ ...(a.url ? [`URL: ${a.url}`] : []),
42
+ ].join("\n");
43
+ }
44
+ catch (error) {
45
+ if (error instanceof CredentialsError)
46
+ return `Error: ${error.message}`;
47
+ return `Error updating Dev.to article: ${error instanceof Error ? error.message : "Unknown error"}`;
48
+ }
49
+ },
50
+ };
51
+ //# sourceMappingURL=update-article.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-article.js","sourceRoot":"","sources":["../../../src/tools/devto-tools/update-article.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ declare const sendBulkEmailParams: z.ZodObject<{
4
4
  smtp: "smtp";
5
5
  sendgrid: "sendgrid";
6
6
  mailgun: "mailgun";
7
+ ses: "ses";
7
8
  }>>;
8
9
  fromAddress: z.ZodOptional<z.ZodString>;
9
10
  fromName: z.ZodOptional<z.ZodString>;
@@ -19,6 +20,9 @@ declare const sendBulkEmailParams: z.ZodObject<{
19
20
  sendgridApiKey: z.ZodOptional<z.ZodString>;
20
21
  mailgunApiKey: z.ZodOptional<z.ZodString>;
21
22
  mailgunDomain: z.ZodOptional<z.ZodString>;
23
+ sesAccessKeyId: z.ZodOptional<z.ZodString>;
24
+ sesSecretAccessKey: z.ZodOptional<z.ZodString>;
25
+ sesRegion: z.ZodOptional<z.ZodString>;
22
26
  recipients: z.ZodArray<z.ZodString>;
23
27
  subject: z.ZodString;
24
28
  text: z.ZodString;
@@ -33,6 +37,7 @@ export declare const sendBulkEmailTool: {
33
37
  smtp: "smtp";
34
38
  sendgrid: "sendgrid";
35
39
  mailgun: "mailgun";
40
+ ses: "ses";
36
41
  }>>;
37
42
  fromAddress: z.ZodOptional<z.ZodString>;
38
43
  fromName: z.ZodOptional<z.ZodString>;
@@ -48,6 +53,9 @@ export declare const sendBulkEmailTool: {
48
53
  sendgridApiKey: z.ZodOptional<z.ZodString>;
49
54
  mailgunApiKey: z.ZodOptional<z.ZodString>;
50
55
  mailgunDomain: z.ZodOptional<z.ZodString>;
56
+ sesAccessKeyId: z.ZodOptional<z.ZodString>;
57
+ sesSecretAccessKey: z.ZodOptional<z.ZodString>;
58
+ sesRegion: z.ZodOptional<z.ZodString>;
51
59
  recipients: z.ZodArray<z.ZodString>;
52
60
  subject: z.ZodString;
53
61
  text: z.ZodString;