The MCP server exposes tools that map to ZeroPath’s REST V2 API. Tools are loaded from ZeroPath’s MCP manifest at startup, so your AI assistant always has access to current capabilities.Documentation Index
Fetch the complete documentation index at: https://zeropath.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Issues
10 tools — list, triage, investigate, update status and severity
Scans
3 tools — list scan history, get scan details, rescan PRs
Repositories
1 tool — list repositories with filtering
Code Inspection
3 tools — search, read, and list files in connected repositories
Rules
5 tools — full CRUD for custom security rules
Organization Scoping
Every tool acceptsorganizationId. The MCP server handles this automatically:
- If
ZEROPATH_ORG_IDis set, the server injects it into every request — you never need to pass it yourself. - If
ZEROPATH_ORG_IDis not set, you must passorganizationIdexplicitly. Most tools require it at the API level; a few (likeissues.list) can resolve org context from your auth session.
Issue Tools
issues.list
List and filter security issues. Uses offset-based pagination viaoffset and limit.
| Parameter | Type | Required | Description |
|---|---|---|---|
offset | integer | No | Starting index (default: 0) |
limit | integer | No | Results per page (default: 25, max: 100) |
statuses | string[] | No | Filter by status: PENDING_REVIEW, REVIEWING, PATCHING, RESOLVED, BACKLOG, INFORMATIONAL, NON_EXPLOITABLE, FALSE_POSITIVE, ACCEPTED_RISK |
scoreLevels | string[] | No | Filter by severity level: CRITICAL, HIGH, MEDIUM, LOW, INFO |
scoreRange | object | No | Filter by numeric score range: { min: number, max: number } (0–100) |
searchQuery | string | No | Free-text search across issue titles and descriptions |
scanId | string | No | Filter to issues from a specific scan |
languages | string[] | No | Filter by programming language |
vulnerabilityClasses | string[] | No | Filter by vulnerability class (e.g., SQL Injection) |
vulnerabilityClassFilters | object[] | No | Structured filter: each object has operator (equals, contains, or startsWith) and value (string). Use for partial or prefix class matching; vulnerabilityClasses is a plain string list. |
codeScanTypes | string[] | No | Filter by scan type |
detectionTypes | string[] | No | Filter by detection category |
repositoryBranches | object[] | No | Filter to specific repositories and branches |
projectId | string | No | Filter to a specific project |
sortBy | string | No | Sort field: createdAt, score, title, repository, class, file, patch |
sortOrder | string | No | asc or desc |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
issues.archive
Archive issues to remove them from active views.| Parameter | Type | Required | Description |
|---|---|---|---|
issueIds | string[] | Yes | Issue IDs to archive |
reason | string | No | Reason for archiving |
organizationId | string | Yes | Injected from ZEROPATH_ORG_ID; pass explicitly if not configured |
issues.unarchive
Restore archived issues back to active views.| Parameter | Type | Required | Description |
|---|---|---|---|
issueIds | string[] | Yes | Issue IDs to unarchive |
organizationId | string | Yes | Injected from ZEROPATH_ORG_ID; pass explicitly if not configured |
issues.markFalsePositive
Mark issues as false positives. Removes them from active review.| Parameter | Type | Required | Description |
|---|---|---|---|
issueIds | string[] | Yes | Issue IDs to mark |
reason | string | No | Reason for the determination |
organizationId | string | Yes | Injected from ZEROPATH_ORG_ID; pass explicitly if not configured |
issues.markTruePositive
Confirm issues as true positives.| Parameter | Type | Required | Description |
|---|---|---|---|
issueIds | string[] | Yes | Issue IDs to confirm |
reason | string | No | Reason for confirmation |
organizationId | string | Yes | Injected from ZEROPATH_ORG_ID; pass explicitly if not configured |
issues.updateStatus
Update the workflow status of one or more issues.| Parameter | Type | Required | Description |
|---|---|---|---|
issueIds | string[] | Yes | Issue IDs to update |
issueStatus | string | Yes | PENDING_REVIEW, REVIEWING, PATCHING, RESOLVED, BACKLOG, or INFORMATIONAL |
reason | string | No | Reason for the status change |
organizationId | string | Yes | Injected from ZEROPATH_ORG_ID; pass explicitly if not configured |
issues.updateSeverity
Update the severity score of a single issue.| Parameter | Type | Required | Description |
|---|---|---|---|
issueId | string | Yes | Single issue ID (not an array) |
severity | number | Yes | Score from 0 to 10 (supports one decimal place) |
reason | string | No | Reason for the severity change |
organizationId | string | Yes | Injected from ZEROPATH_ORG_ID; pass explicitly if not configured |
issues.requestInvestigation
Request an on-demand investigation of a finding using larger AI models for higher-confidence validation.REST vs MCP: The public HTTP API exposes a single procedure,
POST /api/v2/issues/requestInvestigation, with an issueIds array (one or more IDs). That route uses the same backend path as the issues.requestBulkInvestigation MCP tool. This issues.requestInvestigation MCP tool calls the single-issue tRPC mutation instead — there is no matching POST …/{id}/investigate REST endpoint.| Parameter | Type | Required | Description |
|---|---|---|---|
issueId | string | Yes | Issue ID to investigate |
context | string | No | Additional context to guide the investigation (max 20,000 characters). You can include details such as how the affected code is used, deployment context, or specific concerns to focus on. |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
"status": "already_pending" instead of creating a duplicate.
issues.requestBulkInvestigation
Request investigations for multiple issues at once.REST mapping:
POST /api/v2/issues/requestInvestigation with { issueIds, context?, organizationId? }. This is the HTTP surface for bulk investigations; it is not the same MCP tool name as issues.requestInvestigation (single-issue tRPC tool above).| Parameter | Type | Required | Description |
|---|---|---|---|
issueIds | string[] | Yes | Issue IDs to investigate |
context | string | No | Additional context to guide all investigations in this batch (max 20,000 characters). You can include details such as deployment context or specific concerns that apply to the group of issues. |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
issues.getInvestigationStatus
Get the latest investigation result for an issue.| Parameter | Type | Required | Description |
|---|---|---|---|
issueId | string | Yes | Issue ID |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
null if no investigation has been requested for the issue. The status field can be PENDING, PROCESSING, COMPLETED, or FAILED.
Scan Tools
scans.list
List scans with cursor-based pagination. Pass thenextCursor from a previous response to paginate forward.
| Parameter | Type | Required | Description |
|---|---|---|---|
cursor | object | No | Cursor from previous response: { createdAt: string, id: string } |
limit | number | No | Results per page (default: 20, max: 100) |
repositoryIds | string[] | No | Filter to specific repositories |
scanTypes | string[] | No | FullScan, PrScan (defaults to both) |
searchQuery | string | No | Search by scan name |
projectId | string | No | Filter by project ID |
scoreRange | object | No | Filter by vulnerability score: { min: number, max: number } (0–100) |
showEphemeral | boolean | No | Include CLI/ephemeral scans (default: false) |
getCounts | boolean | No | Include vulnerability counts (default: true) |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
scans.get
Get details for a specific scan.| Parameter | Type | Required | Description |
|---|---|---|---|
scanId | string | Yes | Scan ID |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
scans.rescanPR
Trigger a rescan of a pull request or merge request. Pass the ID of a previous PR scan and the platform will re-fetch the pull request and create new scan(s). Supports GitHub PRs and GitLab MRs.| Parameter | Type | Required | Description |
|---|---|---|---|
scanId | string | Yes | ID of a previous PR scan to rescan |
force | boolean | No | When true, bypasses duplicate detection and rescans even if a scan for the current commit already exists |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
outcome field indicates what happened:
| Outcome | Meaning |
|---|---|
scans_created | New scan(s) were created successfully |
skipped_duplicate | A scan for the current commit already exists (use force: true to override) |
skipped_not_enabled | PR scanning is not enabled for this repository |
skipped_no_targets | No valid scan targets found for the pull request |
closed | The pull request is closed |
error | An error occurred during rescan |
Repository Tools
repositories.list
List repositories with cursor-based pagination (string cursor).| Parameter | Type | Required | Description |
|---|---|---|---|
cursor | string | No | Cursor from previous response nextCursor |
limit | integer | No | Results per page (default: 20, max: 100) |
sortBy | string | No | name or issues (default: name) |
sortDirection | string | No | asc or desc (default: asc) |
getCounts | boolean | No | Include issue counts (default: true, may impact performance) |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
Code Inspection Tools
These tools allow you to browse and search source code directly in connected GitHub and GitLab repositories without cloning.code.search
Search for code within a repository.| Parameter | Type | Required | Description |
|---|---|---|---|
repositoryId | string | Yes | Repository ID to search in |
query | string | Yes | Search query (1–512 characters) |
ref | string | No | Git ref (branch/tag/commit). GitLab only — GitHub always searches the default branch |
pathPrefix | string | No | Restrict results to a directory subtree |
limit | integer | No | Max results (default: 10, max: 50) |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
code.read
Read the contents of a file in a repository.| Parameter | Type | Required | Description |
|---|---|---|---|
repositoryId | string | Yes | Repository ID |
path | string | Yes | File path within the repository |
ref | string | No | Git ref (branch/tag/commit) |
startLine | integer | No | First line to return (1-based) |
endLine | integer | No | Last line to return (must be >= startLine) |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
truncatedByLineRange and truncatedByByteLimit flags indicate whether the response was truncated.
code.listFiles
List files and directories within a repository path.| Parameter | Type | Required | Description |
|---|---|---|---|
repositoryId | string | Yes | Repository ID |
path | string | No | Directory path (defaults to repository root) |
ref | string | No | Git ref (branch/tag/commit) |
cursor | string | No | Pagination cursor (GitLab only) |
limit | integer | No | Max results (default: 100, max: 200) |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
Code inspection is currently supported for GitHub and GitLab repositories. Bitbucket, generic Git, and uploaded repositories are not yet supported.
Rule Tools
rules.list
List custom security rules. Uses offset-based pagination.| Parameter | Type | Required | Description |
|---|---|---|---|
offset | integer | No | Starting index (default: 0) |
limit | integer | No | Results per page (default: 20, max: 100) |
repositoryId | string | No | Filter rules by repository |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
rules.get
Get details for a specific rule, including associated repository names.| Parameter | Type | Required | Description |
|---|---|---|---|
ruleId | string | Yes | Rule ID |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
rules.create
Create a custom security rule.| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Rule name |
rule | string | Yes | Natural language rule definition |
globPattern | string | No | File pattern (default: **/*) |
sourceTypes | string[] | No | HTTP_HANDLER, FILE_HANDLER, STDIN_HANDLER, BROWSER_DATA, WEBSOCKET, SOCKET, CLI_ARGUMENT, MOBILE_INPUTS |
repositoryIds | string[] | No | Limit to specific repositories |
tagIds | string[] | No | Tag IDs to associate with the rule |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
rules.update
Update an existing rule. Only the fields you include will be modified.| Parameter | Type | Required | Description |
|---|---|---|---|
ruleId | string | Yes | Rule ID to update |
name | string | No | Updated name |
rule | string | No | Updated definition |
globPattern | string | No | Updated file pattern |
sourceTypes | string[] | No | Updated source types |
repositoryIds | string[] | No | Updated repository scope |
tagIds | string[] | No | Updated tag associations |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
rules.delete
Delete a custom rule.| Parameter | Type | Required | Description |
|---|---|---|---|
ruleId | string | Yes | Rule ID to delete |
organizationId | string | No | Injected from ZEROPATH_ORG_ID when configured |
Common Workflows
Triage new issues
Triage new issues
- List pending issues — call
issues.listwithstatuses: ["PENDING_REVIEW"]sorted byscoredescending. - Review each issue — ask your AI assistant to summarize the vulnerability and affected code.
- Classify — use
issues.markTruePositiveorissues.markFalsePositivewith a reason. - Update status — move confirmed issues to
REVIEWINGorPATCHINGwithissues.updateStatus. - Adjust severity — if the auto-assigned score doesn’t match your assessment, use
issues.updateSeveritywith a value from 0 to 10.
Create custom rules
Create custom rules
- List existing rules — call
rules.listto see what’s already configured. - Create a rule — use
rules.createwith a natural language description. ZeroPath’s scanner will match this pattern during future scans. - Scope it — use
repositoryIdsto limit the rule to specific repos,globPatternto limit to specific file types, andsourceTypesto target specific entry points. - Tag it — use
tagIdsto associate the rule with tags for organization. - Iterate — update with
rules.updateas you refine the pattern.
Investigate scan results
Investigate scan results
- List recent scans — call
scans.listto see scan history. Filter withscanTypes: ["FullScan"]for scheduled scans or["PrScan"]for PR scans. - Get scan details — use
scans.getwith a specificscanIdto see status, branch, and issue counts. - Drill into findings — call
issues.listwith ascanIdfilter to see only issues from that scan.
Error Handling
Failed tool calls return structured errors:BAD_REQUEST — Invalid input
BAD_REQUEST — Invalid input
Returned when input validation fails. Check the
data.issues array for field-level details.UNAUTHORIZED — Invalid or missing auth
UNAUTHORIZED — Invalid or missing auth
FORBIDDEN — Insufficient permissions
FORBIDDEN — Insufficient permissions
The API key does not have the required permissions for this operation. Check your key’s role in ZeroPath Settings.
NOT_FOUND — Resource doesn't exist
NOT_FOUND — Resource doesn't exist
The specified ID (issue, scan, rule, or repository) was not found. Verify the ID is correct and belongs to your organization.
Tips
- Paginate — always paginate large result sets. Use
offset/limitfor issues and rules,cursor/limitfor scans and repositories. - Filter early — use status, severity, and repository filters to reduce response size.
- Batch updates — pass multiple IDs in a single call when archiving, marking, or updating status.
- Include reasons — add a
reasonwhen archiving, marking false/true positives, or changing status for audit trails. - Set org context — configure
ZEROPATH_ORG_IDduring installation so the server injectsorganizationIdinto every request automatically.