@socialseal/mcp-server 0.1.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.
@@ -0,0 +1,210 @@
1
+ export const TOOL_REGISTRY = [
2
+ {
3
+ name: "agent-tool-jobs",
4
+ category: "agent",
5
+ description: "Queue or poll agent-backed tool jobs.",
6
+ workspaceScoped: true,
7
+ notes: "Use action=start to queue and action=status to read a UUID job id.",
8
+ },
9
+ {
10
+ name: "workspace-notes",
11
+ category: "agent",
12
+ description: "Search, create, update, and pin workspace note memory.",
13
+ workspaceScoped: true,
14
+ },
15
+ {
16
+ name: "brand-group-management",
17
+ category: "brand",
18
+ description: "Manage brand groups, aliases, competitors, and rule configuration.",
19
+ workspaceScoped: true,
20
+ },
21
+ {
22
+ name: "export-report",
23
+ category: "export",
24
+ description: "Generate report exports as csv, json, markdown, html, or excel_data.",
25
+ workspaceScoped: true,
26
+ },
27
+ {
28
+ name: "export_tracking_data",
29
+ category: "export",
30
+ description: "Stream tracking exports as CSV for a group or tracking item.",
31
+ workspaceScoped: true,
32
+ notes: "group_id expects a numeric tracking_group id, not a brand_group UUID.",
33
+ },
34
+ {
35
+ name: "google-ai-search",
36
+ category: "search",
37
+ description: "Queue Google AI search runs.",
38
+ workspaceScoped: true,
39
+ notes: "Returns numeric runId. Read status with socialseal_get_tool_status.",
40
+ },
41
+ {
42
+ name: "get-google-ai-search-runs",
43
+ category: "search",
44
+ description: "Read Google AI run queue/progress by numeric run id.",
45
+ workspaceScoped: true,
46
+ },
47
+ {
48
+ name: "get-google-ai-search-results",
49
+ category: "search",
50
+ description: "Read Google AI summaries/citations by numeric run id.",
51
+ workspaceScoped: true,
52
+ },
53
+ {
54
+ name: "group-management",
55
+ category: "tracking",
56
+ description: "Manage tracking groups and memberships.",
57
+ workspaceScoped: true,
58
+ },
59
+ {
60
+ name: "tracking",
61
+ category: "tracking",
62
+ description: "Manage tracking items.",
63
+ workspaceScoped: true,
64
+ },
65
+ {
66
+ name: "search-journey-run",
67
+ category: "vnext",
68
+ description: "Run or poll a search journey for a subject across supported platforms.",
69
+ workspaceScoped: true,
70
+ notes: "Async start returns runId; poll with kind=journey_run.",
71
+ },
72
+ {
73
+ name: "vnext-blueprints-read",
74
+ category: "vnext",
75
+ description: "Read vNext blueprint history and specific versions.",
76
+ workspaceScoped: true,
77
+ },
78
+ {
79
+ name: "vnext-briefs-read",
80
+ category: "vnext",
81
+ description: "Read generated vNext briefs and version history.",
82
+ workspaceScoped: true,
83
+ },
84
+ {
85
+ name: "vnext-journeys",
86
+ category: "vnext",
87
+ description: "List journey runs and inspect their latest outputs.",
88
+ workspaceScoped: true,
89
+ },
90
+ {
91
+ name: "vnext-keywords",
92
+ category: "vnext",
93
+ description: "List, create, update, or delete vNext keywords.",
94
+ workspaceScoped: true,
95
+ },
96
+ {
97
+ name: "vnext-personas",
98
+ category: "vnext",
99
+ description: "List, create, update, retire, or reactivate vNext personas.",
100
+ workspaceScoped: true,
101
+ },
102
+ ];
103
+ export const TOOL_SCHEMA_HINTS = {
104
+ "agent-tool-jobs": {
105
+ summary: "Queue agent-backed jobs and read UUID job status.",
106
+ operations: [
107
+ {
108
+ action: "start",
109
+ required: ["action=start", "toolName", "payload"],
110
+ optional: [],
111
+ example: {
112
+ action: "start",
113
+ toolName: "search_videos",
114
+ payload: {
115
+ query: "best africa safari itinerary",
116
+ platform: "tiktok",
117
+ region: "IN",
118
+ limit: 20,
119
+ },
120
+ },
121
+ },
122
+ {
123
+ action: "status",
124
+ required: ["action=status", "jobId (uuid)"],
125
+ optional: [],
126
+ example: {
127
+ action: "status",
128
+ jobId: "11111111-1111-4111-8111-111111111111",
129
+ },
130
+ },
131
+ ],
132
+ cliExamples: [
133
+ "socialseal tools call --function agent-tool-jobs --body '{\"action\":\"start\",\"toolName\":\"search_videos\",\"payload\":{\"query\":\"best africa safari itinerary\",\"platform\":\"tiktok\",\"region\":\"IN\"}}'",
134
+ "socialseal tools status 11111111-1111-4111-8111-111111111111 --kind agent_job",
135
+ ],
136
+ },
137
+ "search-journey-run": {
138
+ summary: "Start or poll journey keyword expansion runs.",
139
+ operations: [
140
+ {
141
+ action: "start",
142
+ required: ["subject", "subjectType", "region", "workspaceId"],
143
+ optional: [
144
+ "locale",
145
+ "platformKeys",
146
+ "seedKeywords",
147
+ "contentPillars",
148
+ "maxKeywords",
149
+ "includeRejected",
150
+ "skipCache",
151
+ "executionMode",
152
+ ],
153
+ example: {
154
+ subject: "Como Hotels",
155
+ subjectType: "brand",
156
+ region: "IN",
157
+ locale: "en-IN",
158
+ workspaceId: "00000000-0000-4000-8000-000000000000",
159
+ executionMode: "async",
160
+ },
161
+ },
162
+ {
163
+ action: "status",
164
+ required: ["action=status", "workspaceId", "runId"],
165
+ optional: [],
166
+ example: {
167
+ action: "status",
168
+ workspaceId: "00000000-0000-4000-8000-000000000000",
169
+ runId: "11111111-1111-4111-8111-111111111111",
170
+ },
171
+ },
172
+ ],
173
+ cliExamples: [
174
+ "socialseal tools call --function search-journey-run --body @journey.json --async --workspace-id <workspace-uuid>",
175
+ "socialseal tools status 11111111-1111-4111-8111-111111111111 --kind journey_run --workspace-id <workspace-uuid>",
176
+ ],
177
+ },
178
+ "google-ai-search": {
179
+ summary: "Queue Google AI search runs.",
180
+ operations: [
181
+ {
182
+ action: "start",
183
+ required: ["queries"],
184
+ optional: ["workspaceId", "region", "language", "metadata"],
185
+ example: {
186
+ queries: ["best hotels in bali", "luxury safari honeymoon"],
187
+ workspaceId: "00000000-0000-4000-8000-000000000000",
188
+ },
189
+ },
190
+ ],
191
+ cliExamples: [
192
+ "socialseal tools call --function google-ai-search --body @google-ai-search.json --workspace-id <workspace-uuid>",
193
+ "socialseal tools status 6809 --kind google_ai_run",
194
+ ],
195
+ },
196
+ };
197
+ const TOOL_BY_NAME = new Map(TOOL_REGISTRY.map((entry) => [entry.name, entry]));
198
+ export function getToolEntry(toolName) {
199
+ return TOOL_BY_NAME.get(toolName) ?? null;
200
+ }
201
+ export function listTools(category) {
202
+ const normalizedCategory = category?.trim().toLowerCase();
203
+ if (!normalizedCategory)
204
+ return TOOL_REGISTRY;
205
+ return TOOL_REGISTRY.filter((entry) => entry.category === normalizedCategory);
206
+ }
207
+ export function getToolSchema(toolName) {
208
+ return TOOL_SCHEMA_HINTS[toolName] ?? null;
209
+ }
210
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { SocialSealConfig } from "./types.js";
3
+ interface CreateServerOptions {
4
+ config?: SocialSealConfig;
5
+ fetchImpl?: typeof fetch;
6
+ }
7
+ export declare function createSocialSealMcpServer(options?: CreateServerOptions): McpServer;
8
+ export declare function toMcpErrorResult(error: unknown): {
9
+ isError: boolean;
10
+ content: {
11
+ type: "text";
12
+ text: string;
13
+ }[];
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAOtF,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,YAAY,CAAC;AAI/D,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,mBAAwB,GAAG,SAAS,CAatF;AAyZD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO;;;;;;EAU9C"}
package/dist/server.js ADDED
@@ -0,0 +1,341 @@
1
+ import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { z } from "zod";
3
+ import { SocialSealClient } from "./client.js";
4
+ import { resolveConfig } from "./config.js";
5
+ import { formatError, SocialSealMcpError } from "./errors.js";
6
+ import { getToolEntry, getToolSchema, listTools } from "./registry.js";
7
+ const SERVER_VERSION = "0.1.0";
8
+ export function createSocialSealMcpServer(options = {}) {
9
+ const config = options.config ?? resolveConfig();
10
+ const client = new SocialSealClient({ config, fetchImpl: options.fetchImpl });
11
+ const server = new McpServer({
12
+ name: "socialseal",
13
+ version: SERVER_VERSION,
14
+ });
15
+ registerTools(server, client);
16
+ registerResources(server, client);
17
+ registerPrompts(server);
18
+ return server;
19
+ }
20
+ function registerTools(server, client) {
21
+ server.registerTool("socialseal_list_workspaces", {
22
+ title: "List SocialSeal workspaces",
23
+ description: "List workspaces visible to the configured SocialSeal CLI key.",
24
+ inputSchema: {
25
+ includeInactive: z.boolean().optional(),
26
+ },
27
+ }, async ({ includeInactive }) => {
28
+ const directory = await client.listWorkspaces();
29
+ const workspaces = normalizeWorkspaceDirectory(directory, includeInactive === true);
30
+ return asJsonResult({ workspaces });
31
+ });
32
+ server.registerTool("socialseal_get_current_workspace", {
33
+ title: "Get current SocialSeal workspace",
34
+ description: "Return the workspace resolved from env/config.",
35
+ }, async () => asJsonResult(client.getCurrentWorkspace()));
36
+ server.registerTool("socialseal_list_available_tools", {
37
+ title: "List SocialSeal tools",
38
+ description: "List MCP-safe SocialSeal backend tools.",
39
+ inputSchema: {
40
+ category: z.string().optional(),
41
+ },
42
+ }, async ({ category }) => asJsonResult({ tools: listTools(category) }));
43
+ server.registerTool("socialseal_get_tool_schema", {
44
+ title: "Get SocialSeal tool schema",
45
+ description: "Return schema hints and examples for an allowlisted SocialSeal tool.",
46
+ inputSchema: {
47
+ toolName: z.string().min(1),
48
+ },
49
+ }, async ({ toolName }) => {
50
+ const entry = requireToolEntry(toolName);
51
+ const schema = getToolSchema(toolName);
52
+ return asJsonResult({
53
+ tool: entry,
54
+ schemaAvailable: Boolean(schema),
55
+ schemaUnavailableReason: schema ? null : "No static schema hint is available for this tool yet.",
56
+ schema,
57
+ });
58
+ });
59
+ server.registerTool("socialseal_call_tool", {
60
+ title: "Call SocialSeal tool",
61
+ description: "Invoke an allowlisted SocialSeal backend tool through the CLI gateway.",
62
+ inputSchema: {
63
+ toolName: z.string().min(1),
64
+ body: z.record(z.unknown()),
65
+ workspaceId: z.string().optional(),
66
+ async: z.boolean().optional(),
67
+ },
68
+ }, async ({ toolName, body, workspaceId, async }) => {
69
+ const data = await client.callTool(toolName, body, {
70
+ workspaceId,
71
+ async,
72
+ });
73
+ return asJsonResult(data);
74
+ });
75
+ server.registerTool("socialseal_get_tool_status", {
76
+ title: "Get SocialSeal tool status",
77
+ description: "Poll a known SocialSeal async run or job.",
78
+ inputSchema: {
79
+ id: z.union([z.string(), z.number()]),
80
+ kind: z.enum(["auto", "agent_job", "google_ai_run", "journey_run"]).default("auto"),
81
+ workspaceId: z.string().optional(),
82
+ includeResults: z.boolean().optional(),
83
+ resultsLimit: z.number().int().positive().optional(),
84
+ },
85
+ }, async ({ id, kind, workspaceId, includeResults, resultsLimit }) => {
86
+ const data = await client.getStatus({
87
+ id,
88
+ kind,
89
+ workspaceId,
90
+ includeResults,
91
+ resultsLimit,
92
+ });
93
+ return asJsonResult(data);
94
+ });
95
+ server.registerTool("socialseal_export_tracking_data", {
96
+ title: "Export SocialSeal tracking data",
97
+ description: "Export tracking data through the SocialSeal CLI gateway.",
98
+ inputSchema: {
99
+ body: z.record(z.unknown()),
100
+ workspaceId: z.string().optional(),
101
+ },
102
+ }, async ({ body, workspaceId }) => {
103
+ const data = await client.exportTrackingData(body, workspaceId);
104
+ return asJsonResult(data);
105
+ });
106
+ server.registerTool("socialseal_export_report", {
107
+ title: "Export SocialSeal report",
108
+ description: "Generate a SocialSeal report export through the CLI gateway.",
109
+ inputSchema: {
110
+ body: z.record(z.unknown()),
111
+ workspaceId: z.string().optional(),
112
+ },
113
+ }, async ({ body, workspaceId }) => {
114
+ const data = await client.exportReport(body, workspaceId);
115
+ return asJsonResult(data);
116
+ });
117
+ }
118
+ function registerResources(server, client) {
119
+ server.registerResource("socialseal-workspaces", "socialseal://workspaces", {
120
+ title: "SocialSeal workspaces",
121
+ description: "Workspaces visible to the configured SocialSeal CLI key.",
122
+ mimeType: "application/json",
123
+ }, async (uri) => {
124
+ const directory = await client.listWorkspaces();
125
+ return jsonResource(uri.href, normalizeWorkspaceDirectory(directory, false));
126
+ });
127
+ server.registerResource("socialseal-current-workspace", "socialseal://workspaces/current", {
128
+ title: "Current SocialSeal workspace",
129
+ description: "Workspace resolved from SocialSeal MCP env/config.",
130
+ mimeType: "application/json",
131
+ }, async (uri) => jsonResource(uri.href, client.getCurrentWorkspace()));
132
+ server.registerResource("socialseal-tools", "socialseal://tools", {
133
+ title: "SocialSeal tool registry",
134
+ description: "MCP-safe SocialSeal backend tool registry.",
135
+ mimeType: "application/json",
136
+ }, async (uri) => jsonResource(uri.href, { tools: listTools() }));
137
+ server.registerResource("socialseal-tool-schema", new ResourceTemplate("socialseal://tools/{toolName}/schema", {
138
+ list: async () => ({
139
+ resources: listTools().map((tool) => ({
140
+ uri: `socialseal://tools/${tool.name}/schema`,
141
+ name: `${tool.name} schema`,
142
+ description: tool.description,
143
+ mimeType: "application/json",
144
+ })),
145
+ }),
146
+ }), {
147
+ title: "SocialSeal tool schema",
148
+ description: "Schema hints for one SocialSeal backend tool.",
149
+ mimeType: "application/json",
150
+ }, async (uri, variables) => {
151
+ const toolName = String(variables.toolName);
152
+ const entry = requireToolEntry(toolName);
153
+ const schema = getToolSchema(toolName);
154
+ return jsonResource(uri.href, {
155
+ tool: entry,
156
+ schemaAvailable: Boolean(schema),
157
+ schemaUnavailableReason: schema ? null : "No static schema hint is available for this tool yet.",
158
+ schema,
159
+ });
160
+ });
161
+ server.registerResource("socialseal-run-status", new ResourceTemplate("socialseal://runs/{kind}/{id}", { list: undefined }), {
162
+ title: "SocialSeal run status",
163
+ description: "Read a SocialSeal async run/job status snapshot.",
164
+ mimeType: "application/json",
165
+ }, async (uri, variables) => {
166
+ const kind = normalizeStatusKind(String(variables.kind));
167
+ const data = await client.getStatus({ id: String(variables.id), kind });
168
+ return jsonResource(uri.href, data);
169
+ });
170
+ }
171
+ function registerPrompts(server) {
172
+ server.registerPrompt("socialseal_keyword_universe_brief", {
173
+ title: "Keyword universe brief",
174
+ description: "Plan and summarize a SocialSeal keyword universe review.",
175
+ argsSchema: {
176
+ subject: z.string().optional(),
177
+ region: z.string().optional(),
178
+ },
179
+ }, ({ subject, region }) => ({
180
+ messages: [
181
+ {
182
+ role: "user",
183
+ content: {
184
+ type: "text",
185
+ text: [
186
+ `Prepare an evidence-first SocialSeal keyword universe brief${subject ? ` for ${subject}` : ""}${region ? ` in ${region}` : ""}.`,
187
+ "Use socialseal_list_available_tools, socialseal_get_tool_schema, and relevant SocialSeal tool calls before making claims.",
188
+ "Cite returned SocialSeal evidence and call out missing data explicitly.",
189
+ ].join("\n"),
190
+ },
191
+ },
192
+ ],
193
+ }));
194
+ server.registerPrompt("socialseal_competitor_gap_review", {
195
+ title: "Competitor gap review",
196
+ description: "Compare competitor visibility and identify next SocialSeal queries.",
197
+ argsSchema: {
198
+ brand: z.string().optional(),
199
+ competitors: z.string().optional(),
200
+ },
201
+ }, ({ brand, competitors }) => ({
202
+ messages: [
203
+ {
204
+ role: "user",
205
+ content: {
206
+ type: "text",
207
+ text: [
208
+ `Review SocialSeal competitor gaps${brand ? ` for ${brand}` : ""}${competitors ? ` against ${competitors}` : ""}.`,
209
+ "Inspect available SocialSeal tools/resources first, then retrieve grounded data.",
210
+ "Separate evidence-backed gaps from hypotheses and list recommended follow-up tool calls.",
211
+ ].join("\n"),
212
+ },
213
+ },
214
+ ],
215
+ }));
216
+ server.registerPrompt("socialseal_video_dna_summary", {
217
+ title: "Video DNA summary",
218
+ description: "Summarize Video DNA outputs as an analyst-ready narrative.",
219
+ argsSchema: {
220
+ videoId: z.string().optional(),
221
+ },
222
+ }, ({ videoId }) => ({
223
+ messages: [
224
+ {
225
+ role: "user",
226
+ content: {
227
+ type: "text",
228
+ text: [
229
+ `Summarize SocialSeal Video DNA${videoId ? ` for video ${videoId}` : ""}.`,
230
+ "Use SocialSeal tools/resources for the underlying data and do not invent missing metrics.",
231
+ "Return hooks, evidence, creative patterns, and recommended next analysis.",
232
+ ].join("\n"),
233
+ },
234
+ },
235
+ ],
236
+ }));
237
+ server.registerPrompt("socialseal_search_journey_plan", {
238
+ title: "Search journey plan",
239
+ description: "Shape a search journey request before calling SocialSeal tools.",
240
+ argsSchema: {
241
+ subject: z.string().optional(),
242
+ subjectType: z.string().optional(),
243
+ region: z.string().optional(),
244
+ },
245
+ }, ({ subject, subjectType, region }) => ({
246
+ messages: [
247
+ {
248
+ role: "user",
249
+ content: {
250
+ type: "text",
251
+ text: [
252
+ "Plan a SocialSeal search journey request.",
253
+ `Subject: ${subject ?? "unspecified"}`,
254
+ `Subject type: ${subjectType ?? "unspecified"}`,
255
+ `Region: ${region ?? "unspecified"}`,
256
+ "Fetch the search-journey-run schema, identify required fields, and ask for missing inputs before starting a run.",
257
+ ].join("\n"),
258
+ },
259
+ },
260
+ ],
261
+ }));
262
+ }
263
+ function asJsonResult(value) {
264
+ return {
265
+ content: [
266
+ {
267
+ type: "text",
268
+ text: stringifyForMcp(value),
269
+ },
270
+ ],
271
+ };
272
+ }
273
+ function jsonResource(uri, value) {
274
+ return {
275
+ contents: [
276
+ {
277
+ uri,
278
+ mimeType: "application/json",
279
+ text: stringifyForMcp(value),
280
+ },
281
+ ],
282
+ };
283
+ }
284
+ function stringifyForMcp(value, maxChars = 100_000) {
285
+ const text = typeof value === "string" ? value : JSON.stringify(value);
286
+ if (text.length <= maxChars)
287
+ return text;
288
+ return JSON.stringify({
289
+ truncated: true,
290
+ originalLength: text.length,
291
+ text: text.slice(0, maxChars),
292
+ }, null, 2);
293
+ }
294
+ function requireToolEntry(toolName) {
295
+ const entry = getToolEntry(toolName);
296
+ if (!entry) {
297
+ throw new SocialSealMcpError(`Unsupported SocialSeal tool: ${toolName}`, {
298
+ code: "UNSUPPORTED_TOOL",
299
+ });
300
+ }
301
+ return entry;
302
+ }
303
+ function normalizeStatusKind(kind) {
304
+ if (["auto", "agent_job", "google_ai_run", "journey_run"].includes(kind)) {
305
+ return kind;
306
+ }
307
+ throw new SocialSealMcpError(`Unsupported status kind: ${kind}`, {
308
+ code: "INVALID_STATUS_KIND",
309
+ });
310
+ }
311
+ function normalizeWorkspaceDirectory(directory, includeInactive) {
312
+ if (!directory || typeof directory !== "object" || !("workspaces" in directory)) {
313
+ return directory;
314
+ }
315
+ const data = directory;
316
+ const workspaces = Array.isArray(data.workspaces)
317
+ ? data.workspaces.filter((workspace) => {
318
+ if (includeInactive || !workspace || typeof workspace !== "object")
319
+ return true;
320
+ if (!("isActive" in workspace))
321
+ return true;
322
+ return workspace.isActive !== false;
323
+ })
324
+ : [];
325
+ return {
326
+ ...data,
327
+ workspaces,
328
+ };
329
+ }
330
+ export function toMcpErrorResult(error) {
331
+ return {
332
+ isError: true,
333
+ content: [
334
+ {
335
+ type: "text",
336
+ text: formatError(error),
337
+ },
338
+ ],
339
+ };
340
+ }
341
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=smoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoke.d.ts","sourceRoot":"","sources":["../src/smoke.ts"],"names":[],"mappings":""}
package/dist/smoke.js ADDED
@@ -0,0 +1,37 @@
1
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
3
+ async function main() {
4
+ const client = new Client({ name: "socialseal-mcp-smoke", version: "0.1.0" });
5
+ const transport = new StdioClientTransport({
6
+ command: process.execPath,
7
+ args: ["dist/index.js"],
8
+ env: {
9
+ SOCIALSEAL_API_KEY: "ss_cli_smoke",
10
+ SOCIALSEAL_WORKSPACE_ID: "00000000-0000-4000-8000-000000000000",
11
+ },
12
+ });
13
+ await client.connect(transport);
14
+ const tools = await client.listTools();
15
+ const resources = await client.listResources();
16
+ const prompts = await client.listPrompts();
17
+ assertHas(tools.tools, "name", "socialseal_call_tool");
18
+ assertHas(resources.resources, "uri", "socialseal://tools");
19
+ assertHas(prompts.prompts, "name", "socialseal_search_journey_plan");
20
+ await client.close();
21
+ process.stdout.write(`${JSON.stringify({
22
+ tools: tools.tools.length,
23
+ resources: resources.resources.length,
24
+ prompts: prompts.prompts.length,
25
+ })}\n`);
26
+ }
27
+ function assertHas(values, key, expected) {
28
+ if (!values.some((value) => value[key] === expected)) {
29
+ throw new Error(`Expected MCP list to contain ${String(key)}=${String(expected)}`);
30
+ }
31
+ }
32
+ main().catch((error) => {
33
+ const message = error instanceof Error ? error.message : "Unknown MCP smoke failure.";
34
+ process.stderr.write(`[socialseal-mcp-smoke] ${message}\n`);
35
+ process.exitCode = 1;
36
+ });
37
+ //# sourceMappingURL=smoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoke.js","sourceRoot":"","sources":["../src/smoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC;QACzC,OAAO,EAAE,OAAO,CAAC,QAAQ;QACzB,IAAI,EAAE,CAAC,eAAe,CAAC;QACvB,GAAG,EAAE;YACH,kBAAkB,EAAE,cAAc;YAClC,uBAAuB,EAAE,sCAAsC;SAChE;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAE3C,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACvD,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;IAC5D,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC;IAErE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;QACzB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM;QACrC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;KAChC,CAAC,IAAI,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,MAAW,EACX,GAAY,EACZ,QAAiB;IAEjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC;IACtF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,OAAO,IAAI,CAAC,CAAC;IAC5D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}