social-mcp 2.9.0 → 2.10.1

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 CHANGED
@@ -436,7 +436,7 @@ Set `MAIL_MAILER` to select your provider (`smtp`, `sendgrid`, `mailgun`, or `se
436
436
  - **BLUESKY_LIKE_POST** — Like a post (`uri`, `cid`)
437
437
  - **BLUESKY_SEARCH_POSTS** — Search for posts on Bluesky (`query`, `limit`)
438
438
 
439
- > **Note:** `images` take `{ content, mimeType, alt? }[]` with `content` as base64 — AT Proto has no URL-reference option, every image is uploaded as a blob (`uploadBlob`) and referenced in the post's embed.
439
+ > **Note:** `images` take `{ content, mimeType, alt? }[]` with `content` as base64 — AT Proto has no URL-reference option, every image is uploaded as a blob (`uploadBlob`) and referenced in the post's embed. For library consumers managing their own session (e.g. an app that already exchanged an identifier/app-password for a session and refreshes it independently), `BlueskyCredentials` also accepts `{ did, handle?, accessJwt, refreshJwt }` to resume that session instead of logging in fresh — call `getSession()` afterward to read back the session in case AT Proto rotated the refresh token during the call, so you can persist the new one.
440
440
 
441
441
  ### Mastodon
442
442
 
@@ -604,13 +604,14 @@ When `mailer` and `fromAddress` are omitted, the tool falls back to the env var
604
604
 
605
605
  Most services accept an optional `proxyUrl` in their credentials (e.g. `new DiscordService({ botToken, proxyUrl: "http://user:pass@host:port" })`), routing that account's API calls through an HTTP(S) proxy — useful for a multi-tenant host that wants each connected account's traffic to originate from a distinct, consistent IP. This is a constructor-level option for programmatic/library consumers (not an MCP tool parameter, since it's server-operator infrastructure rather than message content).
606
606
 
607
- Supported today: Discord, Slack, Telegram, Twitter/X, Instagram, Facebook, WhatsApp, Threads, LinkedIn, Reddit, Pinterest, Mastodon, YouTube, Ghost, Tumblr. Not yet wired: Bluesky (`@atproto/api`'s `BskyAgent` doesn't expose a documented fetch/agent override), TikTok, Medium, Dev.to, Hashnode, Beehiiv, Twitch — these currently ignore any `proxyUrl` passed to them.
607
+ Supported today: Discord, Slack, Telegram, Twitter/X, Instagram, Facebook, WhatsApp, Threads, LinkedIn, Reddit, Pinterest, Mastodon, YouTube, Ghost, Tumblr, TikTok, Medium, Bluesky. Not yet wired: Dev.to, Hashnode, Beehiiv, Twitch — these currently ignore any `proxyUrl` passed to them.
608
608
 
609
- Two mechanisms are used depending on how each service talks to its platform, since passing the wrong one is a silent no-op rather than an error:
609
+ Three mechanisms are used depending on how each service talks to its platform, since passing the wrong one is a silent no-op rather than an error:
610
610
  - `createProxyDispatcher()` (undici `ProxyAgent`) for services using raw `fetch()` — most of the list above.
611
611
  - `createProxyAgent()` (`https-proxy-agent`) for services built on SDKs that take a classic `http.Agent` (Slack's `@slack/web-api`, Telegram's `telegraf`, Twitter's `twitter-api-v2` via its `httpAgent` client option).
612
+ - Bluesky's `BskyAgent` takes a custom `fetch` function directly (`AtpAgentOptions.fetch`) — `BlueskyService` wraps `createProxyDispatcher()`'s dispatcher in one when `proxyUrl` is set.
612
613
 
613
- Both are exported from `social-mcp/dist/lib/proxy.js` if you need to build the agent/dispatcher yourself.
614
+ `createProxyDispatcher`/`createProxyAgent` are exported from `social-mcp/dist/lib/proxy.js` if you need to build the agent/dispatcher yourself.
614
615
 
615
616
  ## Development
616
617
 
@@ -1,11 +1,13 @@
1
1
  export interface BeehiivCredentials {
2
2
  apiKey: string;
3
3
  publicationId?: string;
4
+ proxyUrl?: string;
4
5
  }
5
6
  export declare class BeehiivService {
6
7
  private baseUrl;
7
8
  private headers;
8
9
  private publicationId;
10
+ private dispatcher?;
9
11
  constructor(credentials?: BeehiivCredentials);
10
12
  private getPublicationId;
11
13
  getPosts(publicationId?: string, page?: number, limit?: number): Promise<{
@@ -2,6 +2,7 @@ import { z } from "zod";
2
2
  import { config } from "../lib/config.js";
3
3
  import { CredentialsError } from "../lib/errors.js";
4
4
  import { fetchJson } from "../lib/http.js";
5
+ import { createProxyDispatcher } from "../lib/proxy.js";
5
6
  const postSchema = z.object({
6
7
  id: z.string(),
7
8
  title: z.string().optional(),
@@ -13,13 +14,17 @@ const postSchema = z.object({
13
14
  slug: z.string().optional(),
14
15
  audience: z.string().optional(),
15
16
  email_sent_to_count: z.number().nullable().optional(),
16
- stats: z.object({
17
- email: z.object({
17
+ stats: z
18
+ .object({
19
+ email: z
20
+ .object({
18
21
  recipients: z.number().optional(),
19
22
  open_rate: z.number().optional(),
20
23
  click_rate: z.number().optional(),
21
- }).optional(),
22
- }).optional(),
24
+ })
25
+ .optional(),
26
+ })
27
+ .optional(),
23
28
  });
24
29
  const postsResponseSchema = z.object({
25
30
  data: z.array(postSchema),
@@ -47,17 +52,20 @@ export class BeehiivService {
47
52
  baseUrl = config.beehiiv.baseUrl;
48
53
  headers;
49
54
  publicationId;
55
+ dispatcher;
50
56
  constructor(credentials) {
51
57
  const apiKey = credentials?.apiKey ?? config.beehiiv.apiKey;
52
58
  if (!apiKey) {
53
59
  throw new CredentialsError("Beehiiv", ["BEEHIIV_API_KEY"]);
54
60
  }
55
- this.publicationId = credentials?.publicationId ?? config.beehiiv.publicationId;
61
+ this.publicationId =
62
+ credentials?.publicationId ?? config.beehiiv.publicationId;
56
63
  this.headers = {
57
64
  Authorization: `Bearer ${apiKey}`,
58
65
  "Content-Type": "application/json",
59
66
  Accept: "application/json",
60
67
  };
68
+ this.dispatcher = createProxyDispatcher(credentials?.proxyUrl);
61
69
  }
62
70
  getPublicationId(override) {
63
71
  const id = override ?? this.publicationId;
@@ -67,7 +75,7 @@ export class BeehiivService {
67
75
  }
68
76
  async getPosts(publicationId, page = 1, limit = 10) {
69
77
  const id = this.getPublicationId(publicationId);
70
- return fetchJson(`${this.baseUrl}/publications/${id}/posts?page=${page}&limit=${limit}&expand[]=stats`, { method: "GET", headers: this.headers }, postsResponseSchema);
78
+ return fetchJson(`${this.baseUrl}/publications/${id}/posts?page=${page}&limit=${limit}&expand[]=stats`, { method: "GET", headers: this.headers, dispatcher: this.dispatcher }, postsResponseSchema);
71
79
  }
72
80
  async createPost(publicationId, title, bodyHtml, subtitle, status = "draft", audience = "free", sendAt) {
73
81
  const id = this.getPublicationId(publicationId);
@@ -81,11 +89,16 @@ export class BeehiivService {
81
89
  body.preview_text = subtitle;
82
90
  if (sendAt)
83
91
  body.send_at = sendAt;
84
- return fetchJson(`${this.baseUrl}/publications/${id}/posts`, { method: "POST", headers: this.headers, body: JSON.stringify(body) }, createPostResponseSchema);
92
+ return fetchJson(`${this.baseUrl}/publications/${id}/posts`, {
93
+ method: "POST",
94
+ headers: this.headers,
95
+ body: JSON.stringify(body),
96
+ dispatcher: this.dispatcher,
97
+ }, createPostResponseSchema);
85
98
  }
86
99
  async getSubscribers(publicationId, page = 1, limit = 10) {
87
100
  const id = this.getPublicationId(publicationId);
88
- return fetchJson(`${this.baseUrl}/publications/${id}/subscriptions?page=${page}&limit=${limit}`, { method: "GET", headers: this.headers }, subscribersResponseSchema);
101
+ return fetchJson(`${this.baseUrl}/publications/${id}/subscriptions?page=${page}&limit=${limit}`, { method: "GET", headers: this.headers, dispatcher: this.dispatcher }, subscribersResponseSchema);
89
102
  }
90
103
  }
91
104
  let _instance;
@@ -1 +1 @@
1
- {"version":3,"file":"beehiiv-service.js","sourceRoot":"","sources":["../../src/services/beehiiv-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"beehiiv-service.js","sourceRoot":"","sources":["../../src/services/beehiiv-service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,13 @@
1
1
  export interface BlueskyCredentials {
2
- identifier: string;
3
- appPassword: string;
2
+ identifier?: string;
3
+ appPassword?: string;
4
+ did?: string;
5
+ handle?: string;
6
+ accessJwt?: string;
7
+ refreshJwt?: string;
4
8
  service?: string;
9
+ /** Routes API calls through this proxy (e.g. per-tenant IP isolation). */
10
+ proxyUrl?: string;
5
11
  }
6
12
  export interface BlueskyImage {
7
13
  /** Base64-encoded image bytes. Max 4 per post (AT Proto's own limit). */
@@ -9,13 +15,22 @@ export interface BlueskyImage {
9
15
  mimeType: string;
10
16
  alt?: string;
11
17
  }
18
+ export interface BlueskySession {
19
+ did: string;
20
+ handle: string;
21
+ accessJwt: string;
22
+ refreshJwt: string;
23
+ }
12
24
  export declare class BlueskyService {
13
25
  private agent;
14
- private identifier;
15
- private appPassword;
26
+ private identifier?;
27
+ private appPassword?;
28
+ private resumeSessionData?;
16
29
  private loggedIn;
30
+ private latestSession?;
17
31
  constructor(credentials?: BlueskyCredentials);
18
32
  private ensureLoggedIn;
33
+ getSession(): BlueskySession | undefined;
19
34
  createPost(text: string, images?: BlueskyImage[]): Promise<{
20
35
  uri: string;
21
36
  cid: string;
@@ -1,33 +1,83 @@
1
1
  import { BskyAgent } from "@atproto/api";
2
2
  import { config } from "../lib/config.js";
3
3
  import { CredentialsError } from "../lib/errors.js";
4
+ import { createProxyDispatcher } from "../lib/proxy.js";
4
5
  export class BlueskyService {
5
6
  agent;
6
7
  identifier;
7
8
  appPassword;
9
+ resumeSessionData;
8
10
  loggedIn = false;
11
+ latestSession;
9
12
  constructor(credentials) {
10
13
  const identifier = credentials?.identifier ?? config.bluesky.identifier;
11
14
  const appPassword = credentials?.appPassword ?? config.bluesky.appPassword;
12
15
  const service = credentials?.service ?? config.bluesky.service;
13
- if (!identifier || !appPassword) {
16
+ if (credentials?.did && credentials.accessJwt && credentials.refreshJwt) {
17
+ this.resumeSessionData = {
18
+ did: credentials.did,
19
+ handle: credentials.handle ?? credentials.did,
20
+ accessJwt: credentials.accessJwt,
21
+ refreshJwt: credentials.refreshJwt,
22
+ active: true,
23
+ };
24
+ }
25
+ else if (!identifier || !appPassword) {
14
26
  throw new CredentialsError("Bluesky", [
15
27
  "BLUESKY_IDENTIFIER",
16
28
  "BLUESKY_APP_PASSWORD",
29
+ "(or did/accessJwt/refreshJwt to resume a session)",
17
30
  ]);
18
31
  }
19
32
  this.identifier = identifier;
20
33
  this.appPassword = appPassword;
21
- this.agent = new BskyAgent({ service });
34
+ const dispatcher = createProxyDispatcher(credentials?.proxyUrl);
35
+ this.agent = new BskyAgent({
36
+ service,
37
+ // AT Proto rotates the refresh token on use — this is the SDK's own hook for
38
+ // finding out, so a session-resume caller can persist the new one via
39
+ // getSession() rather than silently working with a token that's gone stale.
40
+ persistSession: (_evt, session) => {
41
+ if (session) {
42
+ this.latestSession = {
43
+ did: session.did,
44
+ handle: session.handle,
45
+ accessJwt: session.accessJwt,
46
+ refreshJwt: session.refreshJwt,
47
+ };
48
+ }
49
+ },
50
+ ...(dispatcher
51
+ ? {
52
+ fetch: ((input, init) => fetch(input, {
53
+ ...init,
54
+ dispatcher,
55
+ })),
56
+ }
57
+ : {}),
58
+ });
22
59
  }
23
60
  async ensureLoggedIn() {
24
- if (!this.loggedIn) {
61
+ if (this.loggedIn)
62
+ return;
63
+ if (this.resumeSessionData) {
64
+ await this.agent.resumeSession(this.resumeSessionData);
65
+ }
66
+ else if (this.identifier && this.appPassword) {
25
67
  await this.agent.login({
26
68
  identifier: this.identifier,
27
69
  password: this.appPassword,
28
70
  });
29
- this.loggedIn = true;
30
71
  }
72
+ else {
73
+ throw new Error("Bluesky credentials are missing");
74
+ }
75
+ this.loggedIn = true;
76
+ }
77
+ // Only meaningful in session-resume mode: the (possibly refreshed) session after
78
+ // an operation, for the caller to persist if it rotated mid-call.
79
+ getSession() {
80
+ return this.latestSession;
31
81
  }
32
82
  async createPost(text, images) {
33
83
  await this.ensureLoggedIn();
@@ -1 +1 @@
1
- {"version":3,"file":"bluesky-service.js","sourceRoot":"","sources":["../../src/services/bluesky-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bluesky-service.js","sourceRoot":"","sources":["../../src/services/bluesky-service.ts"],"names":[],"mappings":"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"}
@@ -18,10 +18,12 @@ declare const articleSchema: z.ZodObject<{
18
18
  export type DevToArticle = z.infer<typeof articleSchema>;
19
19
  export interface DevToCredentials {
20
20
  apiKey: string;
21
+ proxyUrl?: string;
21
22
  }
22
23
  export declare class DevToService {
23
24
  private baseUrl;
24
25
  private headers;
26
+ private dispatcher?;
25
27
  constructor(credentials?: DevToCredentials);
26
28
  getMyArticles(page?: number, perPage?: number): Promise<{
27
29
  id: number;
@@ -2,6 +2,7 @@ import { z } from "zod";
2
2
  import { config } from "../lib/config.js";
3
3
  import { CredentialsError } from "../lib/errors.js";
4
4
  import { fetchJson } from "../lib/http.js";
5
+ import { createProxyDispatcher } from "../lib/proxy.js";
5
6
  const articleSchema = z.object({
6
7
  id: z.number(),
7
8
  title: z.string(),
@@ -37,6 +38,7 @@ const articleResponseSchema = z.object({
37
38
  export class DevToService {
38
39
  baseUrl = config.devto.baseUrl;
39
40
  headers;
41
+ dispatcher;
40
42
  constructor(credentials) {
41
43
  const apiKey = credentials?.apiKey ?? config.devto.apiKey;
42
44
  if (!apiKey) {
@@ -47,12 +49,13 @@ export class DevToService {
47
49
  "Content-Type": "application/json",
48
50
  Accept: "application/vnd.forem.api-v1+json",
49
51
  };
52
+ this.dispatcher = createProxyDispatcher(credentials?.proxyUrl);
50
53
  }
51
54
  async getMyArticles(page = 1, perPage = 30) {
52
- return fetchJson(`${this.baseUrl}/articles/me?page=${page}&per_page=${perPage}`, { method: "GET", headers: this.headers }, z.array(articleSchema));
55
+ return fetchJson(`${this.baseUrl}/articles/me?page=${page}&per_page=${perPage}`, { method: "GET", headers: this.headers, dispatcher: this.dispatcher }, z.array(articleSchema));
53
56
  }
54
57
  async getArticle(id) {
55
- return fetchJson(`${this.baseUrl}/articles/${id}`, { method: "GET", headers: this.headers }, articleResponseSchema);
58
+ return fetchJson(`${this.baseUrl}/articles/${id}`, { method: "GET", headers: this.headers, dispatcher: this.dispatcher }, articleResponseSchema);
56
59
  }
57
60
  async createArticle(title, bodyMarkdown, tags = [], published = false, description, canonicalUrl, series, mainImage) {
58
61
  const article = {
@@ -73,6 +76,7 @@ export class DevToService {
73
76
  method: "POST",
74
77
  headers: this.headers,
75
78
  body: JSON.stringify({ article }),
79
+ dispatcher: this.dispatcher,
76
80
  }, articleResponseSchema);
77
81
  }
78
82
  async updateArticle(id, updates) {
@@ -80,6 +84,7 @@ export class DevToService {
80
84
  method: "PUT",
81
85
  headers: this.headers,
82
86
  body: JSON.stringify({ article: updates }),
87
+ dispatcher: this.dispatcher,
83
88
  }, articleResponseSchema);
84
89
  }
85
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"devto-service.js","sourceRoot":"","sources":["../../src/services/devto-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devto-service.js","sourceRoot":"","sources":["../../src/services/devto-service.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  export interface HashnodeCredentials {
2
2
  accessToken: string;
3
3
  publicationId?: string;
4
+ proxyUrl?: string;
4
5
  }
5
6
  export declare class HashnodeService {
6
7
  private baseUrl;
7
8
  private accessToken;
8
9
  private publicationId;
10
+ private dispatcher?;
9
11
  constructor(credentials?: HashnodeCredentials);
10
12
  private gql;
11
13
  getPublication(publicationId?: string): Promise<{
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { config } from "../lib/config.js";
3
3
  import { CredentialsError } from "../lib/errors.js";
4
+ import { createProxyDispatcher } from "../lib/proxy.js";
4
5
  const publicationSchema = z.object({
5
6
  id: z.string(),
6
7
  title: z.string().optional(),
@@ -19,7 +20,8 @@ const postSchema = z.object({
19
20
  responseCount: z.number().optional(),
20
21
  });
21
22
  const publishPostResponseSchema = z.object({
22
- data: z.object({
23
+ data: z
24
+ .object({
23
25
  publishPost: z.object({
24
26
  post: z.object({
25
27
  id: z.string(),
@@ -28,38 +30,50 @@ const publishPostResponseSchema = z.object({
28
30
  url: z.string().optional(),
29
31
  }),
30
32
  }),
31
- }).optional(),
33
+ })
34
+ .optional(),
32
35
  errors: z.array(z.object({ message: z.string() })).optional(),
33
36
  });
34
37
  const publicationQuerySchema = z.object({
35
- data: z.object({
36
- publication: z.object({
38
+ data: z
39
+ .object({
40
+ publication: z
41
+ .object({
37
42
  id: z.string(),
38
43
  title: z.string().optional(),
39
44
  url: z.string().optional(),
40
45
  displayTitle: z.string().optional(),
41
- posts: z.object({
46
+ posts: z
47
+ .object({
42
48
  edges: z.array(z.object({ node: postSchema })),
43
- pageInfo: z.object({
49
+ pageInfo: z
50
+ .object({
44
51
  hasNextPage: z.boolean().optional(),
45
52
  endCursor: z.string().nullable().optional(),
46
- }).optional(),
47
- }).optional(),
48
- }).nullable(),
49
- }).optional(),
53
+ })
54
+ .optional(),
55
+ })
56
+ .optional(),
57
+ })
58
+ .nullable(),
59
+ })
60
+ .optional(),
50
61
  errors: z.array(z.object({ message: z.string() })).optional(),
51
62
  });
52
63
  export class HashnodeService {
53
64
  baseUrl = config.hashnode.baseUrl;
54
65
  accessToken;
55
66
  publicationId;
67
+ dispatcher;
56
68
  constructor(credentials) {
57
69
  const accessToken = credentials?.accessToken ?? config.hashnode.accessToken;
58
70
  if (!accessToken) {
59
71
  throw new CredentialsError("Hashnode", ["HASHNODE_ACCESS_TOKEN"]);
60
72
  }
61
73
  this.accessToken = accessToken;
62
- this.publicationId = credentials?.publicationId ?? config.hashnode.publicationId;
74
+ this.publicationId =
75
+ credentials?.publicationId ?? config.hashnode.publicationId;
76
+ this.dispatcher = createProxyDispatcher(credentials?.proxyUrl);
63
77
  }
64
78
  async gql(query, variables, schema) {
65
79
  const response = await fetch(this.baseUrl, {
@@ -69,6 +83,7 @@ export class HashnodeService {
69
83
  Authorization: this.accessToken,
70
84
  },
71
85
  body: JSON.stringify({ query, variables }),
86
+ dispatcher: this.dispatcher,
72
87
  });
73
88
  if (!response.ok) {
74
89
  throw new Error(`Hashnode API error ${response.status}: ${response.statusText}`);
@@ -1 +1 @@
1
- {"version":3,"file":"hashnode-service.js","sourceRoot":"","sources":["../../src/services/hashnode-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hashnode-service.js","sourceRoot":"","sources":["../../src/services/hashnode-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC;SACL,MAAM,CAAC;QACP,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBACd,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;gBACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;gBACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC1B,CAAC;SACF,CAAC;KACF,CAAC;SACD,QAAQ,EAAE;IACZ,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC;SACL,MAAM,CAAC;QACP,WAAW,EAAE,CAAC;aACZ,MAAM,CAAC;YACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;YACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACnC,KAAK,EAAE,CAAC;iBACN,MAAM,CAAC;gBACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC9C,QAAQ,EAAE,CAAC;qBACT,MAAM,CAAC;oBACP,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;oBACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;iBAC3C,CAAC;qBACD,QAAQ,EAAE;aACZ,CAAC;iBACD,QAAQ,EAAE;SACZ,CAAC;aACD,QAAQ,EAAE;KACZ,CAAC;SACD,QAAQ,EAAE;IACZ,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC;AAQH,MAAM,OAAO,eAAe;IACnB,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IAClC,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,UAAU,CAA4C;IAE9D,YAAY,WAAiC;QAC5C,MAAM,WAAW,GAAG,WAAW,EAAE,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5E,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,MAAM,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa;YACjB,WAAW,EAAE,aAAa,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAEO,KAAK,CAAC,GAAG,CAChB,KAAa,EACb,SAAkC,EAClC,MAAoB;QAEpB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACR,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,IAAI,CAAC,WAAW;aAC/B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YAC1C,UAAU,EAAE,IAAI,CAAC,UAAU;SACZ,CAAC,CAAC;QAClB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACd,sBAAsB,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAC/D,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACd,2BAA2B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9F,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,aAAsB;QAC1C,MAAM,EAAE,GAAG,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;QAC/C,IAAI,CAAC,EAAE;YACN,MAAM,IAAI,KAAK,CACd,+EAA+E,CAC/E,CAAC;QAEH,MAAM,KAAK,GAAG;;;;;;;IAOZ,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,aAAsB,EAAE,KAAK,GAAG,EAAE;QAChD,MAAM,EAAE,GAAG,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;QAC/C,IAAI,CAAC,EAAE;YACN,MAAM,IAAI,KAAK,CACd,+EAA+E,CAC/E,CAAC;QAEH,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;IAsBZ,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU,CACf,KAAa,EACb,eAAuB,EACvB,OAAyC,EAAE,EAC3C,aAAsB,EACtB,QAAiB,EACjB,aAAsB,EACtB,eAAe,GAAG,KAAK;QAEvB,MAAM,EAAE,GAAG,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;QAC/C,IAAI,CAAC,EAAE;YACN,MAAM,IAAI,KAAK,CACd,+EAA+E,CAC/E,CAAC;QAEH,MAAM,QAAQ,GAAG;;;;;;;;;IASf,CAAC;QAEH,MAAM,KAAK,GAA4B;YACtC,KAAK;YACL,eAAe;YACf,IAAI;YACJ,aAAa,EAAE,EAAE;YACjB,eAAe;SACf,CAAC;QACF,IAAI,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxC,IAAI,aAAa;YAChB,KAAK,CAAC,iBAAiB,GAAG,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;QAE5D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;IACjE,CAAC;CACD;AAED,IAAI,SAAsC,CAAC;AAC3C,MAAM,UAAU,kBAAkB;IACjC,IAAI,CAAC,SAAS;QAAE,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;IAClD,OAAO,SAAS,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "social-mcp",
3
- "version": "2.9.0",
3
+ "version": "2.10.1",
4
4
  "description": "MCP server for posting and interacting across social media platforms: Twitter, Instagram, Facebook, WhatsApp, Discord, Telegram, Slack, LinkedIn, Reddit, Threads, TikTok, Pinterest, Medium, and Email (SMTP/SendGrid/Mailgun/SES)",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",