# Referenz

Jede Operation der Lockpick-API mit ihrer Berechtigung, ihren Eingaben und ihrer Antwort, direkt aus der API selbst generiert. Version 1, in der Beta.

{/* Generated by scripts/docs-generate.mts. Do not edit; run `pnpm docs:generate`. */}

Version 1, in der Beta. Jeder Pfad beginnt mit `/api/cli/v1`, jede Anfrage trägt einen Schlüssel als Bearer-Token, und jede Antwort ist `{ data, error }`. Die gesamte Beschreibung gibt es auch als [OpenAPI 3.1](/openapi.json).

## Agent-API

Die Serveroperationen hinter den MCP-Werkzeugen. Neue Integrationen sollten diese nutzen. `lockpick_wait_for_scan` fragt `GET /agent/scans/{scanId}` wiederholt ab. `lockpick_evaluate_scan` liest denselben Scan und wendet die Bewertungsrichtlinie im Client an. Diese beiden zusammengesetzten Werkzeuge haben keinen eigenen HTTP-Endpunkt. Skripte können den Scan-Status abfragen und seinen Abschlusszeitpunkt, die Abdeckung und die Anzahl offener Befunde gegen ihre eigene Richtlinie prüfen.

### GET /agent/me

Die Person, der Arbeitsbereich, die Berechtigungen und das Ablaufdatum dieser Zugangsdaten sowie was sie starten können.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_whoami`](/de/docs/mcp/tools#lockpick_whoami)

**data**

| Feld           | Typ    | Immer vorhanden |
| -------------- | ------ | --------------- |
| `user`         | object | Ja              |
| `workspace`    | object | Ja              |
| `credential`   | object | Ja              |
| `capabilities` | object | Ja              |

### GET /agent/allowance

Kostenlose Scans, die diesen Monat noch übrig sind, ihre Rücksetzdaten und Guthaben.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_get_allowance`](/de/docs/mcp/tools#lockpick_get_allowance)

**data**

| Feld                | Typ                                                                          | Immer vorhanden |
| ------------------- | ---------------------------------------------------------------------------- | --------------- |
| `accessSource`      | `community`, `stripe` (alter Abrechnungswert), `pilot` (alt, intern), `none` | Ja              |
| `accountingMode`    | `pilot` (alt, intern), `credits` (alt, intern), `unmetered`                  | Ja              |
| `pulse`             | object                                                                       | Ja              |
| `deep`              | object                                                                       | Ja              |
| `creditBalance`     | integer or null                                                              | Ja              |
| `freeSiteId`        | string or null                                                               | Ja              |
| `freeSiteVisible`   | boolean                                                                      | Ja              |
| `canSwitchFreeSite` | boolean                                                                      | Ja              |

### GET /agent/monitor

Aktuelle Sicherheitsinformationen durchsuchen und Treffer für berechtigte Websites erklären.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_monitor`](/de/docs/mcp/tools#lockpick_monitor)

**Abfrageparameter**

| Feld         | Typ                                                   | Pflicht |
| ------------ | ----------------------------------------------------- | ------- |
| `view`       | `latest`, `sites`, `exploited`, `following`           | Nein    |
| `kind`       | `all`, `vulnerability`, `malicious_package`           | Nein    |
| `q`          | string                                                | Nein    |
| `ecosystem`  | `all`, `npm`, `pypi`, `composer`, `wordpress`         | Nein    |
| `severity`   | `all`, `critical`, `high`, `medium`, `low`, `unknown` | Nein    |
| `days`       | number                                                | Nein    |
| `cursor`     | string                                                | Nein    |
| `limit`      | integer                                               | Nein    |
| `siteId`     | string                                                | Nein    |
| `advisoryId` | string                                                | Nein    |

**data**

| Feld          | Typ            | Immer vorhanden |
| ------------- | -------------- | --------------- |
| `items`       | list of object | Ja              |
| `nextCursor`  | string or null | Ja              |
| `limitations` | list of string | Ja              |

**Jeder Eintrag**

| Feld          | Typ                                            | Immer vorhanden |
| ------------- | ---------------------------------------------- | --------------- |
| `id`          | string                                         | Ja              |
| `title`       | string                                         | Ja              |
| `source`      | string                                         | Ja              |
| `kind`        | `vulnerability`, `malicious_package`           | Ja              |
| `severity`    | `critical`, `high`, `medium`, `low`, `unknown` | Ja              |
| `provenance`  | list of object                                 | Ja              |
| `withdrawnAt` | string or null                                 | Nein            |
| `publishedAt` | string                                         | Ja              |
| `exploited`   | boolean                                        | Ja              |
| `ids`         | list of string                                 | Ja              |
| `tech`        | list of object                                 | Ja              |
| `epss`        | object or null                                 | Nein            |
| `cvss`        | object or null                                 | Nein            |
| `attribution` | string or null                                 | Ja              |
| `references`  | list of string                                 | Ja              |
| `packages`    | list of object                                 | Ja              |
| `sites`       | list of object                                 | Ja              |

### GET /agent/sites

Eine Seite mit Websites und ihren letzten Scans.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_list_sites`](/de/docs/mcp/tools#lockpick_list_sites)

**Abfrageparameter**

| Feld     | Typ     | Pflicht |
| -------- | ------- | ------- |
| `limit`  | integer | Nein    |
| `cursor` | string  | Nein    |

**data**

| Feld         | Typ            | Immer vorhanden |
| ------------ | -------------- | --------------- |
| `items`      | list of object | Ja              |
| `nextCursor` | string or null | Ja              |

**Jeder Eintrag**

| Feld          | Typ            | Immer vorhanden |
| ------------- | -------------- | --------------- |
| `id`          | string         | Ja              |
| `name`        | string         | Ja              |
| `status`      | string         | Ja              |
| `baseDomain`  | string or null | Ja              |
| `latestPulse` | object or null | Ja              |
| `latestDeep`  | object or null | Ja              |
| `latestBox`   | object or null | Ja              |
| `webPath`     | string         | Ja              |
| `webUrl`      | string         | Ja              |

### POST /agent/sites

Eine Website hinzufügen oder die Website mit dieser Adresse zurückgeben.

* Berechtigung: `sites`
* MCP-Werkzeug: [`lockpick_add_site`](/de/docs/mcp/tools#lockpick_add_site)

**Anfragetext**

| Feld             | Typ    | Pflicht |
| ---------------- | ------ | ------- |
| `url`            | string | Ja      |
| `name`           | string | Nein    |
| `idempotencyKey` | string | Ja      |

**data**

| Feld      | Typ     | Immer vorhanden |
| --------- | ------- | --------------- |
| `site`    | object  | Ja              |
| `created` | boolean | Ja              |

### GET /agent/sites/\{siteId}/status

Der Stand einer Website: ihre letzten Scans und was als Nächstes zu tun ist.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_site_status`](/de/docs/mcp/tools#lockpick_site_status)

**data**

| Feld             | Typ            | Immer vorhanden |
| ---------------- | -------------- | --------------- |
| `site`           | object         | Ja              |
| `latestPulse`    | object or null | Ja              |
| `latestDeep`     | object or null | Ja              |
| `latestBox`      | object or null | Ja              |
| `lastComparison` | object or null | Ja              |
| `caveats`        | list of string | Ja              |
| `relevant`       | list of object | Nein            |
| `relevantTotal`  | integer        | Nein            |

### POST /agent/sites/\{siteId}/dependencies

Die Paketnamen und genauen Versionen senden, die eine Website festlegt, niemals Code. Danach lesen Sie, welche Sicherheitshinweise sie betreffen.

* Berechtigung: `sites`
* MCP-Werkzeug: [`lockpick_send_dependencies`](/de/docs/mcp/tools#lockpick_send_dependencies)

**Anfragetext**

| Feld             | Typ                                                                                                                  | Pflicht |
| ---------------- | -------------------------------------------------------------------------------------------------------------------- | ------- |
| `inventory`      | object                                                                                                               | Nein    |
| `packages`       | list of object                                                                                                       | Ja      |
| `sources`        | list of `package-lock.json`, `npm-shrinkwrap.json`, `pnpm-lock.yaml`, `yarn.lock`, `requirements.txt`, `poetry.lock` | Ja      |
| `idempotencyKey` | string                                                                                                               | Ja      |

**data**

| Feld              | Typ                                                                                                                  | Immer vorhanden |
| ----------------- | -------------------------------------------------------------------------------------------------------------------- | --------------- |
| `siteId`          | string                                                                                                               | Ja              |
| `receivedAt`      | string or null                                                                                                       | Ja              |
| `sources`         | list of `package-lock.json`, `npm-shrinkwrap.json`, `pnpm-lock.yaml`, `yarn.lock`, `requirements.txt`, `poetry.lock` | Ja              |
| `packageCount`    | integer                                                                                                              | Ja              |
| `affectsYouCount` | integer                                                                                                              | Ja              |
| `affectsYou`      | list of object                                                                                                       | Ja              |
| `webUrl`          | string                                                                                                               | Ja              |

### POST /agent/sites/\{siteId}/pulse

Einen Pulse-Scan auf einer Website starten.

* Berechtigung: `pulse`
* MCP-Werkzeug: [`lockpick_start_pulse`](/de/docs/mcp/tools#lockpick_start_pulse)

**Anfragetext**

| Feld             | Typ    | Pflicht |
| ---------------- | ------ | ------- |
| `idempotencyKey` | string | Ja      |
| `baselineScanId` | string | Nein    |

**data**

| Feld        | Typ     | Immer vorhanden |
| ----------- | ------- | --------------- |
| `scan`      | object  | Ja              |
| `charged`   | object  | Ja              |
| `allowance` | object  | Ja              |
| `replayed`  | boolean | Ja              |

### POST /agent/sites/\{siteId}/deep-verifications

Vor einem Deep-Scan einen DNS- oder Datei-Eigentumsnachweis ausstellen.

* Berechtigung: `deep`
* MCP-Werkzeug: [`lockpick_start_deep_verification`](/de/docs/mcp/tools#lockpick_start_deep_verification)

**Anfragetext**

| Feld             | Typ                   | Pflicht |
| ---------------- | --------------------- | ------- |
| `method`         | `dns`, `file`, `meta` | Ja      |
| `idempotencyKey` | string                | Ja      |

**data**

| Feld                | Typ                                                      | Immer vorhanden |
| ------------------- | -------------------------------------------------------- | --------------- |
| `verificationId`    | string                                                   | Ja              |
| `siteId`            | string                                                   | Ja              |
| `origin`            | string                                                   | Ja              |
| `method`            | `dns`, `file`, `meta`                                    | Ja              |
| `state`             | `pending`, `verified`, `expired`, `exhausted`, `revoked` | Ja              |
| `expiresAt`         | string                                                   | Ja              |
| `verifiedUntil`     | string or null                                           | Ja              |
| `attemptsRemaining` | integer                                                  | Ja              |
| `retryAfterSeconds` | integer or null                                          | Ja              |
| `value`             | string                                                   | Ja              |
| `location`          | string                                                   | Ja              |

### POST /agent/sites/\{siteId}/deep-verifications/\{verificationId}/verify

Einen veröffentlichten Eigentumsnachweis prüfen. Jede Prüfung verbraucht einen seiner Versuche.

* Berechtigung: `deep`
* MCP-Werkzeug: [`lockpick_check_deep_verification`](/de/docs/mcp/tools#lockpick_check_deep_verification)

**data**

| Feld                | Typ                                                      | Immer vorhanden |
| ------------------- | -------------------------------------------------------- | --------------- |
| `verificationId`    | string                                                   | Ja              |
| `siteId`            | string                                                   | Ja              |
| `origin`            | string                                                   | Ja              |
| `method`            | `dns`, `file`, `meta`                                    | Ja              |
| `state`             | `pending`, `verified`, `expired`, `exhausted`, `revoked` | Ja              |
| `expiresAt`         | string                                                   | Ja              |
| `verifiedUntil`     | string or null                                           | Ja              |
| `attemptsRemaining` | integer                                                  | Ja              |
| `retryAfterSeconds` | integer or null                                          | Ja              |

### POST /agent/sites/\{siteId}/deep-operations

Einen Deep-Scan vorbereiten und den Link erhalten, über den die Person ihn freigibt.

* Berechtigung: `deep`
* MCP-Werkzeug: [`lockpick_prepare_deep`](/de/docs/mcp/tools#lockpick_prepare_deep)

**Anfragetext**

| Feld             | Typ    | Pflicht |
| ---------------- | ------ | ------- |
| `verificationId` | string | Ja      |
| `idempotencyKey` | string | Ja      |

**data**

| Feld              | Typ                                        | Immer vorhanden |
| ----------------- | ------------------------------------------ | --------------- |
| `operationId`     | string                                     | Ja              |
| `siteId`          | string                                     | Ja              |
| `origin`          | string                                     | Ja              |
| `assessmentLevel` | string                                     | Ja              |
| `verificationId`  | string                                     | Ja              |
| `cost`            | object                                     | Ja              |
| `allowance`       | object                                     | Ja              |
| `approvalState`   | `pending`, `approved`, `expired`, `denied` | Ja              |
| `approvalUrl`     | string                                     | Ja              |
| `expiresAt`       | string                                     | Ja              |

### POST /agent/deep-operations/\{operationId}/start

Einen von der Person freigegebenen Deep-Scan starten.

* Berechtigung: `deep`
* MCP-Werkzeug: [`lockpick_start_deep`](/de/docs/mcp/tools#lockpick_start_deep)

**data**

| Feld        | Typ     | Immer vorhanden |
| ----------- | ------- | --------------- |
| `scan`      | object  | Ja              |
| `charged`   | object  | Ja              |
| `allowance` | object  | Ja              |
| `replayed`  | boolean | Ja              |

### POST /agent/free-site-switch

Eine Website entfernen, damit der kostenlose Pulse-Scan dieses Monats zu einer anderen wechseln kann.

* Berechtigung: `sites` und `pulse`
* MCP-Werkzeug: [`lockpick_switch_free_site`](/de/docs/mcp/tools#lockpick_switch_free_site)

**Anfragetext**

| Feld             | Typ     | Pflicht |
| ---------------- | ------- | ------- |
| `removeSiteId`   | string  | Ja      |
| `checkId`        | string  | Nein    |
| `idempotencyKey` | string  | Ja      |
| `confirmRemoval` | boolean | Ja      |

**data**

| Feld                | Typ            | Immer vorhanden |
| ------------------- | -------------- | --------------- |
| `removedSiteId`     | string         | Ja              |
| `removedSiteHost`   | string         | Ja              |
| `replacementSiteId` | string or null | Ja              |
| `allowance`         | object         | Ja              |
| `restoreUrl`        | string         | Ja              |
| `startedScanId`     | string or null | Ja              |
| `charged`           | object         | Ja              |
| `replayed`          | boolean        | Ja              |

### GET /agent/scans

Eine Seite mit Scans, neueste zuerst, mit Filtern.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_list_scans`](/de/docs/mcp/tools#lockpick_list_scans)

**Abfrageparameter**

| Feld              | Typ                                                                                 | Pflicht |
| ----------------- | ----------------------------------------------------------------------------------- | ------- |
| `siteId`          | string                                                                              | Nein    |
| `kind`            | `pulse`, `box` (Deep, alter Name)                                                   | Nein    |
| `assessmentLevel` | `pulse`, `standard`, `deep`                                                         | Nein    |
| `status`          | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Nein    |
| `limit`           | integer                                                                             | Nein    |
| `cursor`          | string                                                                              | Nein    |

**data**

| Feld         | Typ            | Immer vorhanden |
| ------------ | -------------- | --------------- |
| `items`      | list of object | Ja              |
| `nextCursor` | string or null | Ja              |

**Jeder Eintrag**

| Feld                        | Typ                                                                                 | Immer vorhanden |
| --------------------------- | ----------------------------------------------------------------------------------- | --------------- |
| `id`                        | string                                                                              | Ja              |
| `kind`                      | `pulse`, `box` (Deep, alter Name)                                                   | Ja              |
| `projectId`                 | string                                                                              | Ja              |
| `target`                    | string                                                                              | Ja              |
| `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Ja              |
| `mode`                      | `autonomous`, `authenticated`, `active` or null                                     | Ja              |
| `createdAt`                 | string or null                                                                      | Ja              |
| `finishedAt`                | string or null                                                                      | Ja              |
| `webPath`                   | string                                                                              | Ja              |
| `assessmentLevel`           | `pulse`, `standard`, `deep` or null                                                 | Ja              |
| `headline`                  | object                                                                              | Ja              |
| `webUrl`                    | string                                                                              | Ja              |
| `suggestedPollAfterSeconds` | integer or null                                                                     | Ja              |

### GET /agent/scans/\{scanId}

Ein Scan mit seinem Status und seiner Zusammenfassung.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_get_scan`](/de/docs/mcp/tools#lockpick_get_scan)

**data**

| Feld                        | Typ                                                                                 | Immer vorhanden |
| --------------------------- | ----------------------------------------------------------------------------------- | --------------- |
| `id`                        | string                                                                              | Ja              |
| `kind`                      | `pulse`, `box` (Deep, alter Name)                                                   | Ja              |
| `projectId`                 | string                                                                              | Ja              |
| `target`                    | string                                                                              | Ja              |
| `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Ja              |
| `mode`                      | `autonomous`, `authenticated`, `active` or null                                     | Ja              |
| `createdAt`                 | string or null                                                                      | Ja              |
| `finishedAt`                | string or null                                                                      | Ja              |
| `webPath`                   | string                                                                              | Ja              |
| `assessmentLevel`           | `pulse`, `standard`, `deep` or null                                                 | Ja              |
| `headline`                  | object                                                                              | Ja              |
| `webUrl`                    | string                                                                              | Ja              |
| `suggestedPollAfterSeconds` | integer or null                                                                     | Ja              |
| `baselineRunId`             | string or null                                                                      | Ja              |
| `open`                      | object                                                                              | Ja              |
| `findingCount`              | integer                                                                             | Ja              |
| `progress`                  | object or null                                                                      | Ja              |
| `coverage`                  | object                                                                              | Ja              |
| `caveats`                   | list of string                                                                      | Ja              |
| `outcome`                   | object or null                                                                      | Ja              |
| `exposureCheck`             | object                                                                              | Nein            |

### GET /agent/scans/\{scanId}/findings

Eine Seite mit Befunden eines Scans.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_list_findings`](/de/docs/mcp/tools#lockpick_list_findings)
* Senden Sie `x-lockpick-agent-features: finding-code`, um den `code` jedes Befunds zu erhalten (`LP-` und sechs Zeichen, wie ihn der Web-Bericht zeigt). Ohne den Header enthält die Antwort keinen `code`, die Form, die ältere Clients erwarten.

**Abfrageparameter**

| Feld       | Typ                                           | Pflicht |
| ---------- | --------------------------------------------- | ------- |
| `state`    | `attention`, `information`, `unknown`, `pass` | Nein    |
| `severity` | `critical`, `high`, `medium`, `low`, `info`   | Nein    |
| `all`      | boolean or `true`, `false`                    | Nein    |
| `limit`    | integer                                       | Nein    |
| `cursor`   | string                                        | Nein    |

**data**

| Feld         | Typ            | Immer vorhanden |
| ------------ | -------------- | --------------- |
| `items`      | list of object | Ja              |
| `nextCursor` | string or null | Ja              |

**Jeder Eintrag**

| Feld                | Typ                                                   | Immer vorhanden |
| ------------------- | ----------------------------------------------------- | --------------- |
| `id`                | string                                                | Ja              |
| `code`              | string                                                | Nein            |
| `runId`             | string                                                | Ja              |
| `kind`              | `pulse`, `box` (Deep, alter Name)                     | Ja              |
| `severity`          | `critical`, `high`, `medium`, `low`, `info`           | Ja              |
| `state`             | `attention`, `information`, `unknown`, `pass`         | Ja              |
| `category`          | string                                                | Ja              |
| `title`             | string                                                | Ja              |
| `meaning`           | string                                                | Ja              |
| `fix`               | string or null                                        | Ja              |
| `confidence`        | string                                                | Ja              |
| `evidence`          | list of string                                        | Ja              |
| `sources`           | list of string                                        | Ja              |
| `steps`             | list of string                                        | Ja              |
| `webPath`           | string                                                | Ja              |
| `webUrl`            | string                                                | Ja              |
| `evidenceTrust`     | string                                                | Ja              |
| `evidenceTruncated` | boolean                                               | Ja              |
| `verdict`           | `confirmed`, `needs_review`, `not_actionable` or null | Nein            |
| `certainty`         | `high`, `medium`, `low` or null                       | Nein            |
| `exploitability`    | `direct`, `conditional`, `hygiene`, `none` or null    | Nein            |
| `proof`             | object or null                                        | Nein            |
| `proofGap`          | string or null                                        | Nein            |
| `urgency`           | `now`, `week`, `later`, `none`                        | Nein            |
| `howSure`           | `confirmed`, `likely`, `possible` or null             | Nein            |

### GET /agent/scans/\{scanId}/findings/\{findingId}

Ein Befund mit seinen geschwärzten Nachweisen.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_get_finding`](/de/docs/mcp/tools#lockpick_get_finding)
* Senden Sie `x-lockpick-agent-features: finding-code`, um den `code` jedes Befunds zu erhalten (`LP-` und sechs Zeichen, wie ihn der Web-Bericht zeigt). Ohne den Header enthält die Antwort keinen `code`, die Form, die ältere Clients erwarten.

**data**

| Feld                | Typ                                                   | Immer vorhanden |
| ------------------- | ----------------------------------------------------- | --------------- |
| `id`                | string                                                | Ja              |
| `code`              | string                                                | Nein            |
| `runId`             | string                                                | Ja              |
| `kind`              | `pulse`, `box` (Deep, alter Name)                     | Ja              |
| `severity`          | `critical`, `high`, `medium`, `low`, `info`           | Ja              |
| `state`             | `attention`, `information`, `unknown`, `pass`         | Ja              |
| `category`          | string                                                | Ja              |
| `title`             | string                                                | Ja              |
| `meaning`           | string                                                | Ja              |
| `fix`               | string or null                                        | Ja              |
| `confidence`        | string                                                | Ja              |
| `evidence`          | list of string                                        | Ja              |
| `sources`           | list of string                                        | Ja              |
| `steps`             | list of string                                        | Ja              |
| `webPath`           | string                                                | Ja              |
| `webUrl`            | string                                                | Ja              |
| `evidenceTrust`     | string                                                | Ja              |
| `evidenceTruncated` | boolean                                               | Ja              |
| `verdict`           | `confirmed`, `needs_review`, `not_actionable` or null | Nein            |
| `certainty`         | `high`, `medium`, `low` or null                       | Nein            |
| `exploitability`    | `direct`, `conditional`, `hygiene`, `none` or null    | Nein            |
| `proof`             | object or null                                        | Nein            |
| `proofGap`          | string or null                                        | Nein            |
| `urgency`           | `now`, `week`, `later`, `none`                        | Nein            |
| `howSure`           | `confirmed`, `likely`, `possible` or null             | Nein            |

### GET /agent/scans/\{scanId}/repair-brief

Ein Teil der Korrekturanleitung eines Scans.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_get_repair_brief`](/de/docs/mcp/tools#lockpick_get_repair_brief)

**Abfrageparameter**

| Feld        | Typ                                                                                       | Pflicht |
| ----------- | ----------------------------------------------------------------------------------------- | ------- |
| `findingId` | string                                                                                    | Nein    |
| `agent`     | `claude-code`, `codex`, `cursor`, `vscode`, `opencode`, `lovable`, `bolt`, `replit`, `v0` | Nein    |
| `cursor`    | string                                                                                    | Nein    |

**data**

| Feld         | Typ            | Immer vorhanden |
| ------------ | -------------- | --------------- |
| `scanId`     | string         | Ja              |
| `findingIds` | list of string | Ja              |
| `saved`      | boolean        | Ja              |
| `markdown`   | string         | Ja              |
| `nextCursor` | string or null | Ja              |
| `complete`   | boolean        | Ja              |
| `webUrl`     | string         | Ja              |

### GET /agent/scans/\{scanId}/comparison

Was sich zwischen einem Scan und dem Scan geändert hat, den er erneut prüft.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_compare_scans`](/de/docs/mcp/tools#lockpick_compare_scans)
* Senden Sie `x-lockpick-agent-features: finding-code`, um den `code` jedes Befunds zu erhalten (`LP-` und sechs Zeichen, wie ihn der Web-Bericht zeigt). Ohne den Header enthält die Antwort keinen `code`, die Form, die ältere Clients erwarten.

**data**

| Feld            | Typ            | Immer vorhanden |
| --------------- | -------------- | --------------- |
| `runId`         | string         | Ja              |
| `baselineRunId` | string         | Ja              |
| `error`         | string or null | Ja              |
| `changes`       | list of object | Ja              |
| `webUrl`        | string         | Ja              |

### POST /agent/scans/\{scanId}/dns-rechecks

Die kostenlose DNS-Prüfung für einen Scan erneut ausführen. Es wird nichts an die Website gesendet.

* Berechtigung: `pulse`
* MCP-Werkzeug: [`lockpick_recheck_dns`](/de/docs/mcp/tools#lockpick_recheck_dns)

**Anfragetext**

| Feld             | Typ    | Pflicht |
| ---------------- | ------ | ------- |
| `findingId`      | string | Ja      |
| `idempotencyKey` | string | Ja      |

**data**

| Feld                     | Typ            | Immer vorhanden |
| ------------------------ | -------------- | --------------- |
| `scanId`                 | string         | Ja              |
| `findingIds`             | list of string | Ja              |
| `pending`                | object or null | Ja              |
| `checkedAt`              | string or null | Ja              |
| `outcomes`               | list of object | Ja              |
| `nextAllowedAt`          | string or null | Ja              |
| `failedAt`               | string or null | Ja              |
| `originalGradeUnchanged` | boolean        | Ja              |

### GET /agent/scans/\{scanId}/dns-rechecks/latest

Die letzte kostenlose erneute DNS-Prüfung eines Scans.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_get_dns_recheck`](/de/docs/mcp/tools#lockpick_get_dns_recheck)

**data**

| Feld                     | Typ            | Immer vorhanden |
| ------------------------ | -------------- | --------------- |
| `scanId`                 | string         | Ja              |
| `findingIds`             | list of string | Ja              |
| `pending`                | object or null | Ja              |
| `checkedAt`              | string or null | Ja              |
| `outcomes`               | list of object | Ja              |
| `nextAllowedAt`          | string or null | Ja              |
| `failedAt`               | string or null | Ja              |
| `originalGradeUnchanged` | boolean        | Ja              |

### POST /agent/quick-checks

Einen kostenlosen Schnellcheck einer Startseite starten.

* Berechtigung: `pulse`
* MCP-Werkzeug: [`lockpick_quick_check`](/de/docs/mcp/tools#lockpick_quick_check)

**Anfragetext**

| Feld             | Typ    | Pflicht |
| ---------------- | ------ | ------- |
| `url`            | string | Ja      |
| `idempotencyKey` | string | Ja      |

**data**

| Feld                        | Typ                                        | Immer vorhanden |
| --------------------------- | ------------------------------------------ | --------------- |
| `checkId`                   | string                                     | Ja              |
| `status`                    | `queued`, `running`, `succeeded`, `failed` | Ja              |
| `reused`                    | boolean                                    | Ja              |
| `headline`                  | object                                     | Ja              |
| `summary`                   | string or null                             | Ja              |
| `checks`                    | list of object                             | Ja              |
| `webUrl`                    | string                                     | Ja              |
| `suggestedPollAfterSeconds` | integer or null                            | Ja              |

### POST /agent/repository-checks

Prüfen Sie ein öffentliches GitHub-Repository (einen Skill, ein Plugin, einen MCP-Server oder eine App), bevor Sie es installieren.

* Berechtigung: `pulse`
* MCP-Werkzeug: [`lockpick_check_repository`](/de/docs/mcp/tools#lockpick_check_repository)

**Anfragetext**

| Feld             | Typ            | Pflicht |
| ---------------- | -------------- | ------- |
| `url`            | string         | Ja      |
| `mode`           | `skill`, `app` | Nein    |
| `depth`          | `free`, `deep` | Nein    |
| `idempotencyKey` | string         | Ja      |

**data**

| Feld                        | Typ                                                                                                                  | Immer vorhanden |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------- | --------------- |
| `checkId`                   | string                                                                                                               | Ja              |
| `status`                    | `queued`, `running`, `succeeded`, `failed`                                                                           | Ja              |
| `reused`                    | boolean                                                                                                              | Ja              |
| `repository`                | object                                                                                                               | Ja              |
| `mode`                      | `skill`, `app` or null                                                                                               | Ja              |
| `kind`                      | string or null                                                                                                       | Ja              |
| `verdict`                   | `safe`, `caution`, `do_not_install` or null                                                                          | Ja              |
| `appRisk`                   | `low`, `elevated`, `high` or null                                                                                    | Ja              |
| `score`                     | integer or null                                                                                                      | Ja              |
| `summary`                   | string or null                                                                                                       | Ja              |
| `plainSummary`              | string or null                                                                                                       | Ja              |
| `findings`                  | list of object                                                                                                       | Ja              |
| `moreFindings`              | integer                                                                                                              | Ja              |
| `coverage`                  | object or null                                                                                                       | Ja              |
| `failure`                   | `not-found`, `ref-not-found`, `empty`, `too-large`, `rate-limited`, `unavailable`, `timeout`, `engine-error` or null | Ja              |
| `webUrl`                    | string                                                                                                               | Ja              |
| `suggestedPollAfterSeconds` | integer or null                                                                                                      | Ja              |

### GET /agent/repository-checks/\{checkId}

Eine Repository-Prüfung und ihre Befunde.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_get_repository_check`](/de/docs/mcp/tools#lockpick_get_repository_check)

**data**

| Feld                        | Typ                                                                                                                  | Immer vorhanden |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------- | --------------- |
| `checkId`                   | string                                                                                                               | Ja              |
| `status`                    | `queued`, `running`, `succeeded`, `failed`                                                                           | Ja              |
| `reused`                    | boolean                                                                                                              | Ja              |
| `repository`                | object                                                                                                               | Ja              |
| `mode`                      | `skill`, `app` or null                                                                                               | Ja              |
| `kind`                      | string or null                                                                                                       | Ja              |
| `verdict`                   | `safe`, `caution`, `do_not_install` or null                                                                          | Ja              |
| `appRisk`                   | `low`, `elevated`, `high` or null                                                                                    | Ja              |
| `score`                     | integer or null                                                                                                      | Ja              |
| `summary`                   | string or null                                                                                                       | Ja              |
| `plainSummary`              | string or null                                                                                                       | Ja              |
| `findings`                  | list of object                                                                                                       | Ja              |
| `moreFindings`              | integer                                                                                                              | Ja              |
| `coverage`                  | object or null                                                                                                       | Ja              |
| `failure`                   | `not-found`, `ref-not-found`, `empty`, `too-large`, `rate-limited`, `unavailable`, `timeout`, `engine-error` or null | Ja              |
| `webUrl`                    | string                                                                                                               | Ja              |
| `suggestedPollAfterSeconds` | integer or null                                                                                                      | Ja              |

### GET /agent/quick-checks/\{checkId}

Ein Schnellcheck und sein Ergebnis.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_get_quick_check`](/de/docs/mcp/tools#lockpick_get_quick_check)

**data**

| Feld                        | Typ                                        | Immer vorhanden |
| --------------------------- | ------------------------------------------ | --------------- |
| `checkId`                   | string                                     | Ja              |
| `status`                    | `queued`, `running`, `succeeded`, `failed` | Ja              |
| `reused`                    | boolean                                    | Ja              |
| `headline`                  | object                                     | Ja              |
| `summary`                   | string or null                             | Ja              |
| `checks`                    | list of object                             | Ja              |
| `webUrl`                    | string                                     | Ja              |
| `suggestedPollAfterSeconds` | integer or null                            | Ja              |

### GET /agent/docs/search

Die öffentliche Dokumentation von Lockpick durchsuchen.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_search_docs`](/de/docs/mcp/tools#lockpick_search_docs)

**Abfrageparameter**

| Feld    | Typ     | Pflicht |
| ------- | ------- | ------- |
| `query` | string  | Ja      |
| `limit` | integer | Nein    |

**data**

| Feld      | Typ            | Immer vorhanden |
| --------- | -------------- | --------------- |
| `query`   | string         | Ja              |
| `results` | list of object | Ja              |

### GET /agent/docs/page

Eine öffentliche Dokumentationsseite als Markdown, bei langen Seiten in Teilen.

* Berechtigung: `read`
* MCP-Werkzeug: [`lockpick_read_doc`](/de/docs/mcp/tools#lockpick_read_doc)

**Abfrageparameter**

| Feld     | Typ    | Pflicht |
| -------- | ------ | ------- |
| `path`   | string | Nein    |
| `cursor` | string | Nein    |

**data**

| Feld          | Typ            | Immer vorhanden |
| ------------- | -------------- | --------------- |
| `path`        | string         | Ja              |
| `title`       | string         | Ja              |
| `description` | string or null | Ja              |
| `url`         | string         | Ja              |
| `markdownUrl` | string         | Ja              |
| `markdown`    | string         | Ja              |
| `nextCursor`  | string or null | Ja              |
| `complete`    | boolean        | Ja              |

## Geräteanmeldung

So bekommt `lockpick login` einen Schlüssel: Es fragt nach einem Code, die Person bestätigt ihn im Browser, und das Abfragen liefert den Schlüssel zurück.

### POST /device/code

Eine Geräteanmeldung starten und einen Code erhalten, den die Person im Browser bestätigt.

* Berechtigung: keine, Teil der Anmeldung

**Anfragetext**

| Feld         | Typ                                       | Pflicht |
| ------------ | ----------------------------------------- | ------- |
| `clientName` | string                                    | Nein    |
| `hostname`   | string                                    | Nein    |
| `platform`   | string                                    | Nein    |
| `version`    | string                                    | Nein    |
| `scopes`     | list of `pulse`, `sites`, `deep`, `local` | Nein    |

**data**

| Feld                      | Typ     | Immer vorhanden |
| ------------------------- | ------- | --------------- |
| `deviceCode`              | string  | Ja              |
| `userCode`                | string  | Ja              |
| `verificationUri`         | string  | Ja              |
| `verificationUriComplete` | string  | Ja              |
| `expiresIn`               | integer | Ja              |
| `interval`                | integer | Ja              |

### POST /device/token

Die Geräteanmeldung abfragen, bis die Person sie bestätigt, und dann den Schlüssel erhalten.

* Berechtigung: keine, Teil der Anmeldung

**Anfragetext**

| Feld         | Typ    | Pflicht |
| ------------ | ------ | ------- |
| `deviceCode` | string | Ja      |

## Veraltet

Die ursprünglichen CLI-Routen, die CLI 0.2 nutzt. Sie bleiben unverändert. Neue Integrationen sollten die oben beschriebene Agent-API nutzen.

<details>
  <summary>
    Ursprüngliche CLI-Routen
  </summary>

  **POST /projects/\{projectId}/local-assessments/authorize**

  Eine lokale Prüfung vor der Untersuchung des Repositorys autorisieren. Quellcode und Ergebnisse werden nicht hochgeladen.

  * Berechtigung: `local`

  **Anfragetext**

  | Feld                  | Typ                                                                                                                                                                                                | Pflicht |
  | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
  | `cliVersion`          | string                                                                                                                                                                                             | Ja      |
  | `scannerVersion`      | string                                                                                                                                                                                             | Ja      |
  | `rulesetVersion`      | string                                                                                                                                                                                             | Ja      |
  | `reportSchemaVersion` | string                                                                                                                                                                                             | Ja      |
  | `checks`              | list of `tracked-secrets`, `public-environment`, `browser-artifacts`, `supabase-client`, `supabase-migrations`, `git-history`, `docker-files`, `docker-values`, `actions-injection`, `source-maps` | Ja      |

  **data**

  | Feld            | Typ            | Immer vorhanden |
  | --------------- | -------------- | --------------- |
  | `admissionId`   | string         | Ja              |
  | `projectId`     | string         | Ja              |
  | `workspaceId`   | string         | Ja              |
  | `policyVersion` | string         | Ja              |
  | `startBy`       | string         | Ja              |
  | `checks`        | list of object | Ja              |

  **GET /me**

  Die Person, der Arbeitsbereich und der Schlüssel hinter diesen Zugangsdaten.

  * Berechtigung: `read`

  **data**

  | Feld        | Typ    | Immer vorhanden |
  | ----------- | ------ | --------------- |
  | `user`      | object | Ja              |
  | `workspace` | object | Ja              |
  | `key`       | object | Ja              |

  **DELETE /me**

  Widerruft den vorgelegten Schlüssel.

  * Berechtigung: jeder gültige Schlüssel

  **data**

  | Feld      | Typ     | Immer vorhanden |
  | --------- | ------- | --------------- |
  | `revoked` | boolean | Ja              |

  **GET /projects**

  Websites (Projekte) mit ihren letzten Pulse- und Deep-Scans.

  * Berechtigung: `read`

  **Jeder Eintrag in data**

  | Feld          | Typ            | Immer vorhanden |
  | ------------- | -------------- | --------------- |
  | `id`          | string         | Ja              |
  | `name`        | string         | Ja              |
  | `status`      | string         | Ja              |
  | `baseDomain`  | string or null | Ja              |
  | `latestPulse` | object or null | Ja              |
  | `latestDeep`  | object or null | Nein            |
  | `latestBox`   | object or null | Ja              |
  | `webPath`     | string         | Ja              |
  | `webUrl`      | string         | Nein            |

  **GET /projects/\{projectId}/status**

  Die letzten Ergebnisse einer Website und was sich geändert hat.

  * Berechtigung: `read`

  **data**

  | Feld             | Typ            | Immer vorhanden |
  | ---------------- | -------------- | --------------- |
  | `project`        | object         | Ja              |
  | `latestPulse`    | object or null | Ja              |
  | `latestDeep`     | object or null | Nein            |
  | `latestBox`      | object or null | Ja              |
  | `lastComparison` | object or null | Ja              |
  | `caveats`        | list of string | Ja              |

  **POST /projects/\{projectId}/pulse**

  Startet einen Pulse-Scan für eine Website oder eine erneute Prüfung ihres letzten Pulse-Scans.

  * Berechtigung: `pulse`
  * Antwortet mit 201, wenn es funktioniert

  **Anfragetext**

  | Feld             | Typ    | Pflicht |
  | ---------------- | ------ | ------- |
  | `idempotencyKey` | string | Ja      |

  **data**

  | Feld                        | Typ                                                                                 | Immer vorhanden |
  | --------------------------- | ----------------------------------------------------------------------------------- | --------------- |
  | `id`                        | string                                                                              | Ja              |
  | `kind`                      | `pulse`, `box` (Deep, alter Name)                                                   | Ja              |
  | `projectId`                 | string                                                                              | Ja              |
  | `target`                    | string                                                                              | Ja              |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Ja              |
  | `mode`                      | `autonomous`, `authenticated`, `active` or null                                     | Ja              |
  | `createdAt`                 | string or null                                                                      | Ja              |
  | `finishedAt`                | string or null                                                                      | Ja              |
  | `webPath`                   | string                                                                              | Ja              |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` or null                                                 | Nein            |
  | `headline`                  | object                                                                              | Nein            |
  | `webUrl`                    | string                                                                              | Nein            |
  | `suggestedPollAfterSeconds` | integer or null                                                                     | Nein            |
  | `baselineRunId`             | string or null                                                                      | Ja              |
  | `open`                      | object                                                                              | Ja              |
  | `findingCount`              | integer                                                                             | Ja              |
  | `progress`                  | object or null                                                                      | Ja              |
  | `coverage`                  | object                                                                              | Ja              |
  | `caveats`                   | list of string                                                                      | Ja              |
  | `outcome`                   | object or null                                                                      | Nein            |
  | `exposureCheck`             | object or null                                                                      | Nein            |

  **POST /projects/\{projectId}/deep**

  Startet den Deep-Scan eines Releases mit einem CI-Schlüssel, der für diese Website erstellt wurde und Deep erlaubt.

  * Berechtigung: `deep`
  * Antwortet mit 201, wenn es funktioniert

  **Anfragetext**

  | Feld             | Typ    | Pflicht |
  | ---------------- | ------ | ------- |
  | `idempotencyKey` | string | Ja      |

  **data**

  | Feld                        | Typ                                                                                 | Immer vorhanden |
  | --------------------------- | ----------------------------------------------------------------------------------- | --------------- |
  | `id`                        | string                                                                              | Ja              |
  | `kind`                      | `pulse`, `box` (Deep, alter Name)                                                   | Ja              |
  | `projectId`                 | string                                                                              | Ja              |
  | `target`                    | string                                                                              | Ja              |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Ja              |
  | `mode`                      | `autonomous`, `authenticated`, `active` or null                                     | Ja              |
  | `createdAt`                 | string or null                                                                      | Ja              |
  | `finishedAt`                | string or null                                                                      | Ja              |
  | `webPath`                   | string                                                                              | Ja              |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` or null                                                 | Nein            |
  | `headline`                  | object                                                                              | Nein            |
  | `webUrl`                    | string                                                                              | Nein            |
  | `suggestedPollAfterSeconds` | integer or null                                                                     | Nein            |
  | `baselineRunId`             | string or null                                                                      | Ja              |
  | `open`                      | object                                                                              | Ja              |
  | `findingCount`              | integer                                                                             | Ja              |
  | `progress`                  | object or null                                                                      | Ja              |
  | `coverage`                  | object                                                                              | Ja              |
  | `caveats`                   | list of string                                                                      | Ja              |
  | `outcome`                   | object or null                                                                      | Nein            |
  | `exposureCheck`             | object or null                                                                      | Nein            |

  **GET /runs**

  Pulse- und Deep-Scans, neueste zuerst.

  * Berechtigung: `read`

  **Abfrageparameter**

  | Feld              | Typ                                                                                 | Pflicht |
  | ----------------- | ----------------------------------------------------------------------------------- | ------- |
  | `projectId`       | string                                                                              | Nein    |
  | `kind`            | `pulse`, `box` (Deep, alter Name)                                                   | Nein    |
  | `assessmentLevel` | `pulse`, `standard`, `deep`                                                         | Nein    |
  | `status`          | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Nein    |
  | `limit`           | integer                                                                             | Nein    |

  **Jeder Eintrag in data**

  | Feld                        | Typ                                                                                 | Immer vorhanden |
  | --------------------------- | ----------------------------------------------------------------------------------- | --------------- |
  | `id`                        | string                                                                              | Ja              |
  | `kind`                      | `pulse`, `box` (Deep, alter Name)                                                   | Ja              |
  | `projectId`                 | string                                                                              | Ja              |
  | `target`                    | string                                                                              | Ja              |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Ja              |
  | `mode`                      | `autonomous`, `authenticated`, `active` or null                                     | Ja              |
  | `createdAt`                 | string or null                                                                      | Ja              |
  | `finishedAt`                | string or null                                                                      | Ja              |
  | `webPath`                   | string                                                                              | Ja              |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` or null                                                 | Nein            |
  | `headline`                  | object                                                                              | Nein            |
  | `webUrl`                    | string                                                                              | Nein            |
  | `suggestedPollAfterSeconds` | integer or null                                                                     | Nein            |

  **GET /runs/\{runId}**

  Ein Lauf mit seiner Zusammenfassung und seinen Zählwerten.

  * Berechtigung: `read`

  **data**

  | Feld                        | Typ                                                                                 | Immer vorhanden |
  | --------------------------- | ----------------------------------------------------------------------------------- | --------------- |
  | `id`                        | string                                                                              | Ja              |
  | `kind`                      | `pulse`, `box` (Deep, alter Name)                                                   | Ja              |
  | `projectId`                 | string                                                                              | Ja              |
  | `target`                    | string                                                                              | Ja              |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Ja              |
  | `mode`                      | `autonomous`, `authenticated`, `active` or null                                     | Ja              |
  | `createdAt`                 | string or null                                                                      | Ja              |
  | `finishedAt`                | string or null                                                                      | Ja              |
  | `webPath`                   | string                                                                              | Ja              |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` or null                                                 | Nein            |
  | `headline`                  | object                                                                              | Nein            |
  | `webUrl`                    | string                                                                              | Nein            |
  | `suggestedPollAfterSeconds` | integer or null                                                                     | Nein            |
  | `baselineRunId`             | string or null                                                                      | Ja              |
  | `open`                      | object                                                                              | Ja              |
  | `findingCount`              | integer                                                                             | Ja              |
  | `progress`                  | object or null                                                                      | Ja              |
  | `coverage`                  | object                                                                              | Ja              |
  | `caveats`                   | list of string                                                                      | Ja              |
  | `outcome`                   | object or null                                                                      | Nein            |
  | `exposureCheck`             | object or null                                                                      | Nein            |

  **GET /runs/\{runId}/findings**

  Befunde eines Laufs.

  * Berechtigung: `read`

  **Abfrageparameter**

  | Feld       | Typ                                           | Pflicht |
  | ---------- | --------------------------------------------- | ------- |
  | `severity` | `critical`, `high`, `medium`, `low`, `info`   | Nein    |
  | `state`    | `attention`, `information`, `unknown`, `pass` | Nein    |
  | `all`      | `true`, `false`                               | Nein    |

  **Jeder Eintrag in data**

  | Feld             | Typ                                                   | Immer vorhanden |
  | ---------------- | ----------------------------------------------------- | --------------- |
  | `id`             | string                                                | Ja              |
  | `code`           | string                                                | Nein            |
  | `runId`          | string                                                | Ja              |
  | `kind`           | `pulse`, `box` (Deep, alter Name)                     | Ja              |
  | `severity`       | `critical`, `high`, `medium`, `low`, `info`           | Ja              |
  | `state`          | `attention`, `information`, `unknown`, `pass`         | Ja              |
  | `category`       | string                                                | Ja              |
  | `title`          | string                                                | Ja              |
  | `meaning`        | string                                                | Ja              |
  | `fix`            | string or null                                        | Ja              |
  | `confidence`     | string                                                | Ja              |
  | `evidence`       | list of string                                        | Ja              |
  | `sources`        | list of string                                        | Ja              |
  | `steps`          | list of string                                        | Ja              |
  | `webPath`        | string                                                | Ja              |
  | `webUrl`         | string                                                | Nein            |
  | `verdict`        | `confirmed`, `needs_review`, `not_actionable` or null | Nein            |
  | `certainty`      | `high`, `medium`, `low` or null                       | Nein            |
  | `exploitability` | `direct`, `conditional`, `hygiene`, `none` or null    | Nein            |
  | `proof`          | object or null                                        | Nein            |
  | `proofGap`       | string or null                                        | Nein            |
  | `urgency`        | `now`, `week`, `later`, `none`                        | Nein            |
  | `howSure`        | `confirmed`, `likely`, `possible` or null             | Nein            |

  **GET /runs/\{runId}/findings/\{findingId}**

  Ein Befund mit seinen geschwärzten Nachweisen.

  * Berechtigung: `read`

  **data**

  | Feld             | Typ                                                   | Immer vorhanden |
  | ---------------- | ----------------------------------------------------- | --------------- |
  | `id`             | string                                                | Ja              |
  | `code`           | string                                                | Nein            |
  | `runId`          | string                                                | Ja              |
  | `kind`           | `pulse`, `box` (Deep, alter Name)                     | Ja              |
  | `severity`       | `critical`, `high`, `medium`, `low`, `info`           | Ja              |
  | `state`          | `attention`, `information`, `unknown`, `pass`         | Ja              |
  | `category`       | string                                                | Ja              |
  | `title`          | string                                                | Ja              |
  | `meaning`        | string                                                | Ja              |
  | `fix`            | string or null                                        | Ja              |
  | `confidence`     | string                                                | Ja              |
  | `evidence`       | list of string                                        | Ja              |
  | `sources`        | list of string                                        | Ja              |
  | `steps`          | list of string                                        | Ja              |
  | `webPath`        | string                                                | Ja              |
  | `webUrl`         | string                                                | Nein            |
  | `verdict`        | `confirmed`, `needs_review`, `not_actionable` or null | Nein            |
  | `certainty`      | `high`, `medium`, `low` or null                       | Nein            |
  | `exploitability` | `direct`, `conditional`, `hygiene`, `none` or null    | Nein            |
  | `proof`          | object or null                                        | Nein            |
  | `proofGap`       | string or null                                        | Nein            |
  | `urgency`        | `now`, `week`, `later`, `none`                        | Nein            |
  | `howSure`        | `confirmed`, `likely`, `possible` or null             | Nein            |

  **GET /runs/\{runId}/repair-brief**

  Die Korrekturen eines Laufs als eine Markdown-Anleitung.

  * Berechtigung: `read`

  **Abfrageparameter**

  | Feld        | Typ                                                                                       | Pflicht |
  | ----------- | ----------------------------------------------------------------------------------------- | ------- |
  | `findingId` | string                                                                                    | Nein    |
  | `agent`     | `claude-code`, `codex`, `cursor`, `vscode`, `opencode`, `lovable`, `bolt`, `replit`, `v0` | Nein    |

  **data**

  | Feld         | Typ            | Immer vorhanden |
  | ------------ | -------------- | --------------- |
  | `runId`      | string         | Ja              |
  | `findingIds` | list of string | Ja              |
  | `saved`      | boolean        | Ja              |
  | `markdown`   | string         | Ja              |
  | `webUrl`     | string         | Nein            |

  **GET /runs/\{runId}/comparison**

  Was sich zwischen einem Lauf und dem vorherigen geändert hat.

  * Berechtigung: `read`

  **data**

  | Feld            | Typ            | Immer vorhanden |
  | --------------- | -------------- | --------------- |
  | `runId`         | string         | Ja              |
  | `baselineRunId` | string         | Ja              |
  | `error`         | string or null | Ja              |
  | `changes`       | list of object | Ja              |
  | `webUrl`        | string         | Nein            |
</details>