@webhooks-cc/mcp 1.4.0 → 1.5.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 +14 -0
- package/dist/bin/mcp.js +19 -9
- package/dist/index.js +19 -9
- package/dist/index.mjs +19 -9
- package/package.json +13 -14
package/README.md
CHANGED
|
@@ -135,6 +135,20 @@ Provider template and signing support includes:
|
|
|
135
135
|
- `gitlab`
|
|
136
136
|
- `typeform`
|
|
137
137
|
- `standard-webhooks`
|
|
138
|
+
- `meta`
|
|
139
|
+
- `lemonsqueezy`
|
|
140
|
+
- `coinbase-commerce`
|
|
141
|
+
- `razorpay`
|
|
142
|
+
- `cal`
|
|
143
|
+
- `intercom`
|
|
144
|
+
- `telegram`
|
|
145
|
+
- `square`
|
|
146
|
+
- `hubspot`
|
|
147
|
+
- `mailgun`
|
|
148
|
+
- `calendly`
|
|
149
|
+
- `mux`
|
|
150
|
+
- `sentry`
|
|
151
|
+
- `bitbucket`
|
|
138
152
|
|
|
139
153
|
Signature verification also supports:
|
|
140
154
|
|
package/dist/bin/mcp.js
CHANGED
|
@@ -292,7 +292,7 @@ var responseRulesSchema = import_zod2.z.array(responseRuleSchema).max(50).descri
|
|
|
292
292
|
var mockResponseSchema = import_zod2.z.object({
|
|
293
293
|
status: import_zod2.z.number().int().min(import_sdk.MOCK_RESPONSE_STATUS_MIN).max(import_sdk.MOCK_RESPONSE_STATUS_MAX).describe(`HTTP status code (${import_sdk.MOCK_RESPONSE_STATUS_MIN}-${import_sdk.MOCK_RESPONSE_STATUS_MAX})`),
|
|
294
294
|
body: import_zod2.z.string().default("").describe("Response body string (default: empty)"),
|
|
295
|
-
headers: import_zod2.z.record(import_zod2.z.string()).default({}).describe("Response headers (default: none)"),
|
|
295
|
+
headers: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.string()).default({}).describe("Response headers (default: none)"),
|
|
296
296
|
delay: import_zod2.z.number().int().min(import_sdk.MOCK_RESPONSE_DELAY_MIN).max(import_sdk.MOCK_RESPONSE_DELAY_MAX).optional().describe(
|
|
297
297
|
`Response delay in milliseconds (${import_sdk.MOCK_RESPONSE_DELAY_MIN}-${import_sdk.MOCK_RESPONSE_DELAY_MAX}, default: none)`
|
|
298
298
|
)
|
|
@@ -474,7 +474,8 @@ function ensureVerifyArgs(args2) {
|
|
|
474
474
|
return {
|
|
475
475
|
provider: args2.provider,
|
|
476
476
|
secret,
|
|
477
|
-
...args2.url ? { url: args2.url } : {}
|
|
477
|
+
...args2.url ? { url: args2.url } : {},
|
|
478
|
+
...args2.method ? { method: args2.method } : {}
|
|
478
479
|
};
|
|
479
480
|
}
|
|
480
481
|
async function summarizeResponse(response) {
|
|
@@ -681,7 +682,7 @@ function registerTools(server, client) {
|
|
|
681
682
|
{
|
|
682
683
|
slug: import_zod2.z.string().describe("The endpoint slug to send to"),
|
|
683
684
|
method: methodSchema,
|
|
684
|
-
headers: import_zod2.z.record(import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
685
|
+
headers: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
685
686
|
body: import_zod2.z.unknown().optional().describe("Request body"),
|
|
686
687
|
provider: import_zod2.z.enum(import_sdk.TEMPLATE_PROVIDERS).optional().describe("Optional provider template to send with signed headers"),
|
|
687
688
|
template: import_zod2.z.string().optional().describe("Provider-specific template preset"),
|
|
@@ -873,9 +874,12 @@ function registerTools(server, client) {
|
|
|
873
874
|
"Shared signing secret. Required for non-Discord providers when doing client-side verification."
|
|
874
875
|
),
|
|
875
876
|
publicKey: import_zod2.z.string().optional().describe("Discord application public key. Required for provider=discord."),
|
|
876
|
-
url: httpUrlSchema.optional().describe("Original signed URL. Required for Twilio verification.")
|
|
877
|
+
url: httpUrlSchema.optional().describe("Original signed URL. Required for Twilio, Square, and HubSpot verification."),
|
|
878
|
+
method: import_zod2.z.string().optional().describe(
|
|
879
|
+
"Original HTTP method used when the signature was generated. Used by HubSpot v3 verification; the SDK assumes POST when omitted."
|
|
880
|
+
)
|
|
877
881
|
},
|
|
878
|
-
withErrorHandling(async ({ requestId, provider, secret, publicKey, url }) => {
|
|
882
|
+
withErrorHandling(async ({ requestId, provider, secret, publicKey, url, method }) => {
|
|
879
883
|
const request = await client.requests.get(requestId);
|
|
880
884
|
if (!provider && !secret && !publicKey) {
|
|
881
885
|
const verified = request.signatureVerified;
|
|
@@ -902,7 +906,13 @@ function registerTools(server, client) {
|
|
|
902
906
|
skipped: isSkipped ?? false
|
|
903
907
|
});
|
|
904
908
|
}
|
|
905
|
-
const verificationOptions = ensureVerifyArgs({
|
|
909
|
+
const verificationOptions = ensureVerifyArgs({
|
|
910
|
+
provider,
|
|
911
|
+
secret,
|
|
912
|
+
publicKey,
|
|
913
|
+
url,
|
|
914
|
+
method
|
|
915
|
+
});
|
|
906
916
|
const result = await (0, import_sdk.verifySignature)(request, verificationOptions);
|
|
907
917
|
return jsonContent({
|
|
908
918
|
valid: result.valid,
|
|
@@ -928,7 +938,7 @@ function registerTools(server, client) {
|
|
|
928
938
|
{
|
|
929
939
|
url: httpUrlSchema.describe("Target URL"),
|
|
930
940
|
method: methodSchema,
|
|
931
|
-
headers: import_zod2.z.record(import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
941
|
+
headers: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
932
942
|
body: import_zod2.z.unknown().optional().describe("Request body"),
|
|
933
943
|
provider: import_zod2.z.enum(import_sdk.TEMPLATE_PROVIDERS).optional().describe("Optional provider template for signing"),
|
|
934
944
|
template: import_zod2.z.string().optional().describe("Provider-specific template preset"),
|
|
@@ -959,7 +969,7 @@ function registerTools(server, client) {
|
|
|
959
969
|
{
|
|
960
970
|
url: httpUrlSchema.describe("Target URL"),
|
|
961
971
|
method: methodSchema,
|
|
962
|
-
headers: import_zod2.z.record(import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
972
|
+
headers: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
963
973
|
body: import_zod2.z.unknown().optional().describe("Request body"),
|
|
964
974
|
provider: import_zod2.z.enum(import_sdk.TEMPLATE_PROVIDERS).optional().describe("Optional provider template for signing"),
|
|
965
975
|
template: import_zod2.z.string().optional().describe("Provider-specific template preset"),
|
|
@@ -1096,7 +1106,7 @@ function registerTools(server, client) {
|
|
|
1096
1106
|
}
|
|
1097
1107
|
|
|
1098
1108
|
// src/index.ts
|
|
1099
|
-
var VERSION = true ? "1.
|
|
1109
|
+
var VERSION = true ? "1.5.0" : "0.0.0-dev";
|
|
1100
1110
|
function createServer(options = {}) {
|
|
1101
1111
|
const apiKey = options.apiKey ?? process.env.WHK_API_KEY;
|
|
1102
1112
|
if (!apiKey) {
|
package/dist/index.js
CHANGED
|
@@ -313,7 +313,7 @@ var responseRulesSchema = import_zod2.z.array(responseRuleSchema).max(50).descri
|
|
|
313
313
|
var mockResponseSchema = import_zod2.z.object({
|
|
314
314
|
status: import_zod2.z.number().int().min(import_sdk.MOCK_RESPONSE_STATUS_MIN).max(import_sdk.MOCK_RESPONSE_STATUS_MAX).describe(`HTTP status code (${import_sdk.MOCK_RESPONSE_STATUS_MIN}-${import_sdk.MOCK_RESPONSE_STATUS_MAX})`),
|
|
315
315
|
body: import_zod2.z.string().default("").describe("Response body string (default: empty)"),
|
|
316
|
-
headers: import_zod2.z.record(import_zod2.z.string()).default({}).describe("Response headers (default: none)"),
|
|
316
|
+
headers: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.string()).default({}).describe("Response headers (default: none)"),
|
|
317
317
|
delay: import_zod2.z.number().int().min(import_sdk.MOCK_RESPONSE_DELAY_MIN).max(import_sdk.MOCK_RESPONSE_DELAY_MAX).optional().describe(
|
|
318
318
|
`Response delay in milliseconds (${import_sdk.MOCK_RESPONSE_DELAY_MIN}-${import_sdk.MOCK_RESPONSE_DELAY_MAX}, default: none)`
|
|
319
319
|
)
|
|
@@ -495,7 +495,8 @@ function ensureVerifyArgs(args) {
|
|
|
495
495
|
return {
|
|
496
496
|
provider: args.provider,
|
|
497
497
|
secret,
|
|
498
|
-
...args.url ? { url: args.url } : {}
|
|
498
|
+
...args.url ? { url: args.url } : {},
|
|
499
|
+
...args.method ? { method: args.method } : {}
|
|
499
500
|
};
|
|
500
501
|
}
|
|
501
502
|
async function summarizeResponse(response) {
|
|
@@ -702,7 +703,7 @@ function registerTools(server, client) {
|
|
|
702
703
|
{
|
|
703
704
|
slug: import_zod2.z.string().describe("The endpoint slug to send to"),
|
|
704
705
|
method: methodSchema,
|
|
705
|
-
headers: import_zod2.z.record(import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
706
|
+
headers: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
706
707
|
body: import_zod2.z.unknown().optional().describe("Request body"),
|
|
707
708
|
provider: import_zod2.z.enum(import_sdk.TEMPLATE_PROVIDERS).optional().describe("Optional provider template to send with signed headers"),
|
|
708
709
|
template: import_zod2.z.string().optional().describe("Provider-specific template preset"),
|
|
@@ -894,9 +895,12 @@ function registerTools(server, client) {
|
|
|
894
895
|
"Shared signing secret. Required for non-Discord providers when doing client-side verification."
|
|
895
896
|
),
|
|
896
897
|
publicKey: import_zod2.z.string().optional().describe("Discord application public key. Required for provider=discord."),
|
|
897
|
-
url: httpUrlSchema.optional().describe("Original signed URL. Required for Twilio verification.")
|
|
898
|
+
url: httpUrlSchema.optional().describe("Original signed URL. Required for Twilio, Square, and HubSpot verification."),
|
|
899
|
+
method: import_zod2.z.string().optional().describe(
|
|
900
|
+
"Original HTTP method used when the signature was generated. Used by HubSpot v3 verification; the SDK assumes POST when omitted."
|
|
901
|
+
)
|
|
898
902
|
},
|
|
899
|
-
withErrorHandling(async ({ requestId, provider, secret, publicKey, url }) => {
|
|
903
|
+
withErrorHandling(async ({ requestId, provider, secret, publicKey, url, method }) => {
|
|
900
904
|
const request = await client.requests.get(requestId);
|
|
901
905
|
if (!provider && !secret && !publicKey) {
|
|
902
906
|
const verified = request.signatureVerified;
|
|
@@ -923,7 +927,13 @@ function registerTools(server, client) {
|
|
|
923
927
|
skipped: isSkipped ?? false
|
|
924
928
|
});
|
|
925
929
|
}
|
|
926
|
-
const verificationOptions = ensureVerifyArgs({
|
|
930
|
+
const verificationOptions = ensureVerifyArgs({
|
|
931
|
+
provider,
|
|
932
|
+
secret,
|
|
933
|
+
publicKey,
|
|
934
|
+
url,
|
|
935
|
+
method
|
|
936
|
+
});
|
|
927
937
|
const result = await (0, import_sdk.verifySignature)(request, verificationOptions);
|
|
928
938
|
return jsonContent({
|
|
929
939
|
valid: result.valid,
|
|
@@ -949,7 +959,7 @@ function registerTools(server, client) {
|
|
|
949
959
|
{
|
|
950
960
|
url: httpUrlSchema.describe("Target URL"),
|
|
951
961
|
method: methodSchema,
|
|
952
|
-
headers: import_zod2.z.record(import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
962
|
+
headers: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
953
963
|
body: import_zod2.z.unknown().optional().describe("Request body"),
|
|
954
964
|
provider: import_zod2.z.enum(import_sdk.TEMPLATE_PROVIDERS).optional().describe("Optional provider template for signing"),
|
|
955
965
|
template: import_zod2.z.string().optional().describe("Provider-specific template preset"),
|
|
@@ -980,7 +990,7 @@ function registerTools(server, client) {
|
|
|
980
990
|
{
|
|
981
991
|
url: httpUrlSchema.describe("Target URL"),
|
|
982
992
|
method: methodSchema,
|
|
983
|
-
headers: import_zod2.z.record(import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
993
|
+
headers: import_zod2.z.record(import_zod2.z.string(), import_zod2.z.string()).optional().describe("HTTP headers to include"),
|
|
984
994
|
body: import_zod2.z.unknown().optional().describe("Request body"),
|
|
985
995
|
provider: import_zod2.z.enum(import_sdk.TEMPLATE_PROVIDERS).optional().describe("Optional provider template for signing"),
|
|
986
996
|
template: import_zod2.z.string().optional().describe("Provider-specific template preset"),
|
|
@@ -1117,7 +1127,7 @@ function registerTools(server, client) {
|
|
|
1117
1127
|
}
|
|
1118
1128
|
|
|
1119
1129
|
// src/index.ts
|
|
1120
|
-
var VERSION = true ? "1.
|
|
1130
|
+
var VERSION = true ? "1.5.0" : "0.0.0-dev";
|
|
1121
1131
|
function createServer(options = {}) {
|
|
1122
1132
|
const apiKey = options.apiKey ?? process.env.WHK_API_KEY;
|
|
1123
1133
|
if (!apiKey) {
|
package/dist/index.mjs
CHANGED
|
@@ -306,7 +306,7 @@ var responseRulesSchema = z2.array(responseRuleSchema).max(50).describe("Ordered
|
|
|
306
306
|
var mockResponseSchema = z2.object({
|
|
307
307
|
status: z2.number().int().min(MOCK_RESPONSE_STATUS_MIN).max(MOCK_RESPONSE_STATUS_MAX).describe(`HTTP status code (${MOCK_RESPONSE_STATUS_MIN}-${MOCK_RESPONSE_STATUS_MAX})`),
|
|
308
308
|
body: z2.string().default("").describe("Response body string (default: empty)"),
|
|
309
|
-
headers: z2.record(z2.string()).default({}).describe("Response headers (default: none)"),
|
|
309
|
+
headers: z2.record(z2.string(), z2.string()).default({}).describe("Response headers (default: none)"),
|
|
310
310
|
delay: z2.number().int().min(MOCK_RESPONSE_DELAY_MIN).max(MOCK_RESPONSE_DELAY_MAX).optional().describe(
|
|
311
311
|
`Response delay in milliseconds (${MOCK_RESPONSE_DELAY_MIN}-${MOCK_RESPONSE_DELAY_MAX}, default: none)`
|
|
312
312
|
)
|
|
@@ -488,7 +488,8 @@ function ensureVerifyArgs(args) {
|
|
|
488
488
|
return {
|
|
489
489
|
provider: args.provider,
|
|
490
490
|
secret,
|
|
491
|
-
...args.url ? { url: args.url } : {}
|
|
491
|
+
...args.url ? { url: args.url } : {},
|
|
492
|
+
...args.method ? { method: args.method } : {}
|
|
492
493
|
};
|
|
493
494
|
}
|
|
494
495
|
async function summarizeResponse(response) {
|
|
@@ -695,7 +696,7 @@ function registerTools(server, client) {
|
|
|
695
696
|
{
|
|
696
697
|
slug: z2.string().describe("The endpoint slug to send to"),
|
|
697
698
|
method: methodSchema,
|
|
698
|
-
headers: z2.record(z2.string()).optional().describe("HTTP headers to include"),
|
|
699
|
+
headers: z2.record(z2.string(), z2.string()).optional().describe("HTTP headers to include"),
|
|
699
700
|
body: z2.unknown().optional().describe("Request body"),
|
|
700
701
|
provider: z2.enum(TEMPLATE_PROVIDERS).optional().describe("Optional provider template to send with signed headers"),
|
|
701
702
|
template: z2.string().optional().describe("Provider-specific template preset"),
|
|
@@ -887,9 +888,12 @@ function registerTools(server, client) {
|
|
|
887
888
|
"Shared signing secret. Required for non-Discord providers when doing client-side verification."
|
|
888
889
|
),
|
|
889
890
|
publicKey: z2.string().optional().describe("Discord application public key. Required for provider=discord."),
|
|
890
|
-
url: httpUrlSchema.optional().describe("Original signed URL. Required for Twilio verification.")
|
|
891
|
+
url: httpUrlSchema.optional().describe("Original signed URL. Required for Twilio, Square, and HubSpot verification."),
|
|
892
|
+
method: z2.string().optional().describe(
|
|
893
|
+
"Original HTTP method used when the signature was generated. Used by HubSpot v3 verification; the SDK assumes POST when omitted."
|
|
894
|
+
)
|
|
891
895
|
},
|
|
892
|
-
withErrorHandling(async ({ requestId, provider, secret, publicKey, url }) => {
|
|
896
|
+
withErrorHandling(async ({ requestId, provider, secret, publicKey, url, method }) => {
|
|
893
897
|
const request = await client.requests.get(requestId);
|
|
894
898
|
if (!provider && !secret && !publicKey) {
|
|
895
899
|
const verified = request.signatureVerified;
|
|
@@ -916,7 +920,13 @@ function registerTools(server, client) {
|
|
|
916
920
|
skipped: isSkipped ?? false
|
|
917
921
|
});
|
|
918
922
|
}
|
|
919
|
-
const verificationOptions = ensureVerifyArgs({
|
|
923
|
+
const verificationOptions = ensureVerifyArgs({
|
|
924
|
+
provider,
|
|
925
|
+
secret,
|
|
926
|
+
publicKey,
|
|
927
|
+
url,
|
|
928
|
+
method
|
|
929
|
+
});
|
|
920
930
|
const result = await verifySignature(request, verificationOptions);
|
|
921
931
|
return jsonContent({
|
|
922
932
|
valid: result.valid,
|
|
@@ -942,7 +952,7 @@ function registerTools(server, client) {
|
|
|
942
952
|
{
|
|
943
953
|
url: httpUrlSchema.describe("Target URL"),
|
|
944
954
|
method: methodSchema,
|
|
945
|
-
headers: z2.record(z2.string()).optional().describe("HTTP headers to include"),
|
|
955
|
+
headers: z2.record(z2.string(), z2.string()).optional().describe("HTTP headers to include"),
|
|
946
956
|
body: z2.unknown().optional().describe("Request body"),
|
|
947
957
|
provider: z2.enum(TEMPLATE_PROVIDERS).optional().describe("Optional provider template for signing"),
|
|
948
958
|
template: z2.string().optional().describe("Provider-specific template preset"),
|
|
@@ -973,7 +983,7 @@ function registerTools(server, client) {
|
|
|
973
983
|
{
|
|
974
984
|
url: httpUrlSchema.describe("Target URL"),
|
|
975
985
|
method: methodSchema,
|
|
976
|
-
headers: z2.record(z2.string()).optional().describe("HTTP headers to include"),
|
|
986
|
+
headers: z2.record(z2.string(), z2.string()).optional().describe("HTTP headers to include"),
|
|
977
987
|
body: z2.unknown().optional().describe("Request body"),
|
|
978
988
|
provider: z2.enum(TEMPLATE_PROVIDERS).optional().describe("Optional provider template for signing"),
|
|
979
989
|
template: z2.string().optional().describe("Provider-specific template preset"),
|
|
@@ -1110,7 +1120,7 @@ function registerTools(server, client) {
|
|
|
1110
1120
|
}
|
|
1111
1121
|
|
|
1112
1122
|
// src/index.ts
|
|
1113
|
-
var VERSION = true ? "1.
|
|
1123
|
+
var VERSION = true ? "1.5.0" : "0.0.0-dev";
|
|
1114
1124
|
function createServer(options = {}) {
|
|
1115
1125
|
const apiKey = options.apiKey ?? process.env.WHK_API_KEY;
|
|
1116
1126
|
if (!apiKey) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webhooks-cc/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "MCP server for webhooks.cc — AI agent integration for webhook testing",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -19,13 +19,6 @@
|
|
|
19
19
|
"dist",
|
|
20
20
|
"README.md"
|
|
21
21
|
],
|
|
22
|
-
"scripts": {
|
|
23
|
-
"build": "tsup",
|
|
24
|
-
"dev": "tsup --watch",
|
|
25
|
-
"typecheck": "tsc --noEmit",
|
|
26
|
-
"test": "vitest run",
|
|
27
|
-
"prepublishOnly": "npm run build"
|
|
28
|
-
},
|
|
29
22
|
"keywords": [
|
|
30
23
|
"webhook",
|
|
31
24
|
"mcp",
|
|
@@ -44,13 +37,19 @@
|
|
|
44
37
|
"homepage": "https://webhooks.cc",
|
|
45
38
|
"dependencies": {
|
|
46
39
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
47
|
-
"
|
|
48
|
-
"
|
|
40
|
+
"zod": "^4.4.3",
|
|
41
|
+
"@webhooks-cc/sdk": "1.7.0"
|
|
49
42
|
},
|
|
50
43
|
"devDependencies": {
|
|
51
|
-
"@types/node": "^25.
|
|
44
|
+
"@types/node": "^25.9.1",
|
|
52
45
|
"tsup": "^8.5.1",
|
|
53
|
-
"typescript": "^6.0.
|
|
54
|
-
"vitest": "^4.1.
|
|
46
|
+
"typescript": "^6.0.3",
|
|
47
|
+
"vitest": "^4.1.7"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "tsup",
|
|
51
|
+
"dev": "tsup --watch",
|
|
52
|
+
"typecheck": "tsc --noEmit",
|
|
53
|
+
"test": "vitest run"
|
|
55
54
|
}
|
|
56
|
-
}
|
|
55
|
+
}
|