Skip to content

#197 · MCP, API, and CLI: Run the Whole Platform From Your Agent

Availability: General Availability Operations tagged Beta in the API reference, and the CLI commands and MCP tools built on them, may still change.

Your agent now reaches almost everything you do in Escape. In one week the public API grew from 186 to 326 operations, and the MCP server from 69 to 178 tools, each one backed by an escape-cli command. You asked for SARIF straight from the CLI and for agents that pull new high-severity issues and work them on their own: both are here, along with the rest of the loop.

This note is the full inventory. Two earlier notes go deeper on the first batches: Agents and Pipelines Finish the Fix Loop and Issue Bulk Updates Now Return Exact IDs and Preview With Dry Run.

What's New

Findings and Remediation

  • Evidence on every issue: GET /issues/{issueId} and escape-cli issues get return the reproduction, the exploit, the attack chain, and a fix prompt.
  • AI remediation: POST /issues/{issueId}/ai-remediation starts a fix, and POST /issues/{issueId}/ai-remediation/feedback rates it. In the CLI: issues remediation generate, get, and feedback.
  • Retests: retests start, retests list, and retests get prove a fix without a full scan.
  • Sharper filters: GET /issues accepts projectIds, categories, assetTypes, assetStatuses, aiFalsePositive, agentic, targetIds, securityTestUids, blacklistedIds, blacklistedNames, noTags, and dnf.
  • Workflows on issues: issues trigger-workflow runs a manual workflow on one issue. POST /issues/bulk-workflow and issues bulk-workflow run it on every issue a filter matches.
  • Saved views: /views lists, creates, updates, reorders, and deletes the views you share with the UI. GET /views/{viewId}/issues lists the issues of a view.

Scans and AI Pentesting

  • What a scan did: GET /scans/{scanId}/configuration, /statistics, and /compliance, with scans configuration, scans statistics, and scans compliance.
  • Attack scenarios (Beta): GET /scans/{scanId}/scenarios and scans scenarios list the scenarios an AI pentest explored, filtered by vector and search.
  • Target filters: GET /scans/{scanId}/targets filters on coverage, issues, severities, methods, and search.
  • Scan filters: GET /scans accepts commitBranch, latestBranchScans, assetTypes, tagIds, noTags, problemCodes, problemSeverities, search, and dnf.
  • Stop and diagnose: scans cancel, scans ignore, scans problems, and profiles problems.
  • Target validation (Beta): POST /validations checks that a target is reachable and in scope before you create a profile. validations start and validations get do the same from the CLI.
  • AI pentest profiles: profiles update edits an AI pentest profile after creation and reads its settings back. POST /profiles/bulk-update and profiles bulk-update change several profiles in one call.
  • Continuous pentest (Beta): create, update, enable, and disable under /profiles/{profileId}/continuous-pentest, and with profiles continuous-pentest.
  • Regression tests (Beta): nine operations under /regression-tests cover create, update, delete, run, stop, history, and clarifications. The CLI group is regression-tests.
  • Knowledge files (Beta): /knowledge-files lists, uploads, and deletes the documents that give an AI pentest its context. Over MCP, knowledge-files upload takes text content inline with --content.

Assets and Schemas

  • Asset filters: GET /assets accepts classes, domains, environments, frameworks, integrationIds, ownerEmails, ports, risks, severities, tagIds, technologyKeys, and dnf.
  • Bulk import: POST /assets/bulk-import and assets bulk-import.
  • Schema download: GET /assets/{assetId}/content returns a signed URL for an uploaded schema. assets download fetches it.
  • Clear a field: assets update --description '' and empty tag, owner, project, or schema lists now clear the value. profiles update keeps an explicit null, so you clear proxyId, context.additional, and offLimitsAreas.

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|csv and assets export --format csv.
  • Security KPIs: GET /statistics/issues, /statistics/endpoints, and /statistics/trends. statistics trends --project-id scopes the trend to projects.
  • Compliance: GET /compliance, /compliance/per-application, and /compliance/enabled. compliance enable sets the frameworks you track (Beta).
  • Reports (Beta): GET /jobs lists export jobs. jobs rename and jobs send-artefacts name a report and email it.
  • Security-test catalog: GET /security-tests lists every test with its scanner, asset type, and severity. security-tests update and bulk-update tune them for the organization (Beta).

Integrations and Workflows

  • Run and inspect: POST /integrations/{kind}/{id}/test and /sync, GET /integrations/{kind}/{id}/runs, with integrations test, sync, and runs.
  • Ticket lookups: GET /integrations/jira/{id}/projects, /integrations/jira/{id}/issue-types, and /integrations/azure-boards/{id}/areas return what you need to configure a ticket workflow. In the CLI: integrations jira-projects, jira-issue-types, and azure-areas.
  • Repositories and vaults: integrations repositories lists the repositories granted to the GitHub App. integrations vaults lists the vaults a provider exposes.
  • Vault variables (Beta): /vault-variables and /vaults manage the secret references your authentication uses. Values are write-only: the API never returns them.
  • Workflows: workflows pause, workflows executions, and GET /workflows/{id}/executions.

Organization Administration

  • Settings: GET /organization-settings reads the SLA policy and AI system prompt. org-settings update and org-settings scanner-configuration create change them (Beta).
  • People and access: PUT /users/{userId} and users deactivate deactivate a user. GET /permissions lists the permission catalog. DELETE /projects/{projectId} and DELETE /roles/{roleId} now respond.
  • Pagination and search: /roles, /custom-rules, /users, and /tags accept cursor and size. The array body stays, and the next cursor comes back in the X-Next-Cursor header.
  • Private locations: GET /locations/{locationId}/logs and PUT /locations/{locationId}/tags, with locations logs and locations tags.
  • Account state: GET /me reports subscription and trial state.
  • Copilot chats (Beta): five operations under /ai-chats, and the ai-chats CLI group.

MCP Server

  • 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, and scans targets page with --cursor and --size.
  • Truthful schemas: tool inputs and outputs match what the tools accept and return, dry runs included. -o schema never calls the API.
  • Filters that filter: array filters such as --project-id, --target-id, and --name on issues list and scans list now reach the API as real values.
  • Room for slow work: assets create waits 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. Use jobs trigger-export for full reports.
  • GET /integrations/jira/{id}/projects returns up to 1,000 projects per call without parameters, then X-Next-Cursor.
  • Every CLI command listed here ships in escape-cli 1.12.0.

Compatibility

Hard-breaking

  • Tags (API): PUT /tags/{tagId}/{tagId} is gone. Use PUT /tags/{tagId}.
  • Audit logs (API): action and actor on GET /audit/logs match exactly.
  • Projects (API): PUT /projects/{id} validates slug.
  • Bulk issue update (API and CLI): POST /issues/bulk-update requires a filter or "all": true, and rejects a filter that matches more than 10,000 issues.
  • Integrations (API): GET, PUT, and DELETE /integrations/{kind}/{id} return 404 when the integration is of another kind than the URL.
  • AI pentest profiles (API): PUT /profiles/{id} and POST /profiles/bulk-update return 400 for a recurring schedule (cron or schedule.cron), useAllAvailableExtraAssets, or defaultProxyType: ESCAPE. Recurrence is continuous pentest.
  • Asset update (API): PUT /assets/{id} returns 400 when the body carries a field the asset class ignores, and 404 for an unknown asset.
  • Asset delete (API): DELETE /assets/{assetId} returns {"message": "..."} instead of a bare true.
  • Wiz workflow action (API): a Wiz export action requires integrationId.
  • Scan watching (CLI): scans watch and scans start --watch exit non-zero on failed, canceled, or unfinished scans.
  • Job watching (CLI): jobs get --watch and jobs trigger-export --watch print one final state, fail on FAILED or CANCELLED, and stop after --timeout (default 15 minutes). --stream restores the per-poll output.
  • Tools (MCP): scans_watch is removed. Poll with scans_get.

Soft-breaking

  • AI pentest profiles: GET reports schedule and cron as null.
  • Profile schemas: isActive is true for every schema attached to a profile.
  • Beta tags: 74 operations carry the Beta tag, 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 →

Questions?

Have a question? Reach out on your dedicated support channel, or email us at support@escape.tech.