mcp4openapi 0.2.8 → 0.3.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 +143 -63
- package/dist/scripts/validate-profile.js +3 -3
- package/dist/scripts/validate-profile.js.map +1 -1
- package/dist/src/{oauth-provider.d.ts → auth/oauth-provider.d.ts} +7 -2
- package/dist/src/auth/oauth-provider.d.ts.map +1 -0
- package/dist/src/{oauth-provider.js → auth/oauth-provider.js} +30 -2
- package/dist/src/auth/oauth-provider.js.map +1 -0
- package/dist/src/core/cli-config.d.ts +9 -0
- package/dist/src/core/cli-config.d.ts.map +1 -0
- package/dist/src/core/cli-config.js +124 -0
- package/dist/src/core/cli-config.js.map +1 -0
- package/dist/src/{constants.d.ts → core/constants.d.ts} +1 -0
- package/dist/src/core/constants.d.ts.map +1 -0
- package/dist/src/{constants.js → core/constants.js} +1 -0
- package/dist/src/core/constants.js.map +1 -0
- package/dist/src/{errors.d.ts → core/errors.d.ts} +6 -0
- package/dist/src/core/errors.d.ts.map +1 -0
- package/dist/src/{errors.js → core/errors.js} +15 -6
- package/dist/src/core/errors.js.map +1 -0
- package/dist/src/core/filtering.d.ts +19 -0
- package/dist/src/core/filtering.d.ts.map +1 -0
- package/dist/src/core/filtering.js +292 -0
- package/dist/src/core/filtering.js.map +1 -0
- package/dist/src/core/index.d.ts +26 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +275 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/lib.d.ts +8 -0
- package/dist/src/core/lib.d.ts.map +1 -0
- package/dist/src/core/lib.js +7 -0
- package/dist/src/core/lib.js.map +1 -0
- package/dist/src/{logger.d.ts → core/logger.d.ts} +6 -1
- package/dist/src/core/logger.d.ts.map +1 -0
- package/dist/src/{logger.js → core/logger.js} +30 -2
- package/dist/src/core/logger.js.map +1 -0
- package/dist/src/{metrics.d.ts → core/metrics.d.ts} +11 -0
- package/dist/src/core/metrics.d.ts.map +1 -0
- package/dist/src/{metrics.js → core/metrics.js} +61 -0
- package/dist/src/core/metrics.js.map +1 -0
- package/dist/src/core/naming-warnings.d.ts.map +1 -0
- package/dist/src/core/naming-warnings.js.map +1 -0
- package/dist/src/core/naming.d.ts.map +1 -0
- package/dist/src/core/naming.js.map +1 -0
- package/dist/src/generated-schemas.d.ts +245 -79
- package/dist/src/generated-schemas.d.ts.map +1 -1
- package/dist/src/generated-schemas.js +14 -2
- package/dist/src/generated-schemas.js.map +1 -1
- package/dist/src/index.d.ts +1 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -170
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts +1 -7
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +1 -6
- package/dist/src/lib.js.map +1 -1
- package/dist/src/mcp/mcp-server-manager.d.ts +20 -0
- package/dist/src/mcp/mcp-server-manager.d.ts.map +1 -0
- package/dist/src/mcp/mcp-server-manager.js +38 -0
- package/dist/src/mcp/mcp-server-manager.js.map +1 -0
- package/dist/src/{mcp-server.d.ts → mcp/mcp-server.d.ts} +31 -1
- package/dist/src/mcp/mcp-server.d.ts.map +1 -0
- package/dist/src/{mcp-server.js → mcp/mcp-server.js} +547 -146
- package/dist/src/mcp/mcp-server.js.map +1 -0
- package/dist/src/{openapi-parser.d.ts → openapi/openapi-parser.d.ts} +1 -1
- package/dist/src/openapi/openapi-parser.d.ts.map +1 -0
- package/dist/src/{openapi-parser.js → openapi/openapi-parser.js} +2 -2
- package/dist/src/openapi/openapi-parser.js.map +1 -0
- package/dist/src/{profile-loader.d.ts → profile/profile-loader.d.ts} +3 -2
- package/dist/src/profile/profile-loader.d.ts.map +1 -0
- package/dist/src/{profile-loader.js → profile/profile-loader.js} +17 -6
- package/dist/src/profile/profile-loader.js.map +1 -0
- package/dist/src/profile/profile-registry.d.ts +18 -0
- package/dist/src/profile/profile-registry.d.ts.map +1 -0
- package/dist/src/profile/profile-registry.js +26 -0
- package/dist/src/profile/profile-registry.js.map +1 -0
- package/dist/src/profile/profile-resolver.d.ts +25 -0
- package/dist/src/profile/profile-resolver.d.ts.map +1 -0
- package/dist/src/profile/profile-resolver.js +204 -0
- package/dist/src/profile/profile-resolver.js.map +1 -0
- package/dist/src/profile/startup-profile.d.ts +17 -0
- package/dist/src/profile/startup-profile.d.ts.map +1 -0
- package/dist/src/profile/startup-profile.js +30 -0
- package/dist/src/profile/startup-profile.js.map +1 -0
- package/dist/src/profile/startup-validation.d.ts +11 -0
- package/dist/src/profile/startup-validation.d.ts.map +1 -0
- package/dist/src/profile/startup-validation.js +21 -0
- package/dist/src/profile/startup-validation.js.map +1 -0
- package/dist/src/testing/dynamic-mock-server.d.ts +24 -0
- package/dist/src/testing/dynamic-mock-server.d.ts.map +1 -0
- package/dist/src/testing/dynamic-mock-server.js +138 -0
- package/dist/src/testing/dynamic-mock-server.js.map +1 -0
- package/dist/src/testing/request-assertions.d.ts +5 -0
- package/dist/src/testing/request-assertions.d.ts.map +1 -0
- package/dist/src/testing/request-assertions.js +165 -0
- package/dist/src/testing/request-assertions.js.map +1 -0
- package/dist/src/testing/template-utils.d.ts +10 -0
- package/dist/src/testing/template-utils.d.ts.map +1 -0
- package/dist/src/testing/template-utils.js +72 -0
- package/dist/src/testing/template-utils.js.map +1 -0
- package/dist/src/testing/test-http-utils.d.ts +1 -1
- package/dist/src/testing/test-http-utils.d.ts.map +1 -1
- package/dist/src/testing/test-http-utils.js +1 -1
- package/dist/src/testing/test-http-utils.js.map +1 -1
- package/dist/src/testing/test-loader.d.ts +6 -0
- package/dist/src/testing/test-loader.d.ts.map +1 -0
- package/dist/src/testing/test-loader.js +212 -0
- package/dist/src/testing/test-loader.js.map +1 -0
- package/dist/src/testing/test-schema.d.ts +1270 -0
- package/dist/src/testing/test-schema.d.ts.map +1 -0
- package/dist/src/testing/test-schema.js +76 -0
- package/dist/src/testing/test-schema.js.map +1 -0
- package/dist/src/tool-filter/compat.d.ts +49 -0
- package/dist/src/tool-filter/compat.d.ts.map +1 -0
- package/dist/src/tool-filter/compat.js +72 -0
- package/dist/src/tool-filter/compat.js.map +1 -0
- package/dist/src/tool-filter/config/env-config-parser.d.ts +38 -0
- package/dist/src/tool-filter/config/env-config-parser.d.ts.map +1 -0
- package/dist/src/tool-filter/config/env-config-parser.js +103 -0
- package/dist/src/tool-filter/config/env-config-parser.js.map +1 -0
- package/dist/src/tool-filter/config/header-config-parser.d.ts +37 -0
- package/dist/src/tool-filter/config/header-config-parser.d.ts.map +1 -0
- package/dist/src/tool-filter/config/header-config-parser.js +118 -0
- package/dist/src/tool-filter/config/header-config-parser.js.map +1 -0
- package/dist/src/tool-filter/errors.d.ts +18 -0
- package/dist/src/tool-filter/errors.d.ts.map +1 -0
- package/dist/src/tool-filter/errors.js +21 -0
- package/dist/src/tool-filter/errors.js.map +1 -0
- package/dist/src/tool-filter/filter/filter-engine.d.ts +45 -0
- package/dist/src/tool-filter/filter/filter-engine.d.ts.map +1 -0
- package/dist/src/tool-filter/filter/filter-engine.js +94 -0
- package/dist/src/tool-filter/filter/filter-engine.js.map +1 -0
- package/dist/src/tool-filter/filter/filter-rules.d.ts +44 -0
- package/dist/src/tool-filter/filter/filter-rules.d.ts.map +1 -0
- package/dist/src/tool-filter/filter/filter-rules.js +72 -0
- package/dist/src/tool-filter/filter/filter-rules.js.map +1 -0
- package/dist/src/tool-filter/filter/global-tool-filter.d.ts +40 -0
- package/dist/src/tool-filter/filter/global-tool-filter.d.ts.map +1 -0
- package/dist/src/tool-filter/filter/global-tool-filter.js +92 -0
- package/dist/src/tool-filter/filter/global-tool-filter.js.map +1 -0
- package/dist/src/tool-filter/filter/session-tool-filter.d.ts +29 -0
- package/dist/src/tool-filter/filter/session-tool-filter.d.ts.map +1 -0
- package/dist/src/tool-filter/filter/session-tool-filter.js +69 -0
- package/dist/src/tool-filter/filter/session-tool-filter.js.map +1 -0
- package/dist/src/tool-filter/index.d.ts +25 -0
- package/dist/src/tool-filter/index.d.ts.map +1 -0
- package/dist/src/tool-filter/index.js +30 -0
- package/dist/src/tool-filter/index.js.map +1 -0
- package/dist/src/tool-filter/integration/tool-filter-service.d.ts +44 -0
- package/dist/src/tool-filter/integration/tool-filter-service.d.ts.map +1 -0
- package/dist/src/tool-filter/integration/tool-filter-service.js +68 -0
- package/dist/src/tool-filter/integration/tool-filter-service.js.map +1 -0
- package/dist/src/tool-filter/operation/operation-classifier.d.ts +20 -0
- package/dist/src/tool-filter/operation/operation-classifier.d.ts.map +1 -0
- package/dist/src/tool-filter/operation/operation-classifier.js +26 -0
- package/dist/src/tool-filter/operation/operation-classifier.js.map +1 -0
- package/dist/src/tool-filter/operation/operation-detector.d.ts +30 -0
- package/dist/src/tool-filter/operation/operation-detector.d.ts.map +1 -0
- package/dist/src/tool-filter/operation/operation-detector.js +96 -0
- package/dist/src/tool-filter/operation/operation-detector.js.map +1 -0
- package/dist/src/tool-filter/operation/operation-resolver.d.ts +22 -0
- package/dist/src/tool-filter/operation/operation-resolver.d.ts.map +1 -0
- package/dist/src/tool-filter/operation/operation-resolver.js +32 -0
- package/dist/src/tool-filter/operation/operation-resolver.js.map +1 -0
- package/dist/src/tool-filter/regex/regex-compiler.d.ts +22 -0
- package/dist/src/tool-filter/regex/regex-compiler.d.ts.map +1 -0
- package/dist/src/tool-filter/regex/regex-compiler.js +56 -0
- package/dist/src/tool-filter/regex/regex-compiler.js.map +1 -0
- package/dist/src/tool-filter/regex/regex-validator.d.ts +24 -0
- package/dist/src/tool-filter/regex/regex-validator.d.ts.map +1 -0
- package/dist/src/tool-filter/regex/regex-validator.js +58 -0
- package/dist/src/tool-filter/regex/regex-validator.js.map +1 -0
- package/dist/src/tool-filter/types.d.ts +92 -0
- package/dist/src/tool-filter/types.d.ts.map +1 -0
- package/dist/src/tool-filter/types.js +5 -0
- package/dist/src/tool-filter/types.js.map +1 -0
- package/dist/src/tool-filter/utils.d.ts +11 -0
- package/dist/src/tool-filter/utils.d.ts.map +1 -0
- package/dist/src/tool-filter/utils.js +13 -0
- package/dist/src/tool-filter/utils.js.map +1 -0
- package/dist/src/{composite-executor.d.ts → tooling/composite-executor.d.ts} +3 -3
- package/dist/src/tooling/composite-executor.d.ts.map +1 -0
- package/dist/src/{composite-executor.js → tooling/composite-executor.js} +1 -1
- package/dist/src/tooling/composite-executor.js.map +1 -0
- package/dist/src/{dag-executor.d.ts → tooling/dag-executor.d.ts} +1 -1
- package/dist/src/tooling/dag-executor.d.ts.map +1 -0
- package/dist/src/tooling/dag-executor.js.map +1 -0
- package/dist/src/{proxy-executor.d.ts → tooling/proxy-executor.d.ts} +2 -2
- package/dist/src/tooling/proxy-executor.d.ts.map +1 -0
- package/dist/src/{proxy-executor.js → tooling/proxy-executor.js} +8 -1
- package/dist/src/tooling/proxy-executor.js.map +1 -0
- package/dist/src/{tool-generator.d.ts → tooling/tool-generator.d.ts} +4 -3
- package/dist/src/tooling/tool-generator.d.ts.map +1 -0
- package/dist/src/{tool-generator.js → tooling/tool-generator.js} +23 -7
- package/dist/src/tooling/tool-generator.js.map +1 -0
- package/dist/src/{http-client-factory.d.ts → transport/http-client-factory.d.ts} +4 -1
- package/dist/src/transport/http-client-factory.d.ts.map +1 -0
- package/dist/src/{http-client-factory.js → transport/http-client-factory.js} +13 -3
- package/dist/src/transport/http-client-factory.js.map +1 -0
- package/dist/src/transport/http-transport-config.d.ts +6 -0
- package/dist/src/transport/http-transport-config.d.ts.map +1 -0
- package/dist/src/transport/http-transport-config.js +62 -0
- package/dist/src/transport/http-transport-config.js.map +1 -0
- package/dist/src/{http-transport.d.ts → transport/http-transport.d.ts} +72 -14
- package/dist/src/transport/http-transport.d.ts.map +1 -0
- package/dist/src/{http-transport.js → transport/http-transport.js} +1166 -493
- package/dist/src/transport/http-transport.js.map +1 -0
- package/dist/src/{interceptors.d.ts → transport/interceptors.d.ts} +6 -2
- package/dist/src/transport/interceptors.d.ts.map +1 -0
- package/dist/src/{interceptors.js → transport/interceptors.js} +72 -41
- package/dist/src/transport/interceptors.js.map +1 -0
- package/dist/src/types/http-transport.d.ts +25 -0
- package/dist/src/types/http-transport.d.ts.map +1 -1
- package/dist/src/types/profile.d.ts +13 -1
- package/dist/src/types/profile.d.ts.map +1 -1
- package/dist/src/validation/argument-normalizer.d.ts +6 -0
- package/dist/src/validation/argument-normalizer.d.ts.map +1 -0
- package/dist/src/validation/argument-normalizer.js +70 -0
- package/dist/src/validation/argument-normalizer.js.map +1 -0
- package/dist/src/validation/jsonrpc-validator.d.ts.map +1 -0
- package/dist/src/validation/jsonrpc-validator.js.map +1 -0
- package/dist/src/{schema-validator.d.ts → validation/schema-validator.d.ts} +2 -2
- package/dist/src/validation/schema-validator.d.ts.map +1 -0
- package/dist/src/validation/schema-validator.js.map +1 -0
- package/dist/src/validation/validation-utils.d.ts.map +1 -0
- package/dist/src/validation/validation-utils.js.map +1 -0
- package/package.json +9 -3
- package/profile-schema.json +63 -3
- package/profiles/gitlab/developer-profile-oauth.json +1520 -0
- package/profiles/gitlab/developer-profile-oauth.test.json +3432 -0
- package/profiles/gitlab/openapi.yaml +6891 -0
- package/profiles/n8n/openapi.yaml +2441 -0
- package/profiles/n8n/profile-optimized.json +965 -0
- package/profiles/n8n/profile-optimized.test.json +1078 -0
- package/profiles/n8n/profile.json +1033 -0
- package/profiles/n8n/profile.test.json +983 -0
- package/profiles/n8n-nodes/openapi.yaml +24 -0
- package/profiles/n8n-nodes/profile-nodes.json +44 -0
- package/profiles/n8n-nodes/profile-nodes.test.json +91 -0
- package/profiles/semgrep/openapi.yaml +4706 -0
- package/profiles/semgrep/profile.json +692 -0
- package/profiles/semgrep/profile.test.json +471 -0
- package/profiles/youtrack/openapi.json +16976 -0
- package/profiles/youtrack/profile.json +608 -0
- package/profiles/youtrack/profile.test.json +1926 -0
- package/dist/src/composite-executor.d.ts.map +0 -1
- package/dist/src/composite-executor.js.map +0 -1
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js.map +0 -1
- package/dist/src/dag-executor.d.ts.map +0 -1
- package/dist/src/dag-executor.js.map +0 -1
- package/dist/src/errors.d.ts.map +0 -1
- package/dist/src/errors.js.map +0 -1
- package/dist/src/http-client-factory.d.ts.map +0 -1
- package/dist/src/http-client-factory.js.map +0 -1
- package/dist/src/http-transport.d.ts.map +0 -1
- package/dist/src/http-transport.js.map +0 -1
- package/dist/src/interceptors.d.ts.map +0 -1
- package/dist/src/interceptors.js.map +0 -1
- package/dist/src/jsonrpc-validator.d.ts.map +0 -1
- package/dist/src/jsonrpc-validator.js.map +0 -1
- package/dist/src/logger.d.ts.map +0 -1
- package/dist/src/logger.js.map +0 -1
- package/dist/src/mcp-server.d.ts.map +0 -1
- package/dist/src/mcp-server.js.map +0 -1
- package/dist/src/metrics.d.ts.map +0 -1
- package/dist/src/metrics.js.map +0 -1
- package/dist/src/naming-warnings.d.ts.map +0 -1
- package/dist/src/naming-warnings.js.map +0 -1
- package/dist/src/naming.d.ts.map +0 -1
- package/dist/src/naming.js.map +0 -1
- package/dist/src/oauth-provider.d.ts.map +0 -1
- package/dist/src/oauth-provider.js.map +0 -1
- package/dist/src/openapi-parser.d.ts.map +0 -1
- package/dist/src/openapi-parser.js.map +0 -1
- package/dist/src/profile-loader.d.ts.map +0 -1
- package/dist/src/profile-loader.js.map +0 -1
- package/dist/src/proxy-executor.d.ts.map +0 -1
- package/dist/src/proxy-executor.js.map +0 -1
- package/dist/src/schema-validator.d.ts.map +0 -1
- package/dist/src/schema-validator.js.map +0 -1
- package/dist/src/testing/fixtures.d.ts +0 -684
- package/dist/src/testing/fixtures.d.ts.map +0 -1
- package/dist/src/testing/fixtures.js +0 -528
- package/dist/src/testing/fixtures.js.map +0 -1
- package/dist/src/testing/mock-gitlab-server.d.ts +0 -43
- package/dist/src/testing/mock-gitlab-server.d.ts.map +0 -1
- package/dist/src/testing/mock-gitlab-server.js +0 -1026
- package/dist/src/testing/mock-gitlab-server.js.map +0 -1
- package/dist/src/testing/mock-semgrep-server.d.ts +0 -32
- package/dist/src/testing/mock-semgrep-server.d.ts.map +0 -1
- package/dist/src/testing/mock-semgrep-server.js +0 -213
- package/dist/src/testing/mock-semgrep-server.js.map +0 -1
- package/dist/src/testing/mock-youtrack-server.d.ts +0 -11
- package/dist/src/testing/mock-youtrack-server.d.ts.map +0 -1
- package/dist/src/testing/mock-youtrack-server.js +0 -152
- package/dist/src/testing/mock-youtrack-server.js.map +0 -1
- package/dist/src/tool-generator.d.ts.map +0 -1
- package/dist/src/tool-generator.js.map +0 -1
- package/dist/src/validation-utils.d.ts.map +0 -1
- package/dist/src/validation-utils.js.map +0 -1
- /package/dist/src/{naming-warnings.d.ts → core/naming-warnings.d.ts} +0 -0
- /package/dist/src/{naming-warnings.js → core/naming-warnings.js} +0 -0
- /package/dist/src/{naming.d.ts → core/naming.d.ts} +0 -0
- /package/dist/src/{naming.js → core/naming.js} +0 -0
- /package/dist/src/{dag-executor.js → tooling/dag-executor.js} +0 -0
- /package/dist/src/{jsonrpc-validator.d.ts → validation/jsonrpc-validator.d.ts} +0 -0
- /package/dist/src/{jsonrpc-validator.js → validation/jsonrpc-validator.js} +0 -0
- /package/dist/src/{schema-validator.js → validation/schema-validator.js} +0 -0
- /package/dist/src/{validation-utils.d.ts → validation/validation-utils.d.ts} +0 -0
- /package/dist/src/{validation-utils.js → validation/validation-utils.js} +0 -0
|
@@ -0,0 +1,692 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../profile-schema.json",
|
|
3
|
+
"profile_name": "semgrep",
|
|
4
|
+
"profile_id": "semgrep",
|
|
5
|
+
"profile_aliases": ["semgrep-default"],
|
|
6
|
+
"openapi_spec_path": "./openapi.yaml",
|
|
7
|
+
"description": "MCP tools for Semgrep security platform workflows. Reduces 20 API operations to 10 MCP tools.",
|
|
8
|
+
|
|
9
|
+
"parameter_aliases": {
|
|
10
|
+
"deploymentId": ["deployment_id"],
|
|
11
|
+
"deploymentSlug": ["deployment_slug"],
|
|
12
|
+
"projectName": ["project_name", "project"],
|
|
13
|
+
"repositoryId": ["repository_id", "repo_id"],
|
|
14
|
+
"policyId": ["policy_id"],
|
|
15
|
+
"scanId": ["scan_id"],
|
|
16
|
+
"taskToken": ["task_token"],
|
|
17
|
+
"externalTicketId": ["external_ticket_id", "ticket_id"]
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
"tools": [
|
|
21
|
+
{
|
|
22
|
+
"name": "get_deployment",
|
|
23
|
+
"description": "Get deployment information including both numeric ID and slug. Call this first to obtain identifiers needed for other operations. Returns deployment slug (string, for all operations) and ID (numeric, for reference).",
|
|
24
|
+
"composite": true,
|
|
25
|
+
"steps": [
|
|
26
|
+
{
|
|
27
|
+
"call": "GET /api/v1/deployments",
|
|
28
|
+
"store_as": "deployment"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"response_fields": {
|
|
32
|
+
"deployment": ["id", "slug", "name", "findings"]
|
|
33
|
+
},
|
|
34
|
+
"parameters": {}
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
{
|
|
38
|
+
"name": "manage_projects",
|
|
39
|
+
"description": "Work with Semgrep projects (repositories). Actions: 'list' (all projects), 'get' (project details), 'update' (modify tags/branch/scan config), 'delete' (remove project and findings), 'add_tags', 'remove_tags', 'toggle_managed_scan' (enable/disable managed scans).",
|
|
40
|
+
"metadata_params": ["action", "deploymentSlug", "project_name"],
|
|
41
|
+
"operations": {
|
|
42
|
+
"list": "ProjectsService_ListProjects",
|
|
43
|
+
"get": "ProjectsService_GetProject",
|
|
44
|
+
"update": "ProjectsService_UpdateProject",
|
|
45
|
+
"delete": "ProjectsService_DeleteProject",
|
|
46
|
+
"add_tags": "ProjectsService_AddProjectTags",
|
|
47
|
+
"remove_tags": "ProjectsService_DeleteProjectTags",
|
|
48
|
+
"toggle_managed_scan": "ProjectsService_ToggleProjectManagedScan"
|
|
49
|
+
},
|
|
50
|
+
"response_fields": {
|
|
51
|
+
"list": ["projects"],
|
|
52
|
+
"get": ["id", "name", "url", "default_branch", "primary_branch", "tags", "latest_scan_at", "managed_scan_config"],
|
|
53
|
+
"update": ["id", "name", "tags", "primary_branch", "managed_scan_config"],
|
|
54
|
+
"add_tags": ["id", "name", "tags"],
|
|
55
|
+
"remove_tags": ["id", "name", "tags"],
|
|
56
|
+
"toggle_managed_scan": ["id", "name", "managed_scan_config"]
|
|
57
|
+
},
|
|
58
|
+
"parameters": {
|
|
59
|
+
"action": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"enum": ["list", "get", "update", "delete", "add_tags", "remove_tags", "toggle_managed_scan"],
|
|
62
|
+
"description": "Action to perform",
|
|
63
|
+
"required": true
|
|
64
|
+
},
|
|
65
|
+
"deploymentSlug": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"description": "Deployment slug (e.g., 'your-deployment'). Get from get_deployment tool.",
|
|
68
|
+
"required": true,
|
|
69
|
+
"example": "your-deployment"
|
|
70
|
+
},
|
|
71
|
+
"project_name": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"description": "Project name (e.g., 'organization/repo')",
|
|
74
|
+
"required_for": ["get", "update", "delete", "add_tags", "remove_tags", "toggle_managed_scan"],
|
|
75
|
+
"example": "organization/project"
|
|
76
|
+
},
|
|
77
|
+
"tags": {
|
|
78
|
+
"type": "array",
|
|
79
|
+
"items": { "type": "string" },
|
|
80
|
+
"description": "Tags to add or remove",
|
|
81
|
+
"required_for": ["add_tags", "remove_tags"]
|
|
82
|
+
},
|
|
83
|
+
"primary_branch": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"description": "Primary branch (e.g., 'refs/heads/develop'). Use 'None' to follow default branch.",
|
|
86
|
+
"example": "refs/heads/develop"
|
|
87
|
+
},
|
|
88
|
+
"managed_scan_config.diff_scan.enabled": {
|
|
89
|
+
"type": "boolean",
|
|
90
|
+
"description": "Enable diff-aware scans (for update action)"
|
|
91
|
+
},
|
|
92
|
+
"managed_scan_config.full_scan.enabled": {
|
|
93
|
+
"type": "boolean",
|
|
94
|
+
"description": "Enable weekly full scans (for update action)"
|
|
95
|
+
},
|
|
96
|
+
"diff_scan.enabled": {
|
|
97
|
+
"type": "boolean",
|
|
98
|
+
"description": "Enable diff-aware scans (for toggle_managed_scan action)"
|
|
99
|
+
},
|
|
100
|
+
"full_scan.enabled": {
|
|
101
|
+
"type": "boolean",
|
|
102
|
+
"description": "Enable weekly full scans (for toggle_managed_scan action)"
|
|
103
|
+
},
|
|
104
|
+
"page": {
|
|
105
|
+
"type": "integer",
|
|
106
|
+
"description": "Page number (0-indexed)",
|
|
107
|
+
"default": 0
|
|
108
|
+
},
|
|
109
|
+
"page_size": {
|
|
110
|
+
"type": "integer",
|
|
111
|
+
"description": "Items per page (default 100)",
|
|
112
|
+
"default": 100
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
{
|
|
118
|
+
"name": "manage_findings",
|
|
119
|
+
"description": "List code (SAST) or supply chain (SCA) security findings. Filter by severity, status, repository, rules, confidence, autotriage verdict, and more. Returns paginated results.",
|
|
120
|
+
"metadata_params": ["deploymentSlug"],
|
|
121
|
+
"operations": {
|
|
122
|
+
"list": "FindingsService_ListFindings"
|
|
123
|
+
},
|
|
124
|
+
"response_fields": {
|
|
125
|
+
"list": ["id", "severity", "status", "state", "triage_state", "rule", "repository", "location", "created_at", "relevant_since", "assistant"]
|
|
126
|
+
},
|
|
127
|
+
"parameters": {
|
|
128
|
+
"deploymentSlug": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"description": "Deployment slug. Get from get_deployment tool.",
|
|
131
|
+
"required": true,
|
|
132
|
+
"example": "your-deployment"
|
|
133
|
+
},
|
|
134
|
+
"issue_type": {
|
|
135
|
+
"type": "string",
|
|
136
|
+
"enum": ["sast", "sca"],
|
|
137
|
+
"description": "Type of findings: 'sast' (Code) or 'sca' (Supply Chain)",
|
|
138
|
+
"default": "sast"
|
|
139
|
+
},
|
|
140
|
+
"status": {
|
|
141
|
+
"type": "string",
|
|
142
|
+
"enum": ["open", "fixed", "ignored", "reviewing", "fixing"],
|
|
143
|
+
"description": "Filter by finding status"
|
|
144
|
+
},
|
|
145
|
+
"severities": {
|
|
146
|
+
"type": "array",
|
|
147
|
+
"items": { "type": "string", "enum": ["low", "medium", "high", "critical"] },
|
|
148
|
+
"description": "Filter by severities"
|
|
149
|
+
},
|
|
150
|
+
"repos": {
|
|
151
|
+
"type": "array",
|
|
152
|
+
"items": { "type": "string" },
|
|
153
|
+
"description": "Filter by repository names (e.g., ['myorg/repo1'])"
|
|
154
|
+
},
|
|
155
|
+
"repository_ids": {
|
|
156
|
+
"type": "array",
|
|
157
|
+
"items": { "type": "integer" },
|
|
158
|
+
"description": "Filter by repository IDs"
|
|
159
|
+
},
|
|
160
|
+
"rules": {
|
|
161
|
+
"type": "array",
|
|
162
|
+
"items": { "type": "string" },
|
|
163
|
+
"description": "Filter by rule names"
|
|
164
|
+
},
|
|
165
|
+
"categories": {
|
|
166
|
+
"type": "array",
|
|
167
|
+
"items": { "type": "string" },
|
|
168
|
+
"description": "Filter by categories (security, correctness, etc.)"
|
|
169
|
+
},
|
|
170
|
+
"confidence": {
|
|
171
|
+
"type": "string",
|
|
172
|
+
"enum": ["low", "medium", "high"],
|
|
173
|
+
"description": "Filter by confidence level"
|
|
174
|
+
},
|
|
175
|
+
"autotriage_verdict": {
|
|
176
|
+
"type": "string",
|
|
177
|
+
"enum": ["true_positive", "false_positive"],
|
|
178
|
+
"description": "Filter by Semgrep Assistant autotriage verdict"
|
|
179
|
+
},
|
|
180
|
+
"component_tags": {
|
|
181
|
+
"type": "array",
|
|
182
|
+
"items": { "type": "string" },
|
|
183
|
+
"description": "Filter by component tags (e.g., 'user authentication', 'user data')"
|
|
184
|
+
},
|
|
185
|
+
"triage_reasons": {
|
|
186
|
+
"type": "array",
|
|
187
|
+
"items": { "type": "string", "enum": ["acceptable_risk", "false_positive", "no_time", "no_triage_reason"] },
|
|
188
|
+
"description": "Filter by triage reasons (when status=ignored)"
|
|
189
|
+
},
|
|
190
|
+
"policies": {
|
|
191
|
+
"type": "array",
|
|
192
|
+
"items": { "type": "string" },
|
|
193
|
+
"description": "Filter by policy modes: 'rule-board-audit' (Monitor), 'rule-board-pr-comments' (Comment), 'rule-board-block' (Block)"
|
|
194
|
+
},
|
|
195
|
+
"ref": {
|
|
196
|
+
"type": "string",
|
|
197
|
+
"description": "Filter by branch ref (e.g., 'refs/pull/1234/merge')"
|
|
198
|
+
},
|
|
199
|
+
"exposures": {
|
|
200
|
+
"type": "array",
|
|
201
|
+
"items": { "type": "string", "enum": ["reachable", "always_reachable", "conditionally_reachable", "unreachable", "unknown"] },
|
|
202
|
+
"description": "SCA only: filter by reachability"
|
|
203
|
+
},
|
|
204
|
+
"transitivities": {
|
|
205
|
+
"type": "array",
|
|
206
|
+
"items": { "type": "string", "enum": ["direct", "transitive", "unknown"] },
|
|
207
|
+
"description": "SCA only: filter by dependency transitivity"
|
|
208
|
+
},
|
|
209
|
+
"is_malicious": {
|
|
210
|
+
"type": "boolean",
|
|
211
|
+
"description": "SCA only: filter by malicious dependencies"
|
|
212
|
+
},
|
|
213
|
+
"since": {
|
|
214
|
+
"type": "number",
|
|
215
|
+
"description": "Epoch timestamp in seconds - return findings after this time"
|
|
216
|
+
},
|
|
217
|
+
"page": {
|
|
218
|
+
"type": "integer",
|
|
219
|
+
"description": "Page number (0-indexed)",
|
|
220
|
+
"default": 0
|
|
221
|
+
},
|
|
222
|
+
"page_size": {
|
|
223
|
+
"type": "integer",
|
|
224
|
+
"description": "Items per page (100-3000)",
|
|
225
|
+
"default": 100,
|
|
226
|
+
"minimum": 100,
|
|
227
|
+
"maximum": 3000
|
|
228
|
+
},
|
|
229
|
+
"dedup": {
|
|
230
|
+
"type": "boolean",
|
|
231
|
+
"description": "Deduplicate findings across branches. Set true to match UI counts.",
|
|
232
|
+
"default": false
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
|
|
237
|
+
{
|
|
238
|
+
"name": "manage_secrets",
|
|
239
|
+
"description": "List secrets findings detected by Semgrep. Filter by validation state, status, severity, and repository.",
|
|
240
|
+
"metadata_params": ["deploymentSlug"],
|
|
241
|
+
"operations": {
|
|
242
|
+
"list": "SecretsService_ListSecretsPath"
|
|
243
|
+
},
|
|
244
|
+
"parameters": {
|
|
245
|
+
"deployment_id": {
|
|
246
|
+
"type": "string",
|
|
247
|
+
"description": "Deployment ID (numeric). Required for API paths that use deploymentId.",
|
|
248
|
+
"required": true
|
|
249
|
+
},
|
|
250
|
+
"deploymentSlug": {
|
|
251
|
+
"type": "string",
|
|
252
|
+
"description": "Deployment slug (string). Get from get_deployment tool. Required for all operations.",
|
|
253
|
+
"required": true,
|
|
254
|
+
"example": "your-deployment"
|
|
255
|
+
},
|
|
256
|
+
"status": {
|
|
257
|
+
"type": "string",
|
|
258
|
+
"enum": ["FINDING_STATUS_UNSPECIFIED", "FINDING_STATUS_OPEN", "FINDING_STATUS_IGNORED", "FINDING_STATUS_FIXED", "FINDING_STATUS_REMOVED"],
|
|
259
|
+
"description": "Filter by status",
|
|
260
|
+
"default": "FINDING_STATUS_UNSPECIFIED"
|
|
261
|
+
},
|
|
262
|
+
"validationState": {
|
|
263
|
+
"type": "array",
|
|
264
|
+
"items": {
|
|
265
|
+
"type": "string",
|
|
266
|
+
"enum": ["VALIDATION_STATE_UNSPECIFIED", "VALIDATION_STATE_CONFIRMED_VALID", "VALIDATION_STATE_CONFIRMED_INVALID", "VALIDATION_STATE_VALIDATION_ERROR", "VALIDATION_STATE_NO_VALIDATOR"]
|
|
267
|
+
},
|
|
268
|
+
"description": "Filter by validation state"
|
|
269
|
+
},
|
|
270
|
+
"severity": {
|
|
271
|
+
"type": "array",
|
|
272
|
+
"items": { "type": "string", "enum": ["SEVERITY_UNSPECIFIED", "SEVERITY_HIGH", "SEVERITY_MEDIUM", "SEVERITY_LOW", "SEVERITY_CRITICAL"] },
|
|
273
|
+
"description": "Filter by severity"
|
|
274
|
+
},
|
|
275
|
+
"repo": {
|
|
276
|
+
"type": "array",
|
|
277
|
+
"items": { "type": "string" },
|
|
278
|
+
"description": "Filter by repositories"
|
|
279
|
+
},
|
|
280
|
+
"since": {
|
|
281
|
+
"type": "string",
|
|
282
|
+
"description": "Filter findings since this timestamp (ISO 8601)",
|
|
283
|
+
"format": "date-time"
|
|
284
|
+
},
|
|
285
|
+
"cursor": {
|
|
286
|
+
"type": "string",
|
|
287
|
+
"description": "Pagination cursor from previous response"
|
|
288
|
+
},
|
|
289
|
+
"limit": {
|
|
290
|
+
"type": "integer",
|
|
291
|
+
"description": "Page size"
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
|
|
296
|
+
{
|
|
297
|
+
"name": "manage_scans",
|
|
298
|
+
"description": "Search and get details for Semgrep scans. Actions: 'search' (list scans with filters, last 30 days), 'get' (single scan details including deployment, repository, commit info).",
|
|
299
|
+
"metadata_params": ["action", "deploymentSlug", "scanId"],
|
|
300
|
+
"operations": {
|
|
301
|
+
"search": "ScansService_SearchScans",
|
|
302
|
+
"get": "ScansService_GetScan"
|
|
303
|
+
},
|
|
304
|
+
"parameters": {
|
|
305
|
+
"action": {
|
|
306
|
+
"type": "string",
|
|
307
|
+
"enum": ["search", "get"],
|
|
308
|
+
"description": "Action to perform",
|
|
309
|
+
"required": true
|
|
310
|
+
},
|
|
311
|
+
"deploymentSlug": {
|
|
312
|
+
"type": "string",
|
|
313
|
+
"description": "Deployment slug (string). Get from get_deployment tool. Required for all operations.",
|
|
314
|
+
"required": true,
|
|
315
|
+
"example": "your-deployment"
|
|
316
|
+
},
|
|
317
|
+
"deployment_id": {
|
|
318
|
+
"type": "string",
|
|
319
|
+
"description": "Deployment ID (numeric). Required for search request body validation.",
|
|
320
|
+
"required_for": ["search", "get"]
|
|
321
|
+
},
|
|
322
|
+
"scanId": {
|
|
323
|
+
"type": "string",
|
|
324
|
+
"description": "Scan ID (numeric)",
|
|
325
|
+
"required_for": ["get"],
|
|
326
|
+
"example": "456"
|
|
327
|
+
},
|
|
328
|
+
"repository_id": {
|
|
329
|
+
"type": "integer",
|
|
330
|
+
"description": "Filter by repository ID (for search)"
|
|
331
|
+
},
|
|
332
|
+
"branch": {
|
|
333
|
+
"type": "string",
|
|
334
|
+
"description": "Filter by branch (for search)"
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
|
|
339
|
+
{
|
|
340
|
+
"name": "manage_policies",
|
|
341
|
+
"description": "Work with security policies. Actions: 'list' (all policies), 'list_rules' (rules in a policy with pagination), 'update' (change rule mode: Monitor/Comment/Block/Disabled).",
|
|
342
|
+
"metadata_params": ["action", "deploymentSlug", "policyId"],
|
|
343
|
+
"operations": {
|
|
344
|
+
"list": "PoliciesService_ListPolicies",
|
|
345
|
+
"list_rules": "PoliciesService_ListPolicyRules",
|
|
346
|
+
"update": "PoliciesService_UpdatePolicy"
|
|
347
|
+
},
|
|
348
|
+
"parameters": {
|
|
349
|
+
"action": {
|
|
350
|
+
"type": "string",
|
|
351
|
+
"enum": ["list", "list_rules", "update"],
|
|
352
|
+
"description": "Action to perform",
|
|
353
|
+
"required": true
|
|
354
|
+
},
|
|
355
|
+
"deploymentSlug": {
|
|
356
|
+
"type": "string",
|
|
357
|
+
"description": "Deployment slug (string). Get from get_deployment tool. Required for all operations.",
|
|
358
|
+
"required": true,
|
|
359
|
+
"example": "your-deployment"
|
|
360
|
+
},
|
|
361
|
+
"deployment_id": {
|
|
362
|
+
"type": "string",
|
|
363
|
+
"description": "Deployment ID (numeric). Required for API paths that use deploymentId.",
|
|
364
|
+
"required": true
|
|
365
|
+
},
|
|
366
|
+
"policyId": {
|
|
367
|
+
"type": "string",
|
|
368
|
+
"description": "Policy ID (numeric)",
|
|
369
|
+
"required_for": ["list_rules", "update"],
|
|
370
|
+
"example": "456"
|
|
371
|
+
},
|
|
372
|
+
"rulePath": {
|
|
373
|
+
"type": "string",
|
|
374
|
+
"description": "Full rule path for update (e.g., 'python.rule.1')"
|
|
375
|
+
},
|
|
376
|
+
"policyMode": {
|
|
377
|
+
"type": "string",
|
|
378
|
+
"enum": ["MODE_MONITOR", "MODE_COMMENT", "MODE_BLOCK", "MODE_DISABLED"],
|
|
379
|
+
"description": "New mode for the rule: Monitor (silently report), Comment (PR comments, no block), Block (PR comments + block), Disabled"
|
|
380
|
+
},
|
|
381
|
+
"cursor": {
|
|
382
|
+
"type": "string",
|
|
383
|
+
"description": "Pagination cursor"
|
|
384
|
+
},
|
|
385
|
+
"limit": {
|
|
386
|
+
"type": "integer",
|
|
387
|
+
"description": "Page size (default 500, max 2000)"
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
|
|
392
|
+
{
|
|
393
|
+
"name": "manage_dependencies",
|
|
394
|
+
"description": "Work with supply chain dependencies. Actions: 'list' (all dependencies), 'list_repositories' (repos with dependencies), 'list_lockfiles' (lockfiles in a repo). Filter by ecosystem, name, transitivity, license.",
|
|
395
|
+
"metadata_params": ["action", "deploymentSlug"],
|
|
396
|
+
"operations": {
|
|
397
|
+
"list": "SupplyChainService_ListDependencies",
|
|
398
|
+
"list_repositories": "SupplyChainService_ListRepositoriesForDependencies",
|
|
399
|
+
"list_lockfiles": "SupplyChainService_ListLockfilesForDependencies"
|
|
400
|
+
},
|
|
401
|
+
"parameters": {
|
|
402
|
+
"action": {
|
|
403
|
+
"type": "string",
|
|
404
|
+
"enum": ["list", "list_repositories", "list_lockfiles"],
|
|
405
|
+
"description": "Action to perform",
|
|
406
|
+
"required": true
|
|
407
|
+
},
|
|
408
|
+
"deploymentSlug": {
|
|
409
|
+
"type": "string",
|
|
410
|
+
"description": "Deployment slug (string). Get from get_deployment tool. Required for all operations.",
|
|
411
|
+
"required": true,
|
|
412
|
+
"example": "your-deployment"
|
|
413
|
+
},
|
|
414
|
+
"deployment_id": {
|
|
415
|
+
"type": "string",
|
|
416
|
+
"description": "Deployment ID (numeric). Required for API paths that use deploymentId.",
|
|
417
|
+
"required": true
|
|
418
|
+
},
|
|
419
|
+
"repository_id": {
|
|
420
|
+
"type": "string",
|
|
421
|
+
"description": "Repository ID (for list_lockfiles).",
|
|
422
|
+
"required_for": ["list_lockfiles"]
|
|
423
|
+
},
|
|
424
|
+
"repositoryId": {
|
|
425
|
+
"type": "string",
|
|
426
|
+
"description": "Repository ID (for list_lockfiles). Use repository_id when passing request bodies that require snake-case fields."
|
|
427
|
+
},
|
|
428
|
+
"cursor": {
|
|
429
|
+
"type": "string",
|
|
430
|
+
"description": "Pagination cursor"
|
|
431
|
+
},
|
|
432
|
+
"pageSize": {
|
|
433
|
+
"type": "integer",
|
|
434
|
+
"description": "Items per page (default 1000 for list, 5 for others)"
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
},
|
|
438
|
+
|
|
439
|
+
{
|
|
440
|
+
"name": "manage_sbom",
|
|
441
|
+
"description": "Export SBOM (Software Bill of Materials). Actions: 'create' (start async export job, returns task_token), 'get' (check status - PENDING/RUNNING/COMPLETED/FAILED, get download URL when complete).",
|
|
442
|
+
"metadata_params": ["action", "deploymentSlug"],
|
|
443
|
+
"operations": {
|
|
444
|
+
"create": "SupplyChainService_CreateSbomExport",
|
|
445
|
+
"get": "SupplyChainService_GetSbomExport"
|
|
446
|
+
},
|
|
447
|
+
"parameters": {
|
|
448
|
+
"action": {
|
|
449
|
+
"type": "string",
|
|
450
|
+
"enum": ["create", "get"],
|
|
451
|
+
"description": "Action to perform",
|
|
452
|
+
"required": true
|
|
453
|
+
},
|
|
454
|
+
"deploymentSlug": {
|
|
455
|
+
"type": "string",
|
|
456
|
+
"description": "Deployment slug (string). Get from get_deployment tool. Required for all operations.",
|
|
457
|
+
"required": true,
|
|
458
|
+
"example": "your-deployment"
|
|
459
|
+
},
|
|
460
|
+
"deployment_id": {
|
|
461
|
+
"type": "string",
|
|
462
|
+
"description": "Deployment ID (numeric). Required for SBOM export request body validation.",
|
|
463
|
+
"required_for": ["create", "get"]
|
|
464
|
+
},
|
|
465
|
+
"taskToken": {
|
|
466
|
+
"type": "string",
|
|
467
|
+
"description": "Task token from create response",
|
|
468
|
+
"required_for": ["get"]
|
|
469
|
+
},
|
|
470
|
+
"repositoryId": {
|
|
471
|
+
"type": "string",
|
|
472
|
+
"description": "Repository ID for SBOM export",
|
|
473
|
+
"required_for": ["create"]
|
|
474
|
+
},
|
|
475
|
+
"ref": {
|
|
476
|
+
"type": "string",
|
|
477
|
+
"description": "Branch to export SBOM for (e.g., 'refs/heads/main')"
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
},
|
|
481
|
+
|
|
482
|
+
{
|
|
483
|
+
"name": "triage_findings",
|
|
484
|
+
"description": "Bulk triage security findings. Set triage state (ignored, reviewing, fixing, reopened), add notes, and filter by various criteria. Either provide issue_ids or filter parameters.",
|
|
485
|
+
"operations": {
|
|
486
|
+
"bulk": "TriageService_BulkTriage"
|
|
487
|
+
},
|
|
488
|
+
"parameters": {
|
|
489
|
+
"deploymentSlug": {
|
|
490
|
+
"type": "string",
|
|
491
|
+
"description": "Deployment slug. Get from get_deployment tool.",
|
|
492
|
+
"required": true
|
|
493
|
+
},
|
|
494
|
+
"issue_type": {
|
|
495
|
+
"type": "string",
|
|
496
|
+
"enum": ["sast", "sca", "secrets"],
|
|
497
|
+
"description": "Type of findings to triage",
|
|
498
|
+
"required": true
|
|
499
|
+
},
|
|
500
|
+
"issue_ids": {
|
|
501
|
+
"type": "array",
|
|
502
|
+
"items": { "type": "integer" },
|
|
503
|
+
"description": "Specific issue IDs to triage (alternative to filters)"
|
|
504
|
+
},
|
|
505
|
+
"new_triage_state": {
|
|
506
|
+
"type": "string",
|
|
507
|
+
"enum": ["ignored", "reviewing", "fixing", "reopened"],
|
|
508
|
+
"description": "New triage state"
|
|
509
|
+
},
|
|
510
|
+
"new_triage_reason": {
|
|
511
|
+
"type": "string",
|
|
512
|
+
"enum": ["acceptable_risk", "false_positive", "no_time", "no_triage_reason"],
|
|
513
|
+
"description": "Reason for ignoring (requires new_triage_state=ignored)"
|
|
514
|
+
},
|
|
515
|
+
"new_note": {
|
|
516
|
+
"type": "string",
|
|
517
|
+
"description": "Note to attach to triaged findings"
|
|
518
|
+
},
|
|
519
|
+
"status": {
|
|
520
|
+
"type": "string",
|
|
521
|
+
"enum": ["open", "fixed", "ignored", "reviewing", "fixing"],
|
|
522
|
+
"description": "Filter by current status"
|
|
523
|
+
},
|
|
524
|
+
"severities": {
|
|
525
|
+
"type": "string",
|
|
526
|
+
"enum": ["low", "medium", "high", "critical"],
|
|
527
|
+
"description": "Filter by severity"
|
|
528
|
+
},
|
|
529
|
+
"repos": {
|
|
530
|
+
"type": "array",
|
|
531
|
+
"items": { "type": "string" },
|
|
532
|
+
"description": "Filter by repositories"
|
|
533
|
+
},
|
|
534
|
+
"rules": {
|
|
535
|
+
"type": "array",
|
|
536
|
+
"items": { "type": "string" },
|
|
537
|
+
"description": "Filter by rules"
|
|
538
|
+
},
|
|
539
|
+
"categories": {
|
|
540
|
+
"type": "array",
|
|
541
|
+
"items": { "type": "string" },
|
|
542
|
+
"description": "Filter by categories"
|
|
543
|
+
},
|
|
544
|
+
"confidence": {
|
|
545
|
+
"type": "string",
|
|
546
|
+
"enum": ["low", "medium", "high"],
|
|
547
|
+
"description": "Filter by confidence"
|
|
548
|
+
},
|
|
549
|
+
"autotriage_verdict": {
|
|
550
|
+
"type": "string",
|
|
551
|
+
"enum": ["true_positive", "false_positive"],
|
|
552
|
+
"description": "Filter by autotriage verdict"
|
|
553
|
+
},
|
|
554
|
+
"exposures": {
|
|
555
|
+
"type": "array",
|
|
556
|
+
"items": { "type": "string" },
|
|
557
|
+
"description": "SCA: filter by reachability"
|
|
558
|
+
},
|
|
559
|
+
"transitivities": {
|
|
560
|
+
"type": "array",
|
|
561
|
+
"items": { "type": "string" },
|
|
562
|
+
"description": "SCA: filter by transitivity"
|
|
563
|
+
},
|
|
564
|
+
"include_historical": {
|
|
565
|
+
"type": "boolean",
|
|
566
|
+
"description": "Secrets: include historical findings",
|
|
567
|
+
"default": true
|
|
568
|
+
},
|
|
569
|
+
"limit": {
|
|
570
|
+
"type": "integer",
|
|
571
|
+
"description": "Max issues to triage (default 3000, max 3000)",
|
|
572
|
+
"default": 3000,
|
|
573
|
+
"maximum": 3000
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
|
|
578
|
+
{
|
|
579
|
+
"name": "manage_tickets",
|
|
580
|
+
"description": "Create and manage Jira tickets for findings. Actions: 'create' (create tickets for findings by ID or filters, groups by repo+rule by default), 'delete' (unlink a ticket).",
|
|
581
|
+
"metadata_params": ["action", "deployment_id"],
|
|
582
|
+
"operations": {
|
|
583
|
+
"create": "TicketingService_CreateTicket",
|
|
584
|
+
"delete": "TicketingService_DeleteTicket"
|
|
585
|
+
},
|
|
586
|
+
"parameters": {
|
|
587
|
+
"action": {
|
|
588
|
+
"type": "string",
|
|
589
|
+
"enum": ["create", "delete"],
|
|
590
|
+
"description": "Action to perform",
|
|
591
|
+
"required": true
|
|
592
|
+
},
|
|
593
|
+
"deployment_slug": {
|
|
594
|
+
"type": "string",
|
|
595
|
+
"description": "Deployment slug (for create). Get from get_deployment tool.",
|
|
596
|
+
"required_for": ["create"]
|
|
597
|
+
},
|
|
598
|
+
"deployment_id": {
|
|
599
|
+
"type": "string",
|
|
600
|
+
"description": "Deployment ID numeric (for delete). Get from get_deployment tool.",
|
|
601
|
+
"required_for": ["delete"]
|
|
602
|
+
},
|
|
603
|
+
"externalTicketId": {
|
|
604
|
+
"type": "integer",
|
|
605
|
+
"description": "External ticket ID to unlink",
|
|
606
|
+
"required_for": ["delete"]
|
|
607
|
+
},
|
|
608
|
+
"issue_type": {
|
|
609
|
+
"type": "string",
|
|
610
|
+
"enum": ["sast", "sca", "secrets"],
|
|
611
|
+
"description": "Type of findings for tickets",
|
|
612
|
+
"required_for": ["create"]
|
|
613
|
+
},
|
|
614
|
+
"issue_ids": {
|
|
615
|
+
"type": "array",
|
|
616
|
+
"items": { "type": "integer" },
|
|
617
|
+
"description": "Issue IDs to create tickets for"
|
|
618
|
+
},
|
|
619
|
+
"jira_project_id": {
|
|
620
|
+
"type": "string",
|
|
621
|
+
"description": "Jira project ID (numeric) to override default project"
|
|
622
|
+
},
|
|
623
|
+
"group_issues": {
|
|
624
|
+
"type": "boolean",
|
|
625
|
+
"description": "Group findings from same rule/repo into one ticket (up to 50)",
|
|
626
|
+
"default": true
|
|
627
|
+
},
|
|
628
|
+
"repos": {
|
|
629
|
+
"type": "array",
|
|
630
|
+
"items": { "type": "string" },
|
|
631
|
+
"description": "Filter by repositories"
|
|
632
|
+
},
|
|
633
|
+
"rules": {
|
|
634
|
+
"type": "array",
|
|
635
|
+
"items": { "type": "string" },
|
|
636
|
+
"description": "Filter by rules"
|
|
637
|
+
},
|
|
638
|
+
"severities": {
|
|
639
|
+
"type": "array",
|
|
640
|
+
"items": { "type": "string" },
|
|
641
|
+
"description": "Filter by severities"
|
|
642
|
+
},
|
|
643
|
+
"status": {
|
|
644
|
+
"type": "string",
|
|
645
|
+
"description": "Filter by status"
|
|
646
|
+
},
|
|
647
|
+
"limit": {
|
|
648
|
+
"type": "integer",
|
|
649
|
+
"description": "Max tickets to create (default 20, max 20)",
|
|
650
|
+
"default": 20,
|
|
651
|
+
"maximum": 20
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
],
|
|
656
|
+
|
|
657
|
+
"interceptors": {
|
|
658
|
+
"auth": {
|
|
659
|
+
"type": "bearer",
|
|
660
|
+
"value_from_env": "SEMGREP_TOKEN"
|
|
661
|
+
},
|
|
662
|
+
"base_url": {
|
|
663
|
+
"value_from_env": "SEMGREP_API_BASE_URL",
|
|
664
|
+
"default": "https://semgrep.dev"
|
|
665
|
+
},
|
|
666
|
+
"rate_limit": {
|
|
667
|
+
"max_requests_per_minute": 600,
|
|
668
|
+
"overrides": {
|
|
669
|
+
"TriageService_BulkTriage": {
|
|
670
|
+
"max_requests_per_minute": 10
|
|
671
|
+
},
|
|
672
|
+
"TicketingService_CreateTicket": {
|
|
673
|
+
"max_requests_per_minute": 10
|
|
674
|
+
},
|
|
675
|
+
"TicketingService_DeleteTicket": {
|
|
676
|
+
"max_requests_per_minute": 10
|
|
677
|
+
},
|
|
678
|
+
"ProjectsService_DeleteProject": {
|
|
679
|
+
"max_requests_per_minute": 5
|
|
680
|
+
},
|
|
681
|
+
"SupplyChainService_CreateSbomExport": {
|
|
682
|
+
"max_requests_per_minute": 10
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
},
|
|
686
|
+
"retry": {
|
|
687
|
+
"max_attempts": 3,
|
|
688
|
+
"backoff_ms": [1000, 2000, 4000],
|
|
689
|
+
"retry_on_status": [429, 502, 503, 504]
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
}
|