Skip to main content
Use GET /v1/findings (API key) or the MCP list_findings tool (OAuth) to browse findings programmatically. Both surfaces use the same filters and return the same summary fields.

List findings

Query parameters

Response

Each item in findings includes: The response also includes total, limit, offset, and next_cursor for pagination. Use offset until offset + len(findings) >= total; next_cursor is an opaque pagination marker.

Match the dashboard

The MindFort UI uses tabs and filters that map to API parameters:
Without exclude_secured=true, list results include informational secured probe findings (severity=secured) that the dashboard hides on the default Open tab. This is the most common reason API or MCP counts look higher than the UI.

Examples

Vulnerabilities for a target (matches default Open tab):
Findings from a specific assessment:
Archived findings:

Get finding details

Returns full fields including description, impact, evidence, approach, remediation_advice, status, and retest decision context. Use retest_status to interpret the current run:
  • QUEUED: accepted but not yet executing
  • RUNNING: execution is in progress
  • FAILED: execution could not complete; inspect retest_failure_reason
  • COMPLETED: validation finished and its result was applied to the finding lifecycle

Update status

Valid values: ACTIVE, RESOLVED, ARCHIVED. When status is RESOLVED, you may include resolve_reason (FIX or WONT_FIX) and optional resolve_context (max 2000 characters). Bulk updates are available at POST /v1/findings/status with up to 50 finding_ids.

Override severity

Accepted values: critical, high, medium, low, secured. Pass null to clear an override. info is accepted only as a deprecated alias for secured.

Retest a finding

Starts an asynchronous retest for an ACTIVE, RESOLVED, or ARCHIVED finding. The request fails if another retest is already queued or running. Poll GET /v1/findings/{finding_id} after admission. When the retest completes, MindFort applies the validation result:
  • A fixed finding becomes RESOLVED.
  • A finding that remains vulnerable becomes ACTIVE.
  • An execution failure leaves the security outcome unchanged and populates retest_failure_reason.
Retest RUNNING and FAILED transitions update the finding’s updated_at, so change-based consumers can observe them.

Comments

Edit with PATCH /v1/findings/{finding_id}/comments/{comment_id} and delete with DELETE /v1/findings/{finding_id}/comments/{comment_id}.

Patch summaries

Returns findings that have patch activity, including pr_url, patch_status, and patch_state. Use assigned_to_me=true to restrict to the current user’s findings or search to match finding ID, title, description, endpoint, or impact. Authorized organizations receive the stored GitHub pull-request URL, including private repository URLs. Patch activity is independent of finding lifecycle status.

Analytics

Finding analytics endpoints accept an optional target_id. Omit it for organization-wide metrics. GET /v1/findings/severity-score-history accepts granularity (day, week, or month), and remediation metrics additionally accept optional inclusive from and to dates. Target health score is available at GET /v1/targets/{target_id}/health-score.

MCP

The MCP guide exposes the same semantic filters on the list_findings tool. Pass target_id, assessment_id, status, exclude_secured, severity, sort_by, order_direction, search, or assignment filters; MCP collection tools use an opaque cursor rather than a raw offset. After a server update, you do not need to reinstall MCP — keep the same https://api.mindfort.app/mcp URL and restart your agent or start a new chat so it picks up the latest tool schema.