#190 · MCP, API, and CLI: Run the Whole Platform From Your Agent
Availability: General Availability Operations tagged
Betain the API reference, and the CLI commands and MCP tools built on them, may still change.
Your agent now runs the full fix loop in Escape. It pulls an issue with its reproduction and exploit, generates a fix, retests it, exports the results as SARIF, and fails the build on any open issue at or above the severity you set. The public API covers 326 operations, up from 186. Every MCP tool is backed by an escape-cli command, so what your agent does in a conversation, your pipeline does in a script. Tools that delete or change resources in bulk require confirm: true, and bulk issue updates support a dry run.
What's New¶
Findings and Remediation¶
- Evidence on every issue:
GET /issues/{issueId}andescape-cli issues getreturn the reproduction, the exploit, the attack chain, and a fix prompt. - Severity changes with a reason: Issue updates accept a severity object with
valueandreason, so you record why you changed it. - Bulk issue updates:
POST /issues/bulk-updatereturnsids,count, anddryRun. Send"dryRun": trueto preview the matching IDs without changing them. A partial failure reports how many issues were already updated. Preview from the CLI withescape-cli issues bulk-update --severity LOW --status IGNORED --dry-run, then drop--dry-runto apply. - AI remediation:
POST /issues/{issueId}/ai-remediationstarts a fix, andPOST /issues/{issueId}/ai-remediation/feedbackrates it. In the CLI:issues remediation generate,get, andfeedback. - Retests:
retests start,retests list, andretests getprove a fix without a full scan. - Sharper filters:
GET /issuesacceptsprojectIds,categories,assetTypes,assetStatuses,aiFalsePositive,agentic,targetIds,securityTestUids,blacklistedIds,blacklistedNames,noTags, anddnf. - Workflows on issues:
issues trigger-workflowruns a manual workflow on one issue.POST /issues/bulk-workflowandissues bulk-workflowrun it on every issue a filter matches. - Saved views:
/viewslists, creates, updates, reorders, and deletes the views you share with the UI.GET /views/{viewId}/issueslists the issues of a view.
Scans and AI Pentesting¶
- What a scan did:
GET /scans/{scanId}/configuration,/statistics, and/compliance, withscans configuration,scans statistics, andscans compliance. - Attack scenarios (Beta):
GET /scans/{scanId}/scenariosandscans scenarioslist the scenarios an AI pentest explored, filtered byvectorandsearch. - Target filters:
GET /scans/{scanId}/targetsfilters oncoverage,issues,severities,methods, andsearch. - Scan filters:
GET /scansacceptscommitBranch,latestBranchScans,assetTypes,tagIds,noTags,problemCodes,problemSeverities,search, anddnf. - CI severity gates:
scans watch --fail-on-severity HIGHandscans start --watch --fail-on-severity HIGHfail the build when a finished scan has an open issue at or aboveHIGH. The GitHub Action enforcesfail_on_severities(defaultHIGH). - Stop and diagnose:
scans cancel,scans ignore,scans problems, andprofiles problems. - Target validation (Beta):
POST /validationschecks that a target is reachable and in scope before you create a profile.validations startandvalidations getdo the same from the CLI. - AI pentest profiles:
profiles updateedits an AI pentest profile after creation and reads its settings back.POST /profiles/bulk-updateandprofiles bulk-updatechange several profiles in one call. - Continuous pentest (Beta): create, update, enable, and disable under
/profiles/{profileId}/continuous-pentest, and withprofiles continuous-pentest. - Regression tests (Beta): nine operations under
/regression-testscover create, update, delete, run, stop, history, and clarifications. The CLI group isregression-tests. - Knowledge files (Beta):
/knowledge-fileslists, uploads, and deletes the documents that give an AI pentest its context. Over MCP,knowledge-files uploadtakes text content inline with--content.
Assets and Schemas¶
- Asset filters:
GET /assetsacceptsclasses,domains,environments,frameworks,integrationIds,ownerEmails,ports,risks,severities,tagIds,technologyKeys, anddnf. - Bulk import:
POST /assets/bulk-importandassets bulk-import. - Asset deletion:
DELETE /assets/{assetId}returns200with{"message": "Asset deleted successfully"}, matching the documented schema.escape-cli assets deleteand the MCP server accept both the previous and current response shapes. - Schema download:
GET /assets/{assetId}/contentreturns a signed URL for an uploaded schema.assets downloadfetches it. - Clear a field:
assets update --description ''and empty tag, owner, project, or schema lists now clear the value.profiles updatekeeps an explicitnull, so you clearproxyId,context.additional, andoffLimitsAreas.
Reporting and Analytics¶
- SARIF and CSV (Beta):
GET /exports/issues/sarif,/exports/issues/csv, and/exports/assets/csv. In the CLI:issues export --format sarif|csvandassets export --format csv. - Security KPIs:
GET /statistics/issues,/statistics/endpoints, and/statistics/trends.statistics trends --project-idscopes the trend to projects. - Compliance:
GET /compliance,/compliance/per-application, and/compliance/enabled.compliance enablesets the frameworks you track (Beta). - Reports (Beta):
GET /jobslists export jobs.jobs renameandjobs send-artefactsname a report and email it. - Security-test catalog:
GET /security-testslists every test with its scanner, asset type, and severity.security-tests updateandbulk-updatetune them for the organization (Beta).
Integrations and Workflows¶
- Run and inspect:
POST /integrations/{kind}/{id}/testand/sync,GET /integrations/{kind}/{id}/runs, withintegrations test,sync, andruns. - Ticket lookups:
GET /integrations/jira/{id}/projects,/integrations/jira/{id}/issue-types, and/integrations/azure-boards/{id}/areasreturn what you need to configure a ticket workflow. In the CLI:integrations jira-projects,jira-issue-types, andazure-areas. - Repositories and vaults:
integrations repositorieslists the repositories granted to the GitHub App.integrations vaultslists the vaults a provider exposes. - Vault variables (Beta):
/vault-variablesand/vaultsmanage the secret references your authentication uses. Values are write-only: the API never returns them. - Workflows:
workflows pause,workflows executions, andGET /workflows/{id}/executions.
Organization Administration¶
- Settings:
GET /organization-settingsreads the SLA policy and AI system prompt.org-settings updateandorg-settings scanner-configuration createchange them (Beta). - People and access:
PUT /users/{userId}andusers deactivatedeactivate a user.GET /permissionslists the permission catalog.DELETE /projects/{projectId}andDELETE /roles/{roleId}now respond. - Pagination and search:
/roles,/custom-rules,/users, and/tagsacceptcursorandsize. The array body stays, and the next cursor comes back in theX-Next-Cursorheader. - Audit logs:
GET /audit/logsfilters bytarget, alongsideaction,actor, andsearch. - Private locations:
GET /locations/{locationId}/logsandPUT /locations/{locationId}/tags, withlocations logsandlocations tags. - Account state:
GET /mereports subscription and trial state. - Copilot chats (Beta): five operations under
/ai-chats, and theai-chatsCLI group.
MCP Server¶
- More administration tools: Stats, audit logs, tags, asset updates, and role bindings are available from your agent.
- A confirmation gate: tools that delete or change resources in bulk require
confirm: true. - Paged results: list tools return 50 results and a
nextCursor.scans list,scans agents, andscans targetspage with--cursorand--size. - Truthful schemas: tool inputs and outputs match what the tools accept and return, dry runs included.
-o schemanever calls the API. - Bounded waits:
emails_waitreturns a pending result when no email arrives before its deadline. Resume with the returnedafterandseenIds, or poll withemails_list. - Filters that filter: array filters such as
--project-id,--target-id, and--nameonissues listandscans listnow reach the API as real values. - Room for slow work:
assets createwaits up to 15 minutes for a schema build instead of 30 seconds.
Requirements and Limits¶
PUT /organization-settings,PUT /compliance/enabled, and the security-test updates require an administrator.- An inline export larger than the MCP response limit fails with a message asking you to narrow
where. Usejobs trigger-exportfor full reports. GET /integrations/jira/{id}/projectsreturns up to 1,000 projects per call without parameters, thenX-Next-Cursor.- Every CLI command listed here ships in
escape-cli1.12.0.
Compatibility¶
Hard-breaking¶
- Tags (API):
PUT /tags/{tagId}/{tagId}is gone. UsePUT /tags/{tagId}. Upgrade the CLI ifescape-cli tags updatereturns404. - Audit logs (API):
actionandactoronGET /audit/logsmatch exactly, andactormatches the ID, not the email. Filters combine, so calls return fewer rows. Move partial and email searches tosearch. - Projects (API):
PUT /projects/{id}now validatesslug: lowercase alphanumerics and hyphens, up to 256 characters. It used to ignore it. - Bulk issue update (API and CLI):
POST /issues/bulk-updaterequires a non-emptywhereor"all": true, mutually exclusive. More than 10,000 matches return400instead of being silently truncated.escape-cli issues bulk-updaterequires at least one of--issue-id,--asset-id,--severity,--profile-id,--tag-id,--scanner-kind, or--all.--allis mutually exclusive with filter flags. - Integrations (API):
GET,PUT, andDELETE /integrations/{kind}/{id}return404when the integration is of another kind than the URL. - AI pentest profiles (API):
PUT /profiles/{id}andPOST /profiles/bulk-updatereturn400for a recurring schedule (cronorschedule.cron),useAllAvailableExtraAssets, ordefaultProxyType: ESCAPE. Recurrence is continuous pentest. - Asset update (API):
PUT /assets/{id}returns400when the body carries a field the asset class ignores, and404for an unknown asset. - Asset delete (API):
DELETE /assets/{assetId}returns an object with amessagestring instead of a baretrue. If your script parsed the body as a boolean, check the status code instead:200means the asset was deleted. - Profile list (API): the
asseton eachGET /profilesrow no longer carrieschildren,sources,statistics, orrawData. Read them fromGET /assets/{assetId}. - Subdomain blocklist (API): the
subdomain_enumerationconfiguration key is gone from profile configurations. If your scan configuration listed exclusion domains there, move them toscope.blocklist— subdomain enumeration applies the global scope domain rules, and rules left on the removed key are ignored. - Wiz workflow action (API): a Wiz export action requires
integrationId. - Scan watching (CLI):
scans watchandscans start --watchexit non-zero on failed, canceled, or unfinished scans, and errors print to stderr. - Job watching (CLI):
jobs get --watchandjobs trigger-export --watchprint one final state, fail onFAILEDorCANCELLED, and stop after--timeout(default 15 minutes).--streamrestores the per-poll output. - Tools (MCP):
scans_watchis removed. Poll withscans_get.
Soft-breaking¶
- AI pentest profiles:
GETreportsscheduleandcronasnull. - Profile schemas:
isActiveistruefor every schema attached to a profile. - Beta tags: 74 operations carry the
Betatag, up from 5. Regenerated clients see the new tag.
Non-breaking¶
- Every new operation, query parameter, response field, CLI command, and CLI flag listed above.
MCP Server Docs → Public API Docs → Scans CLI Docs →
Questions?¶
Have a question? Reach out on your dedicated support channel, or email us at support@escape.tech.