@turbopentest/mcp-server 0.1.5 → 0.1.7
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/dist/server.js +1 -1
- package/dist/tools/download-report.js +20 -7
- package/dist/tools/download-report.js.map +1 -1
- package/dist/tools/get-credits.js +10 -4
- package/dist/tools/get-credits.js.map +1 -1
- package/dist/tools/get-findings.js +23 -7
- package/dist/tools/get-findings.js.map +1 -1
- package/dist/tools/get-pentest.js +17 -5
- package/dist/tools/get-pentest.js.map +1 -1
- package/dist/tools/list-domains.js +16 -6
- package/dist/tools/list-domains.js.map +1 -1
- package/dist/tools/list-pentests.js +19 -11
- package/dist/tools/list-pentests.js.map +1 -1
- package/dist/tools/start-pentest.js +24 -9
- package/dist/tools/start-pentest.js.map +1 -1
- package/dist/tools/verify-attestation.js +16 -6
- package/dist/tools/verify-attestation.js.map +1 -1
- package/dist/types.d.ts +7 -5
- package/package.json +2 -2
package/dist/server.js
CHANGED
|
@@ -10,7 +10,7 @@ import { registerListDomains } from "./tools/list-domains.js";
|
|
|
10
10
|
export function createServer(client) {
|
|
11
11
|
const server = new McpServer({
|
|
12
12
|
name: "turbopentest",
|
|
13
|
-
version: "0.1.
|
|
13
|
+
version: "0.1.7",
|
|
14
14
|
});
|
|
15
15
|
registerStartPentest(server, client);
|
|
16
16
|
registerGetPentest(server, client);
|
|
@@ -1,15 +1,28 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export function registerDownloadReport(server, client) {
|
|
3
|
-
server.registerTool("
|
|
4
|
-
title: "Download Report",
|
|
5
|
-
description: "Download a
|
|
6
|
-
"
|
|
7
|
-
"
|
|
3
|
+
server.registerTool("turbopentest_download_report", {
|
|
4
|
+
title: "Download Pentest Report",
|
|
5
|
+
description: "Download a full penetration test report in the specified format. " +
|
|
6
|
+
"The scan must have status 'complete' before a report can be generated. " +
|
|
7
|
+
"Use format 'markdown' for AI-readable analysis, 'json' for structured programmatic data, " +
|
|
8
|
+
"or 'pdf' for a professionally formatted document suitable for stakeholders.",
|
|
9
|
+
annotations: {
|
|
10
|
+
readOnlyHint: true,
|
|
11
|
+
destructiveHint: false,
|
|
12
|
+
openWorldHint: false,
|
|
13
|
+
},
|
|
8
14
|
inputSchema: z.object({
|
|
9
|
-
pentest_id: z
|
|
15
|
+
pentest_id: z
|
|
16
|
+
.string()
|
|
17
|
+
.uuid()
|
|
18
|
+
.describe("The unique identifier (UUID) of the completed penetration test to generate a report for. " +
|
|
19
|
+
"Returned by turbopentest_start_pentest or turbopentest_list_pentests."),
|
|
10
20
|
format: z
|
|
11
21
|
.enum(["json", "markdown", "pdf"])
|
|
12
|
-
.describe("
|
|
22
|
+
.describe("The output format for the report. " +
|
|
23
|
+
"'markdown': human and AI-readable text — best for analysis and summarization. " +
|
|
24
|
+
"'json': structured data with all fields — best for programmatic processing. " +
|
|
25
|
+
"'pdf': professionally formatted document — best for sharing with stakeholders (returns a download URL)."),
|
|
13
26
|
}),
|
|
14
27
|
}, async ({ pentest_id, format }) => {
|
|
15
28
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-report.js","sourceRoot":"","sources":["../../src/tools/download-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAA0B;IAClF,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"download-report.js","sourceRoot":"","sources":["../../src/tools/download-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAA0B;IAClF,MAAM,CAAC,YAAY,CACjB,8BAA8B,EAC9B;QACE,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,mEAAmE;YACnE,yEAAyE;YACzE,2FAA2F;YAC3F,6EAA6E;QAC/E,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,IAAI,EAAE;iBACN,QAAQ,CACP,2FAA2F;gBACzF,uEAAuE,CAC1E;YACH,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;iBACjC,QAAQ,CACP,oCAAoC;gBAClC,gFAAgF;gBAChF,8EAA8E;gBAC9E,yGAAyG,CAC5G;SACJ,CAAC;KACH,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAE1D,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EACF,0BAA0B,UAAU,kCAAkC;gCACtE,yCAAyC,UAAU,wBAAwB;gCAC3E,4FAA4F;yBAC/F;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;yBACtC;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,WAAW;YACX,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAgB,EAAE,CAAC;aAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8BAA8B,OAAO,EAAE,EAAE,CAAC;gBACnF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export function registerGetCredits(server, client) {
|
|
3
|
-
server.registerTool("
|
|
4
|
-
title: "Get
|
|
5
|
-
description: "Check your credit balance and available scan tiers with pricing. " +
|
|
6
|
-
"Credits are
|
|
3
|
+
server.registerTool("turbopentest_get_credits", {
|
|
4
|
+
title: "Get Credit Balance",
|
|
5
|
+
description: "Check your current credit balance, usage breakdown by tier, and available scan tiers with pricing. " +
|
|
6
|
+
"Credits are consumed when launching penetration tests — each tier costs one credit of the matching type. " +
|
|
7
|
+
"Call this before turbopentest_start_pentest to verify you have sufficient credits for the desired tier.",
|
|
8
|
+
annotations: {
|
|
9
|
+
readOnlyHint: true,
|
|
10
|
+
destructiveHint: false,
|
|
11
|
+
openWorldHint: false,
|
|
12
|
+
},
|
|
7
13
|
inputSchema: z.object({}),
|
|
8
14
|
}, async () => {
|
|
9
15
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-credits.js","sourceRoot":"","sources":["../../src/tools/get-credits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAA0B;IAC9E,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"get-credits.js","sourceRoot":"","sources":["../../src/tools/get-credits.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,17 +25,33 @@ function formatFinding(f, index) {
|
|
|
25
25
|
return lines.join("\n");
|
|
26
26
|
}
|
|
27
27
|
export function registerGetFindings(server, client) {
|
|
28
|
-
server.registerTool("
|
|
29
|
-
title: "Get Findings",
|
|
30
|
-
description: "
|
|
31
|
-
"Each finding includes severity, CVSS, CWE
|
|
32
|
-
"
|
|
28
|
+
server.registerTool("turbopentest_get_findings", {
|
|
29
|
+
title: "Get Vulnerability Findings",
|
|
30
|
+
description: "Retrieve structured vulnerability findings for a completed penetration test. " +
|
|
31
|
+
"Each finding includes severity, CVSS score, CWE classification, detailed description, " +
|
|
32
|
+
"proof of concept, remediation steps, and a retest command. " +
|
|
33
|
+
"Returns up to 20 findings at a time — use the severity filter to focus on specific risk levels. " +
|
|
34
|
+
"Use turbopentest_download_report for a complete exportable report.",
|
|
35
|
+
annotations: {
|
|
36
|
+
readOnlyHint: true,
|
|
37
|
+
destructiveHint: false,
|
|
38
|
+
openWorldHint: false,
|
|
39
|
+
},
|
|
33
40
|
inputSchema: z.object({
|
|
34
|
-
pentest_id: z
|
|
41
|
+
pentest_id: z
|
|
42
|
+
.string()
|
|
43
|
+
.uuid()
|
|
44
|
+
.describe("The unique identifier (UUID) of the penetration test to retrieve findings for. " +
|
|
45
|
+
"Returned by turbopentest_start_pentest or turbopentest_list_pentests."),
|
|
35
46
|
severity: z
|
|
36
47
|
.enum(["critical", "high", "medium", "low", "info"])
|
|
37
48
|
.optional()
|
|
38
|
-
.describe("Filter findings by severity level"
|
|
49
|
+
.describe("Filter findings by severity level. " +
|
|
50
|
+
"'critical': exploitable vulnerabilities with severe business impact. " +
|
|
51
|
+
"'high': significant vulnerabilities requiring prompt remediation. " +
|
|
52
|
+
"'medium': moderate-risk issues that should be addressed. " +
|
|
53
|
+
"'low': minor issues with limited impact. " +
|
|
54
|
+
"'info': informational observations and hardening suggestions."),
|
|
39
55
|
}),
|
|
40
56
|
}, async ({ pentest_id, severity }) => {
|
|
41
57
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-findings.js","sourceRoot":"","sources":["../../src/tools/get-findings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,SAAS,aAAa,CAAC,CAAU,EAAE,KAAa;IAC9C,MAAM,KAAK,GAAG;QACZ,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE;QACxD,aAAa,CAAC,CAAC,UAAU,EAAE;KAC5B,CAAC;IAEF,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClG,IAAI,CAAC,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC,cAAc;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;IAElE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAA0B;IAC/E,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"get-findings.js","sourceRoot":"","sources":["../../src/tools/get-findings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export function registerGetPentest(server, client) {
|
|
3
|
-
server.registerTool("
|
|
4
|
-
title: "Get
|
|
5
|
-
description: "
|
|
6
|
-
"
|
|
3
|
+
server.registerTool("turbopentest_get_pentest", {
|
|
4
|
+
title: "Get Penetration Test Details",
|
|
5
|
+
description: "Retrieve full details for a specific penetration test by its ID. " +
|
|
6
|
+
"Returns current status, scan progress percentage, findings summary by severity, " +
|
|
7
|
+
"executive summary, attack surface map, and STRIDE threat model. " +
|
|
8
|
+
"Use this to monitor a running scan or review completed results. " +
|
|
9
|
+
"For detailed vulnerability data, follow up with turbopentest_get_findings.",
|
|
10
|
+
annotations: {
|
|
11
|
+
readOnlyHint: true,
|
|
12
|
+
destructiveHint: false,
|
|
13
|
+
openWorldHint: false,
|
|
14
|
+
},
|
|
7
15
|
inputSchema: z.object({
|
|
8
|
-
pentest_id: z
|
|
16
|
+
pentest_id: z
|
|
17
|
+
.string()
|
|
18
|
+
.uuid()
|
|
19
|
+
.describe("The unique identifier (UUID) of the penetration test. " +
|
|
20
|
+
"Returned by turbopentest_start_pentest or turbopentest_list_pentests."),
|
|
9
21
|
}),
|
|
10
22
|
}, async ({ pentest_id }) => {
|
|
11
23
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-pentest.js","sourceRoot":"","sources":["../../src/tools/get-pentest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,MAA0B;IAC9E,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"get-pentest.js","sourceRoot":"","sources":["../../src/tools/get-pentest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export function registerListDomains(server, client) {
|
|
3
|
-
server.registerTool("
|
|
4
|
-
title: "List Domains",
|
|
5
|
-
description: "List your
|
|
6
|
-
"
|
|
3
|
+
server.registerTool("turbopentest_list_domains", {
|
|
4
|
+
title: "List Verified Domains",
|
|
5
|
+
description: "List all domains in your account with their verification status and expiry dates. " +
|
|
6
|
+
"A domain must have status 'verified' before it can be used as a target in turbopentest_start_pentest. " +
|
|
7
|
+
"To verify a new domain, add a DNS TXT record via the TurboPentest dashboard at turbopentest.com/domains.",
|
|
8
|
+
annotations: {
|
|
9
|
+
readOnlyHint: true,
|
|
10
|
+
destructiveHint: false,
|
|
11
|
+
openWorldHint: false,
|
|
12
|
+
},
|
|
7
13
|
inputSchema: z.object({}),
|
|
8
14
|
}, async () => {
|
|
9
15
|
try {
|
|
@@ -21,9 +27,13 @@ export function registerListDomains(server, client) {
|
|
|
21
27
|
}
|
|
22
28
|
const lines = [`Domains (${domains.length})`, ""];
|
|
23
29
|
for (const d of domains) {
|
|
24
|
-
const verified = d.verifiedAt
|
|
30
|
+
const verified = d.verifiedAt
|
|
31
|
+
? "Verified"
|
|
32
|
+
: d.status === "pending"
|
|
33
|
+
? "Pending"
|
|
34
|
+
: d.status;
|
|
25
35
|
const expiry = d.expiresAt ? `Expires: ${d.expiresAt}` : "";
|
|
26
|
-
lines.push(` ${d.domain}`, ` Status: ${verified}`, ` Token: ${d.
|
|
36
|
+
lines.push(` ${d.domain}`, ` Status: ${verified}`, ` Token: ${d.verificationToken}`, expiry ? ` ${expiry}` : "", ` Added: ${d.createdAt}`, "");
|
|
27
37
|
}
|
|
28
38
|
return {
|
|
29
39
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-domains.js","sourceRoot":"","sources":["../../src/tools/list-domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAA0B;IAC/E,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"list-domains.js","sourceRoot":"","sources":["../../src/tools/list-domains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAA0B;IAC/E,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,oFAAoF;YACpF,wGAAwG;YACxG,0GAA0G;QAC5G,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;YAE3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EACF,uBAAuB;gCACvB,uEAAuE;yBAC1E;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;YAElD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU;oBAC3B,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS;wBACtB,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACf,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE5D,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,MAAM,EAAE,EACf,gBAAgB,QAAQ,EAAE,EAC1B,gBAAgB,CAAC,CAAC,iBAAiB,EAAE,EACrC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAC7B,gBAAgB,CAAC,CAAC,SAAS,EAAE,EAC7B,EAAE,CACH,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;qBAC/C;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,2BAA2B,OAAO,EAAE,EAAE,CAAC;gBAChF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export function registerListPentests(server, client) {
|
|
3
|
-
server.registerTool("
|
|
4
|
-
title: "List
|
|
5
|
-
description: "List all your
|
|
6
|
-
"
|
|
3
|
+
server.registerTool("turbopentest_list_pentests", {
|
|
4
|
+
title: "List Penetration Tests",
|
|
5
|
+
description: "List all your penetration tests with their status and finding counts, ordered newest first. " +
|
|
6
|
+
"Use this to find pentest IDs, check which scans are running, or review past results. " +
|
|
7
|
+
"Supports filtering by status and limiting result count. " +
|
|
8
|
+
"Use turbopentest_get_pentest with a specific ID for full details.",
|
|
9
|
+
annotations: {
|
|
10
|
+
readOnlyHint: true,
|
|
11
|
+
destructiveHint: false,
|
|
12
|
+
openWorldHint: false,
|
|
13
|
+
},
|
|
7
14
|
inputSchema: z.object({
|
|
8
15
|
limit: z
|
|
9
16
|
.number()
|
|
@@ -11,11 +18,15 @@ export function registerListPentests(server, client) {
|
|
|
11
18
|
.min(1)
|
|
12
19
|
.max(100)
|
|
13
20
|
.default(10)
|
|
14
|
-
.describe("Maximum number of
|
|
21
|
+
.describe("Maximum number of penetration tests to return, between 1 and 100. Defaults to 10."),
|
|
15
22
|
status: z
|
|
16
23
|
.enum(["queued", "scanning", "complete", "failed"])
|
|
17
24
|
.optional()
|
|
18
|
-
.describe("Filter by scan status"
|
|
25
|
+
.describe("Filter results by scan status. " +
|
|
26
|
+
"'queued': waiting to start. " +
|
|
27
|
+
"'scanning': currently running. " +
|
|
28
|
+
"'complete': finished successfully. " +
|
|
29
|
+
"'failed': terminated with an error."),
|
|
19
30
|
}),
|
|
20
31
|
}, async ({ limit, status }) => {
|
|
21
32
|
try {
|
|
@@ -31,17 +42,14 @@ export function registerListPentests(server, client) {
|
|
|
31
42
|
type: "text",
|
|
32
43
|
text: status
|
|
33
44
|
? `No pentests found with status "${status}".`
|
|
34
|
-
: "No pentests found. Use
|
|
45
|
+
: "No pentests found. Use turbopentest_start_pentest to launch one.",
|
|
35
46
|
},
|
|
36
47
|
],
|
|
37
48
|
};
|
|
38
49
|
}
|
|
39
50
|
const lines = [`Pentests (showing ${scans.length})`, ""];
|
|
40
51
|
for (const scan of scans) {
|
|
41
|
-
const severityCounts = {};
|
|
42
|
-
for (const f of scan.findings ?? []) {
|
|
43
|
-
severityCounts[f.severity] = (severityCounts[f.severity] || 0) + 1;
|
|
44
|
-
}
|
|
52
|
+
const severityCounts = scan.severityCounts ?? {};
|
|
45
53
|
const findingSummary = Object.entries(severityCounts)
|
|
46
54
|
.map(([sev, count]) => `${count} ${sev}`)
|
|
47
55
|
.join(", ");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-pentests.js","sourceRoot":"","sources":["../../src/tools/list-pentests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAA0B;IAChF,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"list-pentests.js","sourceRoot":"","sources":["../../src/tools/list-pentests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,36 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export function registerStartPentest(server, client) {
|
|
3
|
-
server.registerTool("
|
|
4
|
-
title: "Start
|
|
3
|
+
server.registerTool("turbopentest_start_pentest", {
|
|
4
|
+
title: "Start Penetration Test",
|
|
5
5
|
description: "Launch an AI-powered penetration test against a target URL. " +
|
|
6
|
-
"The domain must be verified first
|
|
7
|
-
"Requires an available credit matching the selected tier."
|
|
6
|
+
"The target domain must be verified first — use turbopentest_list_domains to check. " +
|
|
7
|
+
"Requires an available credit matching the selected tier — use turbopentest_get_credits to check balance. " +
|
|
8
|
+
"Returns a pentest ID that can be used with turbopentest_get_pentest to monitor progress.",
|
|
9
|
+
annotations: {
|
|
10
|
+
readOnlyHint: false,
|
|
11
|
+
destructiveHint: false,
|
|
12
|
+
openWorldHint: true,
|
|
13
|
+
},
|
|
8
14
|
inputSchema: z.object({
|
|
9
|
-
target_url: z
|
|
15
|
+
target_url: z
|
|
16
|
+
.string()
|
|
17
|
+
.url()
|
|
18
|
+
.describe("The full URL of the target to scan, including protocol (e.g. 'https://example.com'). " +
|
|
19
|
+
"The domain must be verified in your TurboPentest account before scanning."),
|
|
10
20
|
repo_url: z
|
|
11
21
|
.string()
|
|
12
22
|
.url()
|
|
13
23
|
.optional()
|
|
14
|
-
.describe("GitHub repository URL
|
|
24
|
+
.describe("Optional GitHub repository URL (e.g. 'https://github.com/org/repo') to enable white-box scanning. " +
|
|
25
|
+
"When provided, the scan includes SAST (static analysis), secret detection, and SCA (dependency audit) in addition to black-box testing."),
|
|
15
26
|
tier: z
|
|
16
27
|
.enum(["recon", "standard", "deep", "blitz"])
|
|
17
28
|
.default("standard")
|
|
18
|
-
.describe("Scan tier
|
|
29
|
+
.describe("Scan tier that determines scope and depth. " +
|
|
30
|
+
"'recon': 1 agent, ~30 min — quick surface-level reconnaissance. " +
|
|
31
|
+
"'standard': 4 agents, ~1 hr — balanced coverage for most targets (default). " +
|
|
32
|
+
"'deep': 10 agents, ~2 hrs — thorough testing for production applications. " +
|
|
33
|
+
"'blitz': 20 agents, ~4 hrs — maximum coverage for critical assets."),
|
|
19
34
|
}),
|
|
20
35
|
}, async ({ target_url, repo_url, tier }) => {
|
|
21
36
|
try {
|
|
@@ -32,7 +47,7 @@ export function registerStartPentest(server, client) {
|
|
|
32
47
|
"",
|
|
33
48
|
...(multi.scans ?? []).map((s) => ` - ${s.targetUrl} (ID: ${s.id})`),
|
|
34
49
|
"",
|
|
35
|
-
"Use
|
|
50
|
+
"Use turbopentest_get_pentest with each scan ID to check status.",
|
|
36
51
|
];
|
|
37
52
|
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
38
53
|
}
|
|
@@ -55,7 +70,7 @@ export function registerStartPentest(server, client) {
|
|
|
55
70
|
` Duration: ${info.duration}`,
|
|
56
71
|
scan.repoUrl ? ` Repo: ${scan.repoUrl}` : null,
|
|
57
72
|
"",
|
|
58
|
-
`Use
|
|
73
|
+
`Use turbopentest_get_pentest("${scan.id}") to check progress.`,
|
|
59
74
|
];
|
|
60
75
|
return {
|
|
61
76
|
content: [{ type: "text", text: lines.filter(Boolean).join("\n") }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-pentest.js","sourceRoot":"","sources":["../../src/tools/start-pentest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAA0B;IAChF,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"start-pentest.js","sourceRoot":"","sources":["../../src/tools/start-pentest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export function registerVerifyAttestation(server, client) {
|
|
3
|
-
server.registerTool("
|
|
4
|
-
title: "Verify Attestation",
|
|
5
|
-
description: "Verify a blockchain-anchored
|
|
6
|
-
"
|
|
7
|
-
"
|
|
3
|
+
server.registerTool("turbopentest_verify_attestation", {
|
|
4
|
+
title: "Verify Pentest Attestation",
|
|
5
|
+
description: "Verify a blockchain-anchored penetration test attestation by its SHA-256 hash. " +
|
|
6
|
+
"Returns scan metadata (tier, agents, duration, risk score, finding summary) " +
|
|
7
|
+
"and blockchain proof (chain ID, transaction hash, block number, merkle root) if anchored. " +
|
|
8
|
+
"This is a public endpoint — no API key is required. " +
|
|
9
|
+
"Use this to independently confirm that a pentest was performed and its results are tamper-proof.",
|
|
10
|
+
annotations: {
|
|
11
|
+
readOnlyHint: true,
|
|
12
|
+
destructiveHint: false,
|
|
13
|
+
openWorldHint: true,
|
|
14
|
+
},
|
|
8
15
|
inputSchema: z.object({
|
|
9
|
-
hash: z
|
|
16
|
+
hash: z
|
|
17
|
+
.string()
|
|
18
|
+
.describe("The SHA-256 attestation hash to verify. " +
|
|
19
|
+
"This hash is included in completed pentest reports and can be shared publicly for third-party verification."),
|
|
10
20
|
}),
|
|
11
21
|
}, async ({ hash }) => {
|
|
12
22
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-attestation.js","sourceRoot":"","sources":["../../src/tools/verify-attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAA0B;IACrF,MAAM,CAAC,YAAY,CACjB,
|
|
1
|
+
{"version":3,"file":"verify-attestation.js","sourceRoot":"","sources":["../../src/tools/verify-attestation.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -65,10 +65,7 @@ export interface ScanSummary {
|
|
|
65
65
|
startedAt: string | null;
|
|
66
66
|
completedAt: string | null;
|
|
67
67
|
tier?: string | null;
|
|
68
|
-
|
|
69
|
-
severity: string;
|
|
70
|
-
fingerprint: string | null;
|
|
71
|
-
}[];
|
|
68
|
+
severityCounts?: Record<string, number>;
|
|
72
69
|
toolResults: {
|
|
73
70
|
toolName: string;
|
|
74
71
|
status: string;
|
|
@@ -122,10 +119,15 @@ export interface Attestation {
|
|
|
122
119
|
export interface Domain {
|
|
123
120
|
id: string;
|
|
124
121
|
domain: string;
|
|
125
|
-
|
|
122
|
+
verificationToken: string;
|
|
126
123
|
verifiedAt: string | null;
|
|
127
124
|
expiresAt: string | null;
|
|
125
|
+
status: string;
|
|
128
126
|
createdAt: string;
|
|
127
|
+
targets?: {
|
|
128
|
+
id: string;
|
|
129
|
+
fqdn: string;
|
|
130
|
+
}[];
|
|
129
131
|
}
|
|
130
132
|
export interface MultiDomainResponse {
|
|
131
133
|
groupId: string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turbopentest/mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "MCP server for TurboPentest
|
|
3
|
+
"version": "0.1.7",
|
|
4
|
+
"description": "MCP server for TurboPentest — AI-powered penetration testing from your coding assistant",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|