@webhooks-cc/mcp 1.16.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -34,7 +34,7 @@ For other agents, `npx skills add kroqdotdev/webhooks-cc` installs the same skil
34
34
  - **claude.ai and Claude Desktop**: Settings, Connectors, add a custom connector with the URL `https://webhooks.cc/mcp`
35
35
  - **ChatGPT**: add it as a custom connector (developer mode)
36
36
 
37
- A client that can send headers may use an API key instead: `Authorization: Bearer whcc_...`. The remote server has 45 tools: `send_to` and `replay_request` are left out and `targetUrl` is refused, because a hosted server cannot reach your machine, and waits are capped at 50 seconds. It needs an account (no sandbox), and serves tools only, without prompts or resources.
37
+ A client that can send headers may use an API key instead: `Authorization: Bearer whcc_...`. The remote server has 46 tools: `send_to` and `replay_request` are left out and `targetUrl` is refused, because a hosted server cannot reach your machine, and waits are capped at 50 seconds. It needs an account (no sandbox), and serves tools only, without prompts or resources.
38
38
 
39
39
  ### One-click
40
40
 
@@ -83,13 +83,14 @@ Leave out `env` to start without a key. Get your API key at [webhooks.cc/account
83
83
 
84
84
  ## What it exposes
85
85
 
86
- The server exposes `47` tools, `3` prompts, and `3` resource surfaces with an API key, the same `47` tools and the prompts with a saved connection, and `11` sandbox tools otherwise. The remote server exposes `45` tools.
86
+ The server exposes `48` tools, `3` prompts, and `3` resource surfaces with an API key, the same `48` tools and the prompts with a saved connection, and `11` sandbox tools otherwise. The remote server exposes `46` tools.
87
87
 
88
88
  ### Endpoint tools
89
89
 
90
90
  - `create_endpoint`
91
91
  - `list_endpoints`
92
92
  - `get_endpoint`
93
+ - `favorite_endpoint` (mark or unmark one of your favourites; `list_endpoints` and `get_endpoint` show `favorite`)
93
94
  - `update_endpoint`
94
95
  - `preview_response`
95
96
  - `delete_endpoint`
package/dist/bin/mcp.js CHANGED
@@ -445,6 +445,10 @@ function registerResources(server, client) {
445
445
  var import_zod3 = require("zod");
446
446
  var import_sdk2 = require("@webhooks-cc/sdk");
447
447
 
448
+ // src/version.ts
449
+ var VERSION = true ? "1.17.0" : "0.0.0-dev";
450
+ var MCP_USER_AGENT = `webhooks-cc-mcp/${VERSION}`;
451
+
448
452
  // src/tools.ts
449
453
  var import_zod2 = require("zod");
450
454
  var import_sdk = require("@webhooks-cc/sdk");
@@ -1177,6 +1181,18 @@ function registerTools(target, client, options = {}) {
1177
1181
  return jsonContent(endpoint);
1178
1182
  })
1179
1183
  );
1184
+ server.tool(
1185
+ "favorite_endpoint",
1186
+ "Mark an endpoint as one of your favourites, or unmark it with favorite: false. A favourite is your own choice, so endpoints shared with you through teams can be marked too; list_endpoints and get_endpoint show it as favorite. Idempotent.",
1187
+ {
1188
+ slug: import_zod2.z.string().describe("The endpoint slug"),
1189
+ favorite: import_zod2.z.boolean().optional().describe("true marks it as a favourite (the default), false unmarks it")
1190
+ },
1191
+ withErrorHandling(async ({ slug, favorite }) => {
1192
+ const result = favorite === false ? await client.endpoints.unfavorite(slug) : await client.endpoints.favorite(slug);
1193
+ return jsonContent({ slug, favorite: result.favorite });
1194
+ })
1195
+ );
1180
1196
  server.tool(
1181
1197
  "update_endpoint",
1182
1198
  "Update an endpoint name, mock response, conditional response rules, signing configuration, whether codes and links are picked out of its emails, or the named fields picked out of them.",
@@ -2149,7 +2165,8 @@ var AgentSession = class {
2149
2165
  baseUrl: this.baseUrl,
2150
2166
  webhookUrl: this.webhookUrl,
2151
2167
  clientName: this.clientName,
2152
- credentialsFile: this.credentialsFile
2168
+ credentialsFile: this.credentialsFile,
2169
+ userAgent: MCP_USER_AGENT
2153
2170
  };
2154
2171
  }
2155
2172
  /**
@@ -2242,6 +2259,7 @@ function registerSandboxTools(server, options = {}) {
2242
2259
  baseUrl,
2243
2260
  webhookUrl,
2244
2261
  credentialsFile: options.credentialsFile,
2262
+ userAgent: MCP_USER_AGENT,
2245
2263
  // The human disconnected the agent: back to the sandbox, unless a
2246
2264
  // newer connection is already on display.
2247
2265
  onRevoked: () => queueMicrotask(() => {
@@ -2403,7 +2421,8 @@ function sandboxToolSet(server, session, showAccount) {
2403
2421
  webhookUrl: session.webhookUrl,
2404
2422
  email: normalized,
2405
2423
  clientName: session.clientName,
2406
- credentialsFile: session.credentialsFile
2424
+ credentialsFile: session.credentialsFile,
2425
+ userAgent: MCP_USER_AGENT
2407
2426
  }));
2408
2427
  session.connect = { via: "connect", pending, email: normalized };
2409
2428
  attempt = pending;
@@ -2509,7 +2528,6 @@ function sandboxToolSet(server, session, showAccount) {
2509
2528
  }
2510
2529
 
2511
2530
  // src/index.ts
2512
- var VERSION = true ? "1.16.0" : "0.0.0-dev";
2513
2531
  function createServer(options = {}) {
2514
2532
  const apiKey = options.apiKey ?? process.env.WHK_API_KEY;
2515
2533
  const webhookUrl = options.webhookUrl ?? process.env.WHK_WEBHOOK_URL;
@@ -2524,7 +2542,7 @@ function createServer(options = {}) {
2524
2542
  registerPrompts(server);
2525
2543
  return server;
2526
2544
  }
2527
- const client = new import_sdk3.WebhooksCC({ apiKey, webhookUrl, baseUrl });
2545
+ const client = new import_sdk3.WebhooksCC({ apiKey, webhookUrl, baseUrl, userAgent: MCP_USER_AGENT });
2528
2546
  registerTools(server, client);
2529
2547
  registerPrompts(server);
2530
2548
  registerResources(server, client);
@@ -959,6 +959,18 @@ function registerTools(target, client, options = {}) {
959
959
  return jsonContent(endpoint);
960
960
  })
961
961
  );
962
+ server.tool(
963
+ "favorite_endpoint",
964
+ "Mark an endpoint as one of your favourites, or unmark it with favorite: false. A favourite is your own choice, so endpoints shared with you through teams can be marked too; list_endpoints and get_endpoint show it as favorite. Idempotent.",
965
+ {
966
+ slug: z.string().describe("The endpoint slug"),
967
+ favorite: z.boolean().optional().describe("true marks it as a favourite (the default), false unmarks it")
968
+ },
969
+ withErrorHandling(async ({ slug, favorite }) => {
970
+ const result = favorite === false ? await client.endpoints.unfavorite(slug) : await client.endpoints.favorite(slug);
971
+ return jsonContent({ slug, favorite: result.favorite });
972
+ })
973
+ );
962
974
  server.tool(
963
975
  "update_endpoint",
964
976
  "Update an endpoint name, mock response, conditional response rules, signing configuration, whether codes and links are picked out of its emails, or the named fields picked out of them.",
package/dist/index.js CHANGED
@@ -469,6 +469,10 @@ function registerResources(server, client) {
469
469
  var import_zod3 = require("zod");
470
470
  var import_sdk2 = require("@webhooks-cc/sdk");
471
471
 
472
+ // src/version.ts
473
+ var VERSION = true ? "1.17.0" : "0.0.0-dev";
474
+ var MCP_USER_AGENT = `webhooks-cc-mcp/${VERSION}`;
475
+
472
476
  // src/tools.ts
473
477
  var import_zod2 = require("zod");
474
478
  var import_sdk = require("@webhooks-cc/sdk");
@@ -1201,6 +1205,18 @@ function registerTools(target, client, options = {}) {
1201
1205
  return jsonContent(endpoint);
1202
1206
  })
1203
1207
  );
1208
+ server.tool(
1209
+ "favorite_endpoint",
1210
+ "Mark an endpoint as one of your favourites, or unmark it with favorite: false. A favourite is your own choice, so endpoints shared with you through teams can be marked too; list_endpoints and get_endpoint show it as favorite. Idempotent.",
1211
+ {
1212
+ slug: import_zod2.z.string().describe("The endpoint slug"),
1213
+ favorite: import_zod2.z.boolean().optional().describe("true marks it as a favourite (the default), false unmarks it")
1214
+ },
1215
+ withErrorHandling(async ({ slug, favorite }) => {
1216
+ const result = favorite === false ? await client.endpoints.unfavorite(slug) : await client.endpoints.favorite(slug);
1217
+ return jsonContent({ slug, favorite: result.favorite });
1218
+ })
1219
+ );
1204
1220
  server.tool(
1205
1221
  "update_endpoint",
1206
1222
  "Update an endpoint name, mock response, conditional response rules, signing configuration, whether codes and links are picked out of its emails, or the named fields picked out of them.",
@@ -2173,7 +2189,8 @@ var AgentSession = class {
2173
2189
  baseUrl: this.baseUrl,
2174
2190
  webhookUrl: this.webhookUrl,
2175
2191
  clientName: this.clientName,
2176
- credentialsFile: this.credentialsFile
2192
+ credentialsFile: this.credentialsFile,
2193
+ userAgent: MCP_USER_AGENT
2177
2194
  };
2178
2195
  }
2179
2196
  /**
@@ -2266,6 +2283,7 @@ function registerSandboxTools(server, options = {}) {
2266
2283
  baseUrl,
2267
2284
  webhookUrl,
2268
2285
  credentialsFile: options.credentialsFile,
2286
+ userAgent: MCP_USER_AGENT,
2269
2287
  // The human disconnected the agent: back to the sandbox, unless a
2270
2288
  // newer connection is already on display.
2271
2289
  onRevoked: () => queueMicrotask(() => {
@@ -2427,7 +2445,8 @@ function sandboxToolSet(server, session, showAccount) {
2427
2445
  webhookUrl: session.webhookUrl,
2428
2446
  email: normalized,
2429
2447
  clientName: session.clientName,
2430
- credentialsFile: session.credentialsFile
2448
+ credentialsFile: session.credentialsFile,
2449
+ userAgent: MCP_USER_AGENT
2431
2450
  }));
2432
2451
  session.connect = { via: "connect", pending, email: normalized };
2433
2452
  attempt = pending;
@@ -2536,7 +2555,6 @@ function registerAgentRegistrationTools(server) {
2536
2555
  }
2537
2556
 
2538
2557
  // src/index.ts
2539
- var VERSION = true ? "1.16.0" : "0.0.0-dev";
2540
2558
  function createServer(options = {}) {
2541
2559
  const apiKey = options.apiKey ?? process.env.WHK_API_KEY;
2542
2560
  const webhookUrl = options.webhookUrl ?? process.env.WHK_WEBHOOK_URL;
@@ -2551,7 +2569,7 @@ function createServer(options = {}) {
2551
2569
  registerPrompts(server);
2552
2570
  return server;
2553
2571
  }
2554
- const client = new import_sdk3.WebhooksCC({ apiKey, webhookUrl, baseUrl });
2572
+ const client = new import_sdk3.WebhooksCC({ apiKey, webhookUrl, baseUrl, userAgent: MCP_USER_AGENT });
2555
2573
  registerTools(server, client);
2556
2574
  registerPrompts(server);
2557
2575
  registerResources(server, client);
package/dist/index.mjs CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  registerTools,
14
14
  waitForRequestShape,
15
15
  withErrorHandling
16
- } from "./chunk-4LEPLCW5.mjs";
16
+ } from "./chunk-ZAPNMGCE.mjs";
17
17
 
18
18
  // src/index.ts
19
19
  import { McpServer as McpServer2 } from "@modelcontextprotocol/sdk/server/mcp.js";
@@ -260,6 +260,12 @@ import {
260
260
  SandboxClient,
261
261
  WebhooksCC
262
262
  } from "@webhooks-cc/sdk";
263
+
264
+ // src/version.ts
265
+ var VERSION = true ? "1.17.0" : "0.0.0-dev";
266
+ var MCP_USER_AGENT = `webhooks-cc-mcp/${VERSION}`;
267
+
268
+ // src/sandbox-tools.ts
263
269
  var SANDBOX = {
264
270
  maxEndpoints: 3,
265
271
  requestsPerEndpoint: 25,
@@ -291,7 +297,8 @@ var AgentSession = class {
291
297
  baseUrl: this.baseUrl,
292
298
  webhookUrl: this.webhookUrl,
293
299
  clientName: this.clientName,
294
- credentialsFile: this.credentialsFile
300
+ credentialsFile: this.credentialsFile,
301
+ userAgent: MCP_USER_AGENT
295
302
  };
296
303
  }
297
304
  /**
@@ -384,6 +391,7 @@ function registerSandboxTools(server, options = {}) {
384
391
  baseUrl,
385
392
  webhookUrl,
386
393
  credentialsFile: options.credentialsFile,
394
+ userAgent: MCP_USER_AGENT,
387
395
  // The human disconnected the agent: back to the sandbox, unless a
388
396
  // newer connection is already on display.
389
397
  onRevoked: () => queueMicrotask(() => {
@@ -545,7 +553,8 @@ function sandboxToolSet(server, session, showAccount) {
545
553
  webhookUrl: session.webhookUrl,
546
554
  email: normalized,
547
555
  clientName: session.clientName,
548
- credentialsFile: session.credentialsFile
556
+ credentialsFile: session.credentialsFile,
557
+ userAgent: MCP_USER_AGENT
549
558
  }));
550
559
  session.connect = { via: "connect", pending, email: normalized };
551
560
  attempt = pending;
@@ -654,7 +663,6 @@ function registerAgentRegistrationTools(server) {
654
663
  }
655
664
 
656
665
  // src/index.ts
657
- var VERSION = true ? "1.16.0" : "0.0.0-dev";
658
666
  function createServer(options = {}) {
659
667
  const apiKey = options.apiKey ?? process.env.WHK_API_KEY;
660
668
  const webhookUrl = options.webhookUrl ?? process.env.WHK_WEBHOOK_URL;
@@ -669,7 +677,7 @@ function createServer(options = {}) {
669
677
  registerPrompts(server);
670
678
  return server;
671
679
  }
672
- const client = new WebhooksCC2({ apiKey, webhookUrl, baseUrl });
680
+ const client = new WebhooksCC2({ apiKey, webhookUrl, baseUrl, userAgent: MCP_USER_AGENT });
673
681
  registerTools(server, client);
674
682
  registerPrompts(server);
675
683
  registerResources(server, client);
package/dist/tools.js CHANGED
@@ -968,6 +968,18 @@ function registerTools(target, client, options = {}) {
968
968
  return jsonContent(endpoint);
969
969
  })
970
970
  );
971
+ server.tool(
972
+ "favorite_endpoint",
973
+ "Mark an endpoint as one of your favourites, or unmark it with favorite: false. A favourite is your own choice, so endpoints shared with you through teams can be marked too; list_endpoints and get_endpoint show it as favorite. Idempotent.",
974
+ {
975
+ slug: import_zod.z.string().describe("The endpoint slug"),
976
+ favorite: import_zod.z.boolean().optional().describe("true marks it as a favourite (the default), false unmarks it")
977
+ },
978
+ withErrorHandling(async ({ slug, favorite }) => {
979
+ const result = favorite === false ? await client.endpoints.unfavorite(slug) : await client.endpoints.favorite(slug);
980
+ return jsonContent({ slug, favorite: result.favorite });
981
+ })
982
+ );
971
983
  server.tool(
972
984
  "update_endpoint",
973
985
  "Update an endpoint name, mock response, conditional response rules, signing configuration, whether codes and links are picked out of its emails, or the named fields picked out of them.",
package/dist/tools.mjs CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  textContent,
15
15
  waitForRequestShape,
16
16
  withErrorHandling
17
- } from "./chunk-4LEPLCW5.mjs";
17
+ } from "./chunk-ZAPNMGCE.mjs";
18
18
  export {
19
19
  REMOTE_MAX_WAIT_MS,
20
20
  REMOTE_MIN_POLL_MS,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webhooks-cc/mcp",
3
- "version": "1.16.0",
3
+ "version": "1.17.0",
4
4
  "mcpName": "io.github.kroqdotdev/webhooks-cc",
5
5
  "description": "MCP server for webhooks.cc — AI agent integration for webhook testing",
6
6
  "main": "dist/index.js",
@@ -44,7 +44,7 @@
44
44
  "dependencies": {
45
45
  "@modelcontextprotocol/sdk": "^1.32.1",
46
46
  "zod": "^4.6.7",
47
- "@webhooks-cc/sdk": "1.20.0"
47
+ "@webhooks-cc/sdk": "1.21.0"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/node": "^26.6.5",