# Referencia

Cada operación de la API de Lockpick, su permiso, sus entradas y su respuesta, generados desde la propia API. Versión 1, en beta.

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

Versión 1, en beta. Cada ruta empieza con `/api/cli/v1`, cada solicitud lleva una clave como token bearer, y cada respuesta es `{ data, error }`. Toda la descripción también está en [OpenAPI 3.1](https://www.lockpick.app/openapi.json).

## API de agentes

Las operaciones del servidor detrás de las herramientas MCP alojadas. Las nuevas integraciones deberían usar estas. `lockpick_wait_for_scan` consulta `GET /agent/scans/{scanId}`; `lockpick_evaluate_scan` lee ese mismo escaneo y aplica la política de evaluación en el cliente. Estas dos herramientas compuestas no tienen un endpoint HTTP propio. Los scripts pueden consultar el estado del escaneo y evaluar su hora de finalización, cobertura y número de hallazgos abiertos según su política.

### GET /agent/me

La persona, el espacio de trabajo, los ámbitos y la caducidad de esta credencial, y lo que puede iniciar.

* Permiso: `read`
* Herramienta MCP: [`lockpick_whoami`](/es/mcp/tools#lockpick_whoami)

**data**

| Campo          | Tipo   | Siempre presente |
| -------------- | ------ | ---------------- |
| `user`         | objeto | Sí               |
| `workspace`    | objeto | Sí               |
| `credential`   | objeto | Sí               |
| `capabilities` | objeto | Sí               |

### GET /agent/allowance

Escaneos gratuitos que quedan este mes, sus fechas de reinicio y créditos.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_allowance`](/es/mcp/tools#lockpick_get_allowance)

**data**

| Campo               | Tipo                                                                                       | Siempre presente |
| ------------------- | ------------------------------------------------------------------------------------------ | ---------------- |
| `accessSource`      | `community`, `stripe` (valor de facturación heredado), `pilot` (heredado, interno), `none` | Sí               |
| `accountingMode`    | `pilot` (heredado, interno), `credits` (heredado, interno), `unmetered`                    | Sí               |
| `pulse`             | objeto                                                                                     | Sí               |
| `deep`              | objeto                                                                                     | Sí               |
| `creditBalance`     | entero o null                                                                              | Sí               |
| `freeSiteId`        | cadena o null                                                                              | Sí               |
| `freeSiteVisible`   | booleano                                                                                   | Sí               |
| `canSwitchFreeSite` | booleano                                                                                   | Sí               |

### GET /agent/monitor

Explora la inteligencia de seguridad actual y explica las coincidencias de los sitios autorizados.

* Permiso: `read`
* Herramienta MCP: [`lockpick_monitor`](/es/mcp/tools#lockpick_monitor)

**Consulta**

| Campo        | Tipo                                                                                                              | Obligatorio |
| ------------ | ----------------------------------------------------------------------------------------------------------------- | ----------- |
| `view`       | `latest`, `sites`, `exploited`, `following`                                                                       | No          |
| `kind`       | `all`, `vulnerability`, `malicious_package`                                                                       | No          |
| `q`          | string                                                                                                            | No          |
| `ecosystem`  | `all`, `npm`, `pypi`, `composer`, `go`, `rubygems`, `maven`, `cargo`, `nuget`, `pub`, `hex`, `swift`, `wordpress` | No          |
| `severity`   | `all`, `critical`, `high`, `medium`, `low`, `unknown`                                                             | No          |
| `days`       | number                                                                                                            | No          |
| `cursor`     | string                                                                                                            | No          |
| `limit`      | integer                                                                                                           | No          |
| `siteId`     | string                                                                                                            | No          |
| `advisoryId` | string                                                                                                            | No          |

**data**

| Campo         | Tipo             | Siempre presente |
| ------------- | ---------------- | ---------------- |
| `items`       | lista de objetos | Sí               |
| `nextCursor`  | cadena o null    | Sí               |
| `limitations` | lista de cadenas | Sí               |

**Cada elemento**

| Campo         | Tipo                                           | Siempre presente |
| ------------- | ---------------------------------------------- | ---------------- |
| `id`          | cadena                                         | Sí               |
| `title`       | cadena                                         | Sí               |
| `source`      | cadena                                         | Sí               |
| `kind`        | `vulnerability`, `malicious_package`           | Sí               |
| `severity`    | `critical`, `high`, `medium`, `low`, `unknown` | Sí               |
| `provenance`  | lista de objetos                               | Sí               |
| `withdrawnAt` | cadena o null                                  | No               |
| `publishedAt` | cadena                                         | Sí               |
| `exploited`   | booleano                                       | Sí               |
| `ids`         | lista de cadenas                               | Sí               |
| `tech`        | lista de objetos                               | Sí               |
| `epss`        | objeto o null                                  | No               |
| `cvss`        | objeto o null                                  | No               |
| `attribution` | cadena o null                                  | Sí               |
| `references`  | lista de cadenas                               | Sí               |
| `packages`    | lista de objetos                               | Yes              |
| `sites`       | lista de objetos                               | Sí               |

### GET /agent/sites

Una página de sitios con sus últimos escaneos.

* Permiso: `read`
* Herramienta MCP: [`lockpick_list_sites`](/es/mcp/tools#lockpick_list_sites)

**Consulta**

| Campo    | Tipo    | Obligatorio |
| -------- | ------- | ----------- |
| `limit`  | integer | No          |
| `cursor` | string  | No          |

**data**

| Campo        | Tipo             | Siempre presente |
| ------------ | ---------------- | ---------------- |
| `items`      | lista de objetos | Sí               |
| `nextCursor` | cadena o null    | Sí               |

**Cada elemento**

| Campo         | Tipo          | Siempre presente |
| ------------- | ------------- | ---------------- |
| `id`          | cadena        | Sí               |
| `name`        | cadena        | Sí               |
| `status`      | cadena        | Sí               |
| `baseDomain`  | cadena o null | Sí               |
| `latestPulse` | objeto o null | Sí               |
| `latestDeep`  | objeto o null | Sí               |
| `latestBox`   | objeto o null | Sí               |
| `webPath`     | cadena        | Sí               |
| `webUrl`      | cadena        | Sí               |

### POST /agent/sites

Añade un sitio, o devuelve el que tiene esa dirección.

* Permiso: `sites`
* Herramienta MCP: [`lockpick_add_site`](/es/mcp/tools#lockpick_add_site)

**Cuerpo**

| Campo            | Tipo   | Obligatorio |
| ---------------- | ------ | ----------- |
| `url`            | string | Sí          |
| `name`           | string | No          |
| `idempotencyKey` | string | Sí          |

**data**

| Campo     | Tipo     | Siempre presente |
| --------- | -------- | ---------------- |
| `site`    | objeto   | Sí               |
| `created` | booleano | Sí               |

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

El estado de un sitio: sus últimos escaneos y qué hacer después.

* Permiso: `read`
* Herramienta MCP: [`lockpick_site_status`](/es/mcp/tools#lockpick_site_status)

**data**

| Campo            | Tipo             | Siempre presente |
| ---------------- | ---------------- | ---------------- |
| `site`           | objeto           | Sí               |
| `latestPulse`    | objeto o null    | Sí               |
| `latestDeep`     | objeto o null    | Sí               |
| `latestBox`      | objeto o null    | Sí               |
| `lastComparison` | objeto o null    | Sí               |
| `caveats`        | lista de cadenas | Sí               |
| `fixes`          | objeto o null    | No               |
| `relevant`       | lista de objetos | No               |
| `relevantTotal`  | entero           | No               |

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

El historial de seguridad de un sitio: la evolución de la puntuación de cada profundidad de escaneo, cortada donde cambió el motor, los hallazgos abiertos a lo largo del tiempo, las correcciones, las regresiones y el tiempo mediano hasta la corrección.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_site_history`](/es/mcp/tools#lockpick_get_site_history)

**data**

| Campo      | Tipo             | Siempre presente |
| ---------- | ---------------- | ---------------- |
| `siteId`   | string           | Sí               |
| `scores`   | lista de objetos | Sí               |
| `findings` | objeto           | Sí               |

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

Envía los nombres y las versiones exactas de los paquetes que fija un sitio, nunca código, y consulta qué avisos los afectan.

* Permiso: `sites`
* Herramienta MCP: [`lockpick_send_dependencies`](/es/mcp/tools#lockpick_send_dependencies)

**Cuerpo**

| Campo            | Tipo                                                                                                                                                                                                                                                                                                                                                                                                                                 | Obligatorio |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- |
| `inventory`      | object                                                                                                                                                                                                                                                                                                                                                                                                                               | No          |
| `packages`       | lista de objetos                                                                                                                                                                                                                                                                                                                                                                                                                     | Yes         |
| `sources`        | lista de `package-lock.json`, `npm-shrinkwrap.json`, `pnpm-lock.yaml`, `yarn.lock`, `bun.lock`, `bun.lockb`, `requirements.txt`, `poetry.lock`, `uv.lock`, `Pipfile.lock`, `pdm.lock`, `composer.lock`, `go.mod`, `Gemfile.lock`, `gems.locked`, `pom.xml`, `gradle.lockfile`, `buildscript-gradle.lockfile`, `build.gradle`, `build.gradle.kts`, `Cargo.lock`, `packages.lock.json`, `pubspec.lock`, `mix.lock`, `Package.resolved` | Sí          |
| `idempotencyKey` | string                                                                                                                                                                                                                                                                                                                                                                                                                               | Sí          |

**data**

| Campo             | Tipo                                                                                                                                                                                                                                                                                                                                                                                                                                 | Siempre presente |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- |
| `siteId`          | string                                                                                                                                                                                                                                                                                                                                                                                                                               | Sí               |
| `receivedAt`      | cadena o null                                                                                                                                                                                                                                                                                                                                                                                                                        | Sí               |
| `sources`         | lista de `package-lock.json`, `npm-shrinkwrap.json`, `pnpm-lock.yaml`, `yarn.lock`, `bun.lock`, `bun.lockb`, `requirements.txt`, `poetry.lock`, `uv.lock`, `Pipfile.lock`, `pdm.lock`, `composer.lock`, `go.mod`, `Gemfile.lock`, `gems.locked`, `pom.xml`, `gradle.lockfile`, `buildscript-gradle.lockfile`, `build.gradle`, `build.gradle.kts`, `Cargo.lock`, `packages.lock.json`, `pubspec.lock`, `mix.lock`, `Package.resolved` | Sí               |
| `packageCount`    | entero                                                                                                                                                                                                                                                                                                                                                                                                                               | Sí               |
| `affectsYouCount` | entero                                                                                                                                                                                                                                                                                                                                                                                                                               | Sí               |
| `affectsYou`      | lista de objetos                                                                                                                                                                                                                                                                                                                                                                                                                     | Sí               |
| `webUrl`          | cadena                                                                                                                                                                                                                                                                                                                                                                                                                               | Sí               |

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

El vínculo de GitHub de un sitio: el repositorio, la rama y el archivo de bloqueo, la última lectura, el comentario en pull requests y si la lista de GitHub de quien llama está vigente.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_github_link`](/es/mcp/tools#lockpick_get_github_link)

**data**

| Campo                 | Tipo          | Siempre presente |
| --------------------- | ------------- | ---------------- |
| `siteId`              | string        | Sí               |
| `available`           | booleano      | Sí               |
| `canManage`           | booleano      | Sí               |
| `linked`              | objeto o null | Sí               |
| `lastRead`            | objeto o null | Sí               |
| `pullRequestComments` | objeto o null | Sí               |
| `authorization`       | objeto        | Sí               |
| `webUrl`              | cadena        | Sí               |

### GET /agent/github/repositories

Los repositorios de la lista de GitHub propia de quien llama en este espacio de trabajo, los únicos que puede vincular.

* Permiso: `read`
* Herramienta MCP: [`lockpick_list_github_repositories`](/es/mcp/tools#lockpick_list_github_repositories)

**Consulta**

| Campo    | Tipo    | Obligatorio |
| -------- | ------- | ----------- |
| `search` | cadena  | No          |
| `limit`  | integer | No          |

**data**

| Campo           | Tipo             | Siempre presente |
| --------------- | ---------------- | ---------------- |
| `authorization` | objeto           | Sí               |
| `items`         | lista de objetos | Sí               |
| `matched`       | entero           | Sí               |
| `truncated`     | booleano         | Sí               |

**Cada elemento**

| Campo           | Tipo     | Siempre presente |
| --------------- | -------- | ---------------- |
| `repository`    | cadena   | Sí               |
| `defaultBranch` | cadena   | Sí               |
| `private`       | booleano | Sí               |

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

Vincula un sitio a un repositorio de la lista de GitHub propia de quien llama, u obtiene la página donde la persona lo aprueba.

* Permiso: `sites`
* Herramienta MCP: [`lockpick_link_github_repository`](/es/mcp/tools#lockpick_link_github_repository)

**Cuerpo**

| Campo                 | Tipo                      | Obligatorio |
| --------------------- | ------------------------- | ----------- |
| `repository`          | cadena                    | Sí          |
| `ref`                 | cadena                    | No          |
| `lockfiles`           | cadena o lista de cadenas | No          |
| `pullRequestComments` | `on`, `off`               | No          |

### GET /agent/github/link-requests/\{requestId}

En qué punto está un vínculo de GitHub que espera a la persona.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_github_link_request`](/es/mcp/tools#lockpick_get_github_link_request)

**data**

| Campo        | Tipo                                                                                 | Siempre presente |
| ------------ | ------------------------------------------------------------------------------------ | ---------------- |
| `requestId`  | cadena                                                                               | Sí               |
| `siteId`     | string                                                                               | Sí               |
| `repository` | cadena                                                                               | Sí               |
| `state`      | `pending`, `authorizing`, `linked`, `not_reachable`, `declined`, `failed`, `expired` | Sí               |
| `expiresAt`  | cadena                                                                               | Sí               |
| `link`       | objeto o null                                                                        | Sí               |

### DELETE /agent/sites/\{siteId}/github

Desvincula el repositorio de GitHub de un sitio y olvida la lectura de su archivo de bloqueo.

* Permiso: `sites`
* Herramienta MCP: [`lockpick_unlink_github_repository`](/es/mcp/tools#lockpick_unlink_github_repository)

**data**

| Campo      | Tipo     | Siempre presente |
| ---------- | -------- | ---------------- |
| `siteId`   | string   | Sí               |
| `unlinked` | booleano | Sí               |

### POST /agent/sites/\{siteId}/github/pull-request-comments

Activa o desactiva el comentario de seguridad de Deep en las pull requests del repositorio vinculado a un sitio.

* Permiso: `sites`
* Herramienta MCP: [`lockpick_set_github_pr_comments`](/es/mcp/tools#lockpick_set_github_pr_comments)

**Cuerpo**

| Campo     | Tipo     | Obligatorio |
| --------- | -------- | ----------- |
| `enabled` | booleano | Sí          |

**data**

| Campo                 | Tipo          | Siempre presente |
| --------------------- | ------------- | ---------------- |
| `siteId`              | string        | Sí               |
| `available`           | booleano      | Sí               |
| `canManage`           | booleano      | Sí               |
| `linked`              | objeto o null | Sí               |
| `lastRead`            | objeto o null | Sí               |
| `pullRequestComments` | objeto o null | Sí               |
| `authorization`       | objeto        | Sí               |
| `webUrl`              | cadena        | Sí               |

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

Las comprobaciones automáticas Pulse y Deep de un sitio y las frecuencias que permite su plan.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_schedules`](/es/mcp/tools#lockpick_get_schedules)

**data**

| Campo     | Tipo          | Siempre presente |
| --------- | ------------- | ---------------- |
| `siteId`  | string        | Sí               |
| `enabled` | booleano      | Sí               |
| `allowed` | objeto        | Sí               |
| `pulse`   | objeto o null | Sí               |
| `deep`    | objeto o null | Sí               |
| `webUrl`  | cadena        | Sí               |

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

Configura, cambia o reanuda la comprobación automática Pulse de un sitio dentro de las frecuencias del plan.

* Permiso: `pulse`
* Herramienta MCP: [`lockpick_set_pulse_schedule`](/es/mcp/tools#lockpick_set_pulse_schedule)

**Cuerpo**

| Campo        | Tipo                         | Obligatorio |
| ------------ | ---------------------------- | ----------- |
| `cadence`    | `daily`, `weekly`, `monthly` | No          |
| `runHourUtc` | entero o null                | No          |

**data**

| Campo          | Tipo                           | Siempre presente |
| -------------- | ------------------------------ | ---------------- |
| `scheduleId`   | cadena                         | Sí               |
| `siteId`       | string                         | Sí               |
| `depth`        | `pulse`, `deep`                | Sí               |
| `status`       | `active`, `paused`, `archived` | Sí               |
| `cadence`      | `daily`, `weekly`, `monthly`   | Sí               |
| `runHourUtc`   | entero o null                  | Sí               |
| `nextRunAt`    | cadena                         | Sí               |
| `consentUntil` | cadena                         | Sí               |
| `lastOutcome`  | cadena o null                  | Sí               |

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

Pausa la comprobación automática Pulse de un sitio.

* Permiso: `pulse`
* Herramienta MCP: [`lockpick_pause_pulse_schedule`](/es/mcp/tools#lockpick_pause_pulse_schedule)

**data**

| Campo          | Tipo                           | Siempre presente |
| -------------- | ------------------------------ | ---------------- |
| `scheduleId`   | cadena                         | Sí               |
| `siteId`       | string                         | Sí               |
| `depth`        | `pulse`, `deep`                | Sí               |
| `status`       | `active`, `paused`, `archived` | Sí               |
| `cadence`      | `daily`, `weekly`, `monthly`   | Sí               |
| `runHourUtc`   | entero o null                  | Sí               |
| `nextRunAt`    | cadena                         | Sí               |
| `consentUntil` | cadena                         | Sí               |
| `lastOutcome`  | cadena o null                  | Sí               |

### POST /agent/sites/\{siteId}/schedules/deep

Prepara la configuración, el cambio o la reanudación de la comprobación automática Deep de un sitio, y obtiene el enlace donde la persona la aprueba.

* Permiso: `deep`
* Herramienta MCP: [`lockpick_prepare_deep_schedule`](/es/mcp/tools#lockpick_prepare_deep_schedule)

**Cuerpo**

| Campo        | Tipo                         | Obligatorio |
| ------------ | ---------------------------- | ----------- |
| `cadence`    | `daily`, `weekly`, `monthly` | No          |
| `runHourUtc` | entero o null                | No          |

**data**

| Campo              | Tipo                         | Siempre presente |
| ------------------ | ---------------------------- | ---------------- |
| `requestId`        | cadena                       | Sí               |
| `siteId`           | string                       | Sí               |
| `depth`            | cadena                       | Sí               |
| `cadence`          | `daily`, `weekly`, `monthly` | Sí               |
| `runHourUtc`       | entero o null                | Sí               |
| `approvalUrl`      | cadena                       | Sí               |
| `expiresAt`        | cadena                       | Sí               |
| `pollAfterSeconds` | entero                       | Sí               |

### POST /agent/sites/\{siteId}/schedules/deep/pause

Pausa la comprobación automática Deep de un sitio.

* Permiso: `deep`
* Herramienta MCP: [`lockpick_pause_deep_schedule`](/es/mcp/tools#lockpick_pause_deep_schedule)

**data**

| Campo          | Tipo                           | Siempre presente |
| -------------- | ------------------------------ | ---------------- |
| `scheduleId`   | cadena                         | Sí               |
| `siteId`       | string                         | Sí               |
| `depth`        | `pulse`, `deep`                | Sí               |
| `status`       | `active`, `paused`, `archived` | Sí               |
| `cadence`      | `daily`, `weekly`, `monthly`   | Sí               |
| `runHourUtc`   | entero o null                  | Sí               |
| `nextRunAt`    | cadena                         | Sí               |
| `consentUntil` | cadena                         | Sí               |
| `lastOutcome`  | cadena o null                  | Sí               |

### GET /agent/schedule-requests/\{requestId}

En qué punto está una comprobación automática Deep que espera a la persona.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_schedule_request`](/es/mcp/tools#lockpick_get_schedule_request)

**data**

| Campo        | Tipo                                                   | Siempre presente |
| ------------ | ------------------------------------------------------ | ---------------- |
| `requestId`  | cadena                                                 | Sí               |
| `siteId`     | string                                                 | Sí               |
| `depth`      | cadena                                                 | Sí               |
| `cadence`    | `daily`, `weekly`, `monthly`                           | Sí               |
| `runHourUtc` | entero o null                                          | Sí               |
| `state`      | `pending`, `approved`, `declined`, `failed`, `expired` | Sí               |
| `expiresAt`  | cadena                                                 | Sí               |
| `failure`    | cadena o null                                          | Sí               |
| `schedule`   | objeto o null                                          | Sí               |

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

Los resultados Pulse de un sitio que tienen un enlace público para compartir activo.

* Permiso: `read`
* Herramienta MCP: [`lockpick_list_shares`](/es/mcp/tools#lockpick_list_shares)

**data**

| Campo    | Tipo             | Siempre presente |
| -------- | ---------------- | ---------------- |
| `siteId` | string           | Sí               |
| `shares` | lista de objetos | Sí               |

### POST /agent/scans/\{scanId}/share

Publica un resultado Pulse completado en un enlace público, o reemplaza su enlace.

* Permiso: `pulse`
* Herramienta MCP: [`lockpick_share_scan`](/es/mcp/tools#lockpick_share_scan)

**Cuerpo**

| Campo     | Tipo     | Obligatorio |
| --------- | -------- | ----------- |
| `replace` | booleano | No          |

**data**

| Campo       | Tipo          | Siempre presente |
| ----------- | ------------- | ---------------- |
| `scanId`    | string        | Sí               |
| `url`       | cadena o null | Sí               |
| `createdAt` | cadena        | Sí               |

### DELETE /agent/scans/\{scanId}/share

Deja de compartir un resultado Pulse; su enlace público deja de funcionar.

* Permiso: `pulse`
* Herramienta MCP: [`lockpick_unshare_scan`](/es/mcp/tools#lockpick_unshare_scan)

**data**

| Campo      | Tipo     | Siempre presente |
| ---------- | -------- | ---------------- |
| `scanId`   | string   | Sí               |
| `unshared` | booleano | Sí               |

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

Inicia un Pulse en un sitio.

* Permiso: `pulse`
* Herramienta MCP: [`lockpick_start_pulse`](/es/mcp/tools#lockpick_start_pulse)

**Cuerpo**

| Campo            | Tipo   | Obligatorio |
| ---------------- | ------ | ----------- |
| `idempotencyKey` | string | Sí          |
| `baselineScanId` | string | No          |

**data**

| Campo       | Tipo     | Siempre presente |
| ----------- | -------- | ---------------- |
| `scan`      | objeto   | Sí               |
| `charged`   | objeto   | Sí               |
| `allowance` | objeto   | Sí               |
| `replayed`  | booleano | Sí               |

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

Emite una prueba de propiedad por DNS o por archivo antes de un escaneo Deep.

* Permiso: `deep`
* Herramienta MCP: [`lockpick_start_deep_verification`](/es/mcp/tools#lockpick_start_deep_verification)

**Cuerpo**

| Campo            | Tipo                  | Obligatorio |
| ---------------- | --------------------- | ----------- |
| `method`         | `dns`, `file`, `meta` | Sí          |
| `idempotencyKey` | string                | Sí          |

**data**

| Campo               | Tipo                                                     | Siempre presente |
| ------------------- | -------------------------------------------------------- | ---------------- |
| `verificationId`    | string                                                   | Sí               |
| `siteId`            | string                                                   | Sí               |
| `origin`            | cadena                                                   | Sí               |
| `method`            | `dns`, `file`, `meta`                                    | Sí               |
| `state`             | `pending`, `verified`, `expired`, `exhausted`, `revoked` | Sí               |
| `expiresAt`         | cadena                                                   | Sí               |
| `verifiedUntil`     | cadena o null                                            | Sí               |
| `attemptsRemaining` | entero                                                   | Sí               |
| `retryAfterSeconds` | entero o null                                            | Sí               |
| `value`             | cadena                                                   | Sí               |
| `location`          | cadena                                                   | Sí               |

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

Comprueba una prueba de propiedad publicada. Cada comprobación usa uno de sus intentos.

* Permiso: `deep`
* Herramienta MCP: [`lockpick_check_deep_verification`](/es/mcp/tools#lockpick_check_deep_verification)

**data**

| Campo               | Tipo                                                     | Siempre presente |
| ------------------- | -------------------------------------------------------- | ---------------- |
| `verificationId`    | string                                                   | Sí               |
| `siteId`            | string                                                   | Sí               |
| `origin`            | cadena                                                   | Sí               |
| `method`            | `dns`, `file`, `meta`                                    | Sí               |
| `state`             | `pending`, `verified`, `expired`, `exhausted`, `revoked` | Sí               |
| `expiresAt`         | cadena                                                   | Sí               |
| `verifiedUntil`     | cadena o null                                            | Sí               |
| `attemptsRemaining` | entero                                                   | Sí               |
| `retryAfterSeconds` | entero o null                                            | Sí               |

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

Prepara un escaneo Deep y obtiene el enlace donde la persona lo aprueba.

* Permiso: `deep`
* Herramienta MCP: [`lockpick_prepare_deep`](/es/mcp/tools#lockpick_prepare_deep)

**Cuerpo**

| Campo            | Tipo   | Obligatorio |
| ---------------- | ------ | ----------- |
| `verificationId` | string | Sí          |
| `idempotencyKey` | string | Sí          |

**data**

| Campo             | Tipo                                       | Siempre presente |
| ----------------- | ------------------------------------------ | ---------------- |
| `operationId`     | string                                     | Sí               |
| `siteId`          | string                                     | Sí               |
| `origin`          | cadena                                     | Sí               |
| `assessmentLevel` | cadena                                     | Sí               |
| `verificationId`  | string                                     | Sí               |
| `cost`            | objeto                                     | Sí               |
| `allowance`       | objeto                                     | Sí               |
| `approvalState`   | `pending`, `approved`, `expired`, `denied` | Sí               |
| `approvalUrl`     | cadena                                     | Sí               |
| `expiresAt`       | cadena                                     | Sí               |

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

Inicia un escaneo Deep que la persona aprobó.

* Permiso: `deep`
* Herramienta MCP: [`lockpick_start_deep`](/es/mcp/tools#lockpick_start_deep)

**data**

| Campo       | Tipo     | Siempre presente |
| ----------- | -------- | ---------------- |
| `scan`      | objeto   | Sí               |
| `charged`   | objeto   | Sí               |
| `allowance` | objeto   | Sí               |
| `replayed`  | booleano | Sí               |

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

Elimina un sitio para que el Pulse gratuito de este mes pase a otro.

* Permiso: `sites` y `pulse`
* Herramienta MCP: [`lockpick_switch_free_site`](/es/mcp/tools#lockpick_switch_free_site)

**Cuerpo**

| Campo            | Tipo    | Obligatorio |
| ---------------- | ------- | ----------- |
| `removeSiteId`   | string  | Sí          |
| `checkId`        | string  | No          |
| `idempotencyKey` | string  | Sí          |
| `confirmRemoval` | boolean | Sí          |

**data**

| Campo               | Tipo          | Siempre presente |
| ------------------- | ------------- | ---------------- |
| `removedSiteId`     | cadena        | Sí               |
| `removedSiteHost`   | cadena        | Sí               |
| `replacementSiteId` | cadena o null | Sí               |
| `allowance`         | objeto        | Sí               |
| `restoreUrl`        | cadena        | Sí               |
| `startedScanId`     | cadena o null | Sí               |
| `charged`           | objeto        | Sí               |
| `replayed`          | booleano      | Sí               |

### GET /agent/scans

Una página de escaneos, del más reciente al más antiguo, con filtros.

* Permiso: `read`
* Herramienta MCP: [`lockpick_list_scans`](/es/mcp/tools#lockpick_list_scans)

**Consulta**

| Campo             | Tipo                                                                                | Obligatorio |
| ----------------- | ----------------------------------------------------------------------------------- | ----------- |
| `siteId`          | string                                                                              | No          |
| `kind`            | `pulse`, `box` (Deep, nombre heredado)                                              | No          |
| `assessmentLevel` | `pulse`, `standard`, `deep`                                                         | No          |
| `status`          | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | No          |
| `limit`           | integer                                                                             | No          |
| `cursor`          | string                                                                              | No          |

**data**

| Campo        | Tipo             | Siempre presente |
| ------------ | ---------------- | ---------------- |
| `items`      | lista de objetos | Sí               |
| `nextCursor` | cadena o null    | Sí               |

**Cada elemento**

| Campo                       | Tipo                                                                                | Siempre presente |
| --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
| `id`                        | cadena                                                                              | Sí               |
| `kind`                      | `pulse`, `box` (Deep, nombre heredado)                                              | Sí               |
| `projectId`                 | cadena                                                                              | Sí               |
| `target`                    | cadena                                                                              | Sí               |
| `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Sí               |
| `mode`                      | `autonomous`, `authenticated`, `active` o null                                      | Sí               |
| `createdAt`                 | cadena o null                                                                       | Sí               |
| `finishedAt`                | cadena o null                                                                       | Sí               |
| `webPath`                   | cadena                                                                              | Sí               |
| `assessmentLevel`           | `pulse`, `standard`, `deep` o null                                                  | Sí               |
| `headline`                  | objeto                                                                              | Sí               |
| `webUrl`                    | cadena                                                                              | Sí               |
| `suggestedPollAfterSeconds` | entero o null                                                                       | Sí               |

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

Un escaneo con su estado y su resumen.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_scan`](/es/mcp/tools#lockpick_get_scan)

**data**

| Campo                       | Tipo                                                                                | Siempre presente |
| --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
| `id`                        | cadena                                                                              | Sí               |
| `kind`                      | `pulse`, `box` (Deep, nombre heredado)                                              | Sí               |
| `projectId`                 | cadena                                                                              | Sí               |
| `target`                    | cadena                                                                              | Sí               |
| `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Sí               |
| `mode`                      | `autonomous`, `authenticated`, `active` o null                                      | Sí               |
| `createdAt`                 | cadena o null                                                                       | Sí               |
| `finishedAt`                | cadena o null                                                                       | Sí               |
| `webPath`                   | cadena                                                                              | Sí               |
| `assessmentLevel`           | `pulse`, `standard`, `deep` o null                                                  | Sí               |
| `headline`                  | objeto                                                                              | Sí               |
| `webUrl`                    | cadena                                                                              | Sí               |
| `suggestedPollAfterSeconds` | entero o null                                                                       | Sí               |
| `docsUrl`                   | cadena                                                                              | No               |
| `dismissals`                | objeto                                                                              | No               |
| `baselineRunId`             | cadena o null                                                                       | Sí               |
| `open`                      | objeto                                                                              | Sí               |
| `findingCount`              | entero                                                                              | Sí               |
| `progress`                  | objeto o null                                                                       | Sí               |
| `coverage`                  | objeto                                                                              | Sí               |
| `caveats`                   | lista de cadenas                                                                    | Sí               |
| `outcome`                   | objeto o null                                                                       | Sí               |
| `exposureCheck`             | objeto                                                                              | No               |
| `coverageReceipt`           | objeto                                                                              | No               |

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

Una página de hallazgos de un escaneo.

* Permiso: `read`
* Herramienta MCP: [`lockpick_list_findings`](/es/mcp/tools#lockpick_list_findings)
* Envía `x-lockpick-agent-features: finding-code` para recibir el `code` de cada hallazgo (`LP-` y seis caracteres, como lo muestra el informe web). Sin el encabezado, la respuesta no incluye `code`, la forma que esperan los clientes antiguos.

**Consulta**

| Campo      | Tipo                                          | Obligatorio |
| ---------- | --------------------------------------------- | ----------- |
| `state`    | `attention`, `information`, `unknown`, `pass` | No          |
| `severity` | `critical`, `high`, `medium`, `low`, `info`   | No          |
| `all`      | booleano o `true`, `false`                    | No          |
| `limit`    | integer                                       | No          |
| `cursor`   | string                                        | No          |

**data**

| Campo        | Tipo             | Siempre presente |
| ------------ | ---------------- | ---------------- |
| `items`      | lista de objetos | Sí               |
| `nextCursor` | cadena o null    | Sí               |

**Cada elemento**

| Campo               | Tipo                                                 | Siempre presente |
| ------------------- | ---------------------------------------------------- | ---------------- |
| `dismissal`         | objeto                                               | No               |
| `id`                | cadena                                               | Sí               |
| `code`              | string                                               | No               |
| `runId`             | cadena                                               | Sí               |
| `kind`              | `pulse`, `box` (Deep, nombre heredado)               | Sí               |
| `severity`          | `critical`, `high`, `medium`, `low`, `info`          | Sí               |
| `state`             | `attention`, `information`, `unknown`, `pass`        | Sí               |
| `category`          | cadena                                               | Sí               |
| `title`             | cadena                                               | Sí               |
| `meaning`           | cadena                                               | Sí               |
| `fix`               | cadena o null                                        | Sí               |
| `confidence`        | cadena                                               | Sí               |
| `evidence`          | lista de cadenas                                     | Sí               |
| `sources`           | lista de string                                      | Yes              |
| `steps`             | lista de cadenas                                     | Sí               |
| `webPath`           | cadena                                               | Sí               |
| `webUrl`            | cadena                                               | Sí               |
| `evidenceTrust`     | cadena                                               | Sí               |
| `evidenceTruncated` | booleano                                             | Sí               |
| `verdict`           | `confirmed`, `needs_review`, `not_actionable` o null | No               |
| `certainty`         | `high`, `medium`, `low` o null                       | No               |
| `exploitability`    | `direct`, `conditional`, `hygiene`, `none` o null    | No               |
| `proof`             | objeto o null                                        | No               |
| `proofGap`          | cadena o null                                        | No               |
| `urgency`           | `now`, `week`, `later`, `none`                       | No               |
| `howSure`           | `confirmed`, `likely`, `possible` o null             | No               |
| `lifecycle`         | objeto o null                                        | No               |

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

Un hallazgo con su evidencia anonimizada.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_finding`](/es/mcp/tools#lockpick_get_finding)
* Envía `x-lockpick-agent-features: finding-code` para recibir el `code` de cada hallazgo (`LP-` y seis caracteres, como lo muestra el informe web). Sin el encabezado, la respuesta no incluye `code`, la forma que esperan los clientes antiguos.

**data**

| Campo               | Tipo                                                 | Siempre presente |
| ------------------- | ---------------------------------------------------- | ---------------- |
| `dismissal`         | objeto                                               | No               |
| `id`                | cadena                                               | Sí               |
| `code`              | string                                               | No               |
| `runId`             | cadena                                               | Sí               |
| `kind`              | `pulse`, `box` (Deep, nombre heredado)               | Sí               |
| `severity`          | `critical`, `high`, `medium`, `low`, `info`          | Sí               |
| `state`             | `attention`, `information`, `unknown`, `pass`        | Sí               |
| `category`          | cadena                                               | Sí               |
| `title`             | cadena                                               | Sí               |
| `meaning`           | cadena                                               | Sí               |
| `fix`               | cadena o null                                        | Sí               |
| `confidence`        | cadena                                               | Sí               |
| `evidence`          | lista de cadenas                                     | Sí               |
| `sources`           | lista de string                                      | Yes              |
| `steps`             | lista de cadenas                                     | Sí               |
| `webPath`           | cadena                                               | Sí               |
| `webUrl`            | cadena                                               | Sí               |
| `evidenceTrust`     | cadena                                               | Sí               |
| `evidenceTruncated` | booleano                                             | Sí               |
| `verdict`           | `confirmed`, `needs_review`, `not_actionable` o null | No               |
| `certainty`         | `high`, `medium`, `low` o null                       | No               |
| `exploitability`    | `direct`, `conditional`, `hygiene`, `none` o null    | No               |
| `proof`             | objeto o null                                        | No               |
| `proofGap`          | cadena o null                                        | No               |
| `urgency`           | `now`, `week`, `later`, `none`                       | No               |
| `howSure`           | `confirmed`, `likely`, `possible` o null             | No               |
| `lifecycle`         | objeto o null                                        | No               |

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

Una parte del resumen de corrección de un escaneo.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_repair_brief`](/es/mcp/tools#lockpick_get_repair_brief)

**Consulta**

| Campo       | Tipo                                                                                      | Obligatorio |
| ----------- | ----------------------------------------------------------------------------------------- | ----------- |
| `findingId` | string                                                                                    | No          |
| `agent`     | `claude-code`, `codex`, `cursor`, `vscode`, `opencode`, `lovable`, `bolt`, `replit`, `v0` | No          |
| `cursor`    | string                                                                                    | No          |

**data**

| Campo        | Tipo             | Siempre presente |
| ------------ | ---------------- | ---------------- |
| `scanId`     | string           | Sí               |
| `findingIds` | lista de cadenas | Sí               |
| `saved`      | booleano         | Sí               |
| `markdown`   | cadena           | Sí               |
| `nextCursor` | cadena o null    | Sí               |
| `complete`   | booleano         | Sí               |
| `webUrl`     | cadena           | Sí               |

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

Qué cambió entre un escaneo y el que vuelve a revisar.

* Permiso: `read`
* Herramienta MCP: [`lockpick_compare_scans`](/es/mcp/tools#lockpick_compare_scans)
* Envía `x-lockpick-agent-features: finding-code` para recibir el `code` de cada hallazgo (`LP-` y seis caracteres, como lo muestra el informe web). Sin el encabezado, la respuesta no incluye `code`, la forma que esperan los clientes antiguos.

**data**

| Campo           | Tipo             | Siempre presente |
| --------------- | ---------------- | ---------------- |
| `runId`         | cadena           | Sí               |
| `baselineRunId` | cadena           | Sí               |
| `error`         | cadena o null    | Sí               |
| `changes`       | lista de objetos | Sí               |
| `webUrl`        | cadena           | Sí               |

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

Vuelve a ejecutar la comprobación DNS gratuita de un escaneo. No envía nada al sitio.

* Permiso: `pulse`
* Herramienta MCP: [`lockpick_recheck_dns`](/es/mcp/tools#lockpick_recheck_dns)

**Cuerpo**

| Campo            | Tipo   | Obligatorio |
| ---------------- | ------ | ----------- |
| `findingId`      | string | Sí          |
| `idempotencyKey` | string | Sí          |

**data**

| Campo                    | Tipo             | Siempre presente |
| ------------------------ | ---------------- | ---------------- |
| `scanId`                 | string           | Sí               |
| `findingIds`             | lista de cadenas | Sí               |
| `pending`                | objeto o null    | Sí               |
| `checkedAt`              | cadena o null    | Sí               |
| `outcomes`               | lista de objetos | Sí               |
| `nextAllowedAt`          | cadena o null    | Sí               |
| `failedAt`               | cadena o null    | Sí               |
| `originalGradeUnchanged` | booleano         | Sí               |

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

La última comprobación DNS de un escaneo.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_dns_recheck`](/es/mcp/tools#lockpick_get_dns_recheck)

**data**

| Campo                    | Tipo             | Siempre presente |
| ------------------------ | ---------------- | ---------------- |
| `scanId`                 | string           | Sí               |
| `findingIds`             | lista de cadenas | Sí               |
| `pending`                | objeto o null    | Sí               |
| `checkedAt`              | cadena o null    | Sí               |
| `outcomes`               | lista de objetos | Sí               |
| `nextAllowedAt`          | cadena o null    | Sí               |
| `failedAt`               | cadena o null    | Sí               |
| `originalGradeUnchanged` | booleano         | Sí               |

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

Comprobar esta corrección: volver a leer solo dónde se vio un hallazgo Deep. Gratis, con límite diario.

* Permiso: `deep`
* Herramienta MCP: [`lockpick_recheck_finding`](/es/mcp/tools#lockpick_recheck_finding)

**Cuerpo**

| Campo            | Tipo   | Obligatorio |
| ---------------- | ------ | ----------- |
| `findingId`      | string | Sí          |
| `idempotencyKey` | string | Sí          |

**data**

| Campo                     | Tipo          | Siempre presente |
| ------------------------- | ------------- | ---------------- |
| `scanId`                  | string        | Sí               |
| `findingId`               | string        | Sí               |
| `pending`                 | objeto o null | Sí               |
| `latest`                  | objeto o null | Sí               |
| `failedAt`                | cadena o null | Sí               |
| `remainingToday`          | entero        | Sí               |
| `workspaceRemainingToday` | entero        | Sí               |
| `webUrl`                  | cadena        | Sí               |
| `originalGradeUnchanged`  | booleano      | Sí               |

### GET /agent/scans/\{scanId}/deep-rechecks/\{findingId}

La última Comprobar esta corrección de un hallazgo Deep.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_finding_recheck`](/es/mcp/tools#lockpick_get_finding_recheck)

**data**

| Campo                     | Tipo          | Siempre presente |
| ------------------------- | ------------- | ---------------- |
| `scanId`                  | string        | Sí               |
| `findingId`               | string        | Sí               |
| `pending`                 | objeto o null | Sí               |
| `latest`                  | objeto o null | Sí               |
| `failedAt`                | cadena o null | Sí               |
| `remainingToday`          | entero        | Sí               |
| `workspaceRemainingToday` | entero        | Sí               |
| `webUrl`                  | cadena        | Sí               |
| `originalGradeUnchanged`  | booleano      | Sí               |

### POST /agent/quick-checks

Inicia una comprobación rápida gratuita de una página de inicio.

* Permiso: `pulse`
* Herramienta MCP: [`lockpick_quick_check`](/es/mcp/tools#lockpick_quick_check)

**Cuerpo**

| Campo            | Tipo   | Obligatorio |
| ---------------- | ------ | ----------- |
| `url`            | string | Sí          |
| `idempotencyKey` | string | Sí          |

**data**

| Campo                       | Tipo                                       | Siempre presente |
| --------------------------- | ------------------------------------------ | ---------------- |
| `checkId`                   | string                                     | Sí               |
| `status`                    | `queued`, `running`, `succeeded`, `failed` | Sí               |
| `reused`                    | booleano                                   | Sí               |
| `headline`                  | objeto                                     | Sí               |
| `summary`                   | cadena o null                              | Sí               |
| `checks`                    | lista de objetos                           | Sí               |
| `webUrl`                    | cadena                                     | Sí               |
| `suggestedPollAfterSeconds` | entero o null                              | Sí               |

### POST /agent/repository-checks

Comprueba un repositorio público de GitHub (una skill, un plugin, un servidor MCP o una app) antes de instalarlo.

* Permiso: `pulse`
* Herramienta MCP: [`lockpick_check_repository`](/es/mcp/tools#lockpick_check_repository)

**Cuerpo**

| Campo            | Tipo           | Obligatorio |
| ---------------- | -------------- | ----------- |
| `url`            | string         | Sí          |
| `mode`           | `skill`, `app` | No          |
| `depth`          | `free`, `deep` | No          |
| `idempotencyKey` | string         | Sí          |

**data**

| Campo                       | Tipo                                                                                                                | Siempre presente |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------- |
| `checkId`                   | string                                                                                                              | Sí               |
| `status`                    | `queued`, `running`, `succeeded`, `failed`                                                                          | Sí               |
| `reused`                    | booleano                                                                                                            | Sí               |
| `repository`                | objeto                                                                                                              | Sí               |
| `mode`                      | `skill`, `app` o null                                                                                               | Sí               |
| `kind`                      | cadena o null                                                                                                       | Sí               |
| `verdict`                   | `safe`, `caution`, `do_not_install` o null                                                                          | Sí               |
| `appRisk`                   | `low`, `elevated`, `high` o null                                                                                    | Sí               |
| `score`                     | entero o null                                                                                                       | Sí               |
| `summary`                   | cadena o null                                                                                                       | Sí               |
| `plainSummary`              | cadena o null                                                                                                       | Sí               |
| `findings`                  | lista de objetos                                                                                                    | Sí               |
| `moreFindings`              | entero                                                                                                              | Sí               |
| `coverage`                  | objeto o null                                                                                                       | Sí               |
| `failure`                   | `not-found`, `ref-not-found`, `empty`, `too-large`, `rate-limited`, `unavailable`, `timeout`, `engine-error` o null | Sí               |
| `webUrl`                    | cadena                                                                                                              | Sí               |
| `suggestedPollAfterSeconds` | entero o null                                                                                                       | Sí               |

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

Una comprobación de repositorio y sus hallazgos.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_repository_check`](/es/mcp/tools#lockpick_get_repository_check)

**data**

| Campo                       | Tipo                                                                                                                | Siempre presente |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------- | ---------------- |
| `checkId`                   | string                                                                                                              | Sí               |
| `status`                    | `queued`, `running`, `succeeded`, `failed`                                                                          | Sí               |
| `reused`                    | booleano                                                                                                            | Sí               |
| `repository`                | objeto                                                                                                              | Sí               |
| `mode`                      | `skill`, `app` o null                                                                                               | Sí               |
| `kind`                      | cadena o null                                                                                                       | Sí               |
| `verdict`                   | `safe`, `caution`, `do_not_install` o null                                                                          | Sí               |
| `appRisk`                   | `low`, `elevated`, `high` o null                                                                                    | Sí               |
| `score`                     | entero o null                                                                                                       | Sí               |
| `summary`                   | cadena o null                                                                                                       | Sí               |
| `plainSummary`              | cadena o null                                                                                                       | Sí               |
| `findings`                  | lista de objetos                                                                                                    | Sí               |
| `moreFindings`              | entero                                                                                                              | Sí               |
| `coverage`                  | objeto o null                                                                                                       | Sí               |
| `failure`                   | `not-found`, `ref-not-found`, `empty`, `too-large`, `rate-limited`, `unavailable`, `timeout`, `engine-error` o null | Sí               |
| `webUrl`                    | cadena                                                                                                              | Sí               |
| `suggestedPollAfterSeconds` | entero o null                                                                                                       | Sí               |

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

Una comprobación rápida y su resultado.

* Permiso: `read`
* Herramienta MCP: [`lockpick_get_quick_check`](/es/mcp/tools#lockpick_get_quick_check)

**data**

| Campo                       | Tipo                                       | Siempre presente |
| --------------------------- | ------------------------------------------ | ---------------- |
| `checkId`                   | string                                     | Sí               |
| `status`                    | `queued`, `running`, `succeeded`, `failed` | Sí               |
| `reused`                    | booleano                                   | Sí               |
| `headline`                  | objeto                                     | Sí               |
| `summary`                   | cadena o null                              | Sí               |
| `checks`                    | lista de objetos                           | Sí               |
| `webUrl`                    | cadena                                     | Sí               |
| `suggestedPollAfterSeconds` | entero o null                              | Sí               |

### GET /agent/docs/search

Busca en la documentación pública de Lockpick.

* Permiso: `read`
* Herramienta MCP: [`lockpick_search_docs`](/es/mcp/tools#lockpick_search_docs)

**Consulta**

| Campo   | Tipo    | Obligatorio |
| ------- | ------- | ----------- |
| `query` | string  | Sí          |
| `limit` | integer | No          |

**data**

| Campo     | Tipo             | Siempre presente |
| --------- | ---------------- | ---------------- |
| `query`   | string           | Sí               |
| `results` | lista de objetos | Sí               |

### GET /agent/docs/page

Una página pública de la documentación en Markdown, por partes si es larga.

* Permiso: `read`
* Herramienta MCP: [`lockpick_read_doc`](/es/mcp/tools#lockpick_read_doc)

**Consulta**

| Campo    | Tipo   | Obligatorio |
| -------- | ------ | ----------- |
| `path`   | string | No          |
| `cursor` | string | No          |

**data**

| Campo         | Tipo          | Siempre presente |
| ------------- | ------------- | ---------------- |
| `path`        | string        | Sí               |
| `title`       | cadena        | Sí               |
| `description` | cadena o null | Sí               |
| `url`         | string        | Sí               |
| `markdownUrl` | cadena        | Sí               |
| `markdown`    | cadena        | Sí               |
| `nextCursor`  | cadena o null | Sí               |
| `complete`    | booleano      | Sí               |

## Inicio de sesión del dispositivo

Cómo `lockpick login` obtiene una clave: pide un código, la persona lo aprueba en el navegador y el sondeo devuelve la clave.

### POST /device/code

Inicia un inicio de sesión del dispositivo y obtiene un código que la persona aprueba en el navegador.

* Permiso: ninguno, forma parte del inicio de sesión

**Cuerpo**

| Campo        | Tipo                                       | Obligatorio |
| ------------ | ------------------------------------------ | ----------- |
| `clientName` | cadena                                     | No          |
| `hostname`   | cadena                                     | No          |
| `platform`   | cadena                                     | No          |
| `version`    | cadena                                     | No          |
| `scopes`     | lista de `pulse`, `sites`, `deep`, `local` | No          |

**data**

| Campo                     | Tipo   | Siempre presente |
| ------------------------- | ------ | ---------------- |
| `deviceCode`              | cadena | Sí               |
| `userCode`                | cadena | Sí               |
| `verificationUri`         | cadena | Sí               |
| `verificationUriComplete` | cadena | Sí               |
| `expiresIn`               | entero | Sí               |
| `interval`                | entero | Sí               |

### POST /device/token

Consulta un inicio de sesión del dispositivo hasta que la persona lo apruebe, y luego recibe la clave.

* Permiso: ninguno, forma parte del inicio de sesión

**Cuerpo**

| Campo        | Tipo   | Obligatorio |
| ------------ | ------ | ----------- |
| `deviceCode` | cadena | Sí          |

## Heredado

Las rutas originales de la CLI, que usa la CLI 0.2. Se mantienen como están, y las nuevas integraciones deberían usar la API de agentes de arriba.

<details>
  <summary>
    Rutas originales de la CLI
  </summary>

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

  Gestiona los hallazgos aceptados y sus motivos en este proyecto. Deshacer vuelve a activar un hallazgo; los cambios en la evidencia o las reglas requieren revisión. Las auditorías locales mantienen tu código e informe en tu equipo. Sigue siendo necesaria la autorización en línea.

  * Permiso: `read`

  **data**

  | Campo        | Tipo             | Siempre presente |
  | ------------ | ---------------- | ---------------- |
  | `version`    | número           | Sí               |
  | `projectId`  | cadena           | Sí               |
  | `dismissals` | lista de objetos | Sí               |

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

  Gestiona los hallazgos aceptados y sus motivos en este proyecto. Deshacer vuelve a activar un hallazgo; los cambios en la evidencia o las reglas requieren revisión. Las auditorías locales mantienen tu código e informe en tu equipo. Sigue siendo necesaria la autorización en línea.

  * Permiso: `sites`

  **Cuerpo**

  | Campo        | Tipo             | Obligatorio |
  | ------------ | ---------------- | ----------- |
  | `version`    | número           | Sí          |
  | `projectId`  | cadena           | Sí          |
  | `dismissals` | lista de objetos | Sí          |

  **data**

  | Campo      | Tipo   | Siempre presente |
  | ---------- | ------ | ---------------- |
  | `imported` | entero | Sí               |

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

  Autorizar una evaluación local antes de inspeccionar el repositorio. No se suben el código fuente ni los resultados.

  * Permiso: `local`

  **Cuerpo**

  | Campo                 | Tipo                                                                                                                                                                                                                                                                    | Obligatorio |
  | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
  | `cliVersion`          | cadena                                                                                                                                                                                                                                                                  | Sí          |
  | `scannerVersion`      | cadena                                                                                                                                                                                                                                                                  | Sí          |
  | `rulesetVersion`      | cadena                                                                                                                                                                                                                                                                  | Sí          |
  | `reportSchemaVersion` | cadena                                                                                                                                                                                                                                                                  | Sí          |
  | `checks`              | list of `tracked-secrets`, `public-environment`, `browser-artifacts`, `supabase-client`, `supabase-migrations`, `git-history`, `docker-files`, `docker-values`, `actions-injection`, `source-maps`, `php-version`, `actions-policy`, `compose-policy`, `hosting-config` | Sí          |

  **data**

  | Campo           | Tipo             | Siempre presente |
  | --------------- | ---------------- | ---------------- |
  | `admissionId`   | cadena           | Sí               |
  | `projectId`     | cadena           | Sí               |
  | `workspaceId`   | cadena           | Sí               |
  | `policyVersion` | cadena           | Sí               |
  | `startBy`       | cadena           | Sí               |
  | `checks`        | lista de objetos | Sí               |

  **GET /me**

  La persona, el espacio de trabajo y la clave detrás de esta credencial.

  * Permiso: `read`

  **data**

  | Campo       | Tipo   | Siempre presente |
  | ----------- | ------ | ---------------- |
  | `user`      | objeto | Sí               |
  | `workspace` | objeto | Sí               |
  | `key`       | objeto | Sí               |

  **DELETE /me**

  Revoca la clave presentada.

  * Permiso: cualquier clave válida

  **data**

  | Campo     | Tipo     | Siempre presente |
  | --------- | -------- | ---------------- |
  | `revoked` | booleano | Sí               |

  **GET /projects**

  Sitios (proyectos) con sus últimos escaneos Pulse y Deep.

  * Permiso: `read`

  **Cada elemento de data**

  | Campo         | Tipo          | Siempre presente |
  | ------------- | ------------- | ---------------- |
  | `id`          | cadena        | Sí               |
  | `name`        | cadena        | Sí               |
  | `status`      | cadena        | Sí               |
  | `baseDomain`  | cadena o null | Sí               |
  | `latestPulse` | objeto o null | Sí               |
  | `latestDeep`  | objeto o null | No               |
  | `latestBox`   | objeto o null | Sí               |
  | `webPath`     | cadena        | Sí               |
  | `webUrl`      | cadena        | No               |

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

  Los últimos resultados de un sitio y lo que cambió.

  * Permiso: `read`

  **data**

  | Campo            | Tipo             | Siempre presente |
  | ---------------- | ---------------- | ---------------- |
  | `project`        | objeto           | Sí               |
  | `latestPulse`    | objeto o null    | Sí               |
  | `latestDeep`     | objeto o null    | No               |
  | `latestBox`      | objeto o null    | Sí               |
  | `lastComparison` | objeto o null    | Sí               |
  | `fixes`          | objeto o null    | No               |
  | `caveats`        | lista de cadenas | Sí               |

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

  Inicia un Pulse en un sitio, o una revisión de su último Pulse.

  * Permiso: `pulse`
  * Responde 201 cuando funciona

  **Cuerpo**

  | Campo            | Tipo   | Obligatorio |
  | ---------------- | ------ | ----------- |
  | `idempotencyKey` | string | Sí          |

  **data**

  | Campo                       | Tipo                                                                                | Siempre presente |
  | --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
  | `id`                        | cadena                                                                              | Sí               |
  | `kind`                      | `pulse`, `box` (Deep, nombre heredado)                                              | Sí               |
  | `projectId`                 | cadena                                                                              | Sí               |
  | `target`                    | cadena                                                                              | Sí               |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Sí               |
  | `mode`                      | `autonomous`, `authenticated`, `active` o null                                      | Sí               |
  | `createdAt`                 | cadena o null                                                                       | Sí               |
  | `finishedAt`                | cadena o null                                                                       | Sí               |
  | `webPath`                   | cadena                                                                              | Sí               |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` o null                                                  | No               |
  | `headline`                  | objeto                                                                              | No               |
  | `webUrl`                    | cadena                                                                              | No               |
  | `suggestedPollAfterSeconds` | entero o null                                                                       | No               |
  | `dismissals`                | objeto                                                                              | No               |
  | `baselineRunId`             | cadena o null                                                                       | Sí               |
  | `open`                      | objeto                                                                              | Sí               |
  | `findingCount`              | entero                                                                              | Sí               |
  | `progress`                  | objeto o null                                                                       | Sí               |
  | `coverage`                  | objeto                                                                              | Sí               |
  | `caveats`                   | lista de cadenas                                                                    | Sí               |
  | `outcome`                   | objeto o null                                                                       | No               |
  | `exposureCheck`             | objeto o null                                                                       | No               |
  | `coverageReceipt`           | objeto o null                                                                       | No               |

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

  Inicia el escaneo Deep de una versión con una clave de CI creada para este sitio con Deep permitido.

  * Permiso: `deep`
  * Responde 201 cuando funciona

  **Cuerpo**

  | Campo            | Tipo   | Obligatorio |
  | ---------------- | ------ | ----------- |
  | `idempotencyKey` | string | Sí          |

  **data**

  | Campo                       | Tipo                                                                                | Siempre presente |
  | --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
  | `id`                        | cadena                                                                              | Sí               |
  | `kind`                      | `pulse`, `box` (Deep, nombre heredado)                                              | Sí               |
  | `projectId`                 | cadena                                                                              | Sí               |
  | `target`                    | cadena                                                                              | Sí               |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Sí               |
  | `mode`                      | `autonomous`, `authenticated`, `active` o null                                      | Sí               |
  | `createdAt`                 | cadena o null                                                                       | Sí               |
  | `finishedAt`                | cadena o null                                                                       | Sí               |
  | `webPath`                   | cadena                                                                              | Sí               |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` o null                                                  | No               |
  | `headline`                  | objeto                                                                              | No               |
  | `webUrl`                    | cadena                                                                              | No               |
  | `suggestedPollAfterSeconds` | entero o null                                                                       | No               |
  | `dismissals`                | objeto                                                                              | No               |
  | `baselineRunId`             | cadena o null                                                                       | Sí               |
  | `open`                      | objeto                                                                              | Sí               |
  | `findingCount`              | entero                                                                              | Sí               |
  | `progress`                  | objeto o null                                                                       | Sí               |
  | `coverage`                  | objeto                                                                              | Sí               |
  | `caveats`                   | lista de cadenas                                                                    | Sí               |
  | `outcome`                   | objeto o null                                                                       | No               |
  | `exposureCheck`             | objeto o null                                                                       | No               |
  | `coverageReceipt`           | objeto o null                                                                       | No               |

  **GET /runs**

  Escaneos Pulse y Deep, del más reciente al más antiguo.

  * Permiso: `read`

  **Consulta**

  | Campo             | Tipo                                                                                | Obligatorio |
  | ----------------- | ----------------------------------------------------------------------------------- | ----------- |
  | `projectId`       | cadena                                                                              | No          |
  | `kind`            | `pulse`, `box` (Deep, nombre heredado)                                              | No          |
  | `assessmentLevel` | `pulse`, `standard`, `deep`                                                         | No          |
  | `status`          | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | No          |
  | `limit`           | integer                                                                             | No          |

  **Cada elemento de data**

  | Campo                       | Tipo                                                                                | Siempre presente |
  | --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
  | `id`                        | cadena                                                                              | Sí               |
  | `kind`                      | `pulse`, `box` (Deep, nombre heredado)                                              | Sí               |
  | `projectId`                 | cadena                                                                              | Sí               |
  | `target`                    | cadena                                                                              | Sí               |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Sí               |
  | `mode`                      | `autonomous`, `authenticated`, `active` o null                                      | Sí               |
  | `createdAt`                 | cadena o null                                                                       | Sí               |
  | `finishedAt`                | cadena o null                                                                       | Sí               |
  | `webPath`                   | cadena                                                                              | Sí               |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` o null                                                  | No               |
  | `headline`                  | objeto                                                                              | No               |
  | `webUrl`                    | cadena                                                                              | No               |
  | `suggestedPollAfterSeconds` | entero o null                                                                       | No               |

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

  Un escaneo con su resumen y sus recuentos.

  * Permiso: `read`

  **data**

  | Campo                       | Tipo                                                                                | Siempre presente |
  | --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
  | `id`                        | cadena                                                                              | Sí               |
  | `kind`                      | `pulse`, `box` (Deep, nombre heredado)                                              | Sí               |
  | `projectId`                 | cadena                                                                              | Sí               |
  | `target`                    | cadena                                                                              | Sí               |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Sí               |
  | `mode`                      | `autonomous`, `authenticated`, `active` o null                                      | Sí               |
  | `createdAt`                 | cadena o null                                                                       | Sí               |
  | `finishedAt`                | cadena o null                                                                       | Sí               |
  | `webPath`                   | cadena                                                                              | Sí               |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` o null                                                  | No               |
  | `headline`                  | objeto                                                                              | No               |
  | `webUrl`                    | cadena                                                                              | No               |
  | `suggestedPollAfterSeconds` | entero o null                                                                       | No               |
  | `dismissals`                | objeto                                                                              | No               |
  | `baselineRunId`             | cadena o null                                                                       | Sí               |
  | `open`                      | objeto                                                                              | Sí               |
  | `findingCount`              | entero                                                                              | Sí               |
  | `progress`                  | objeto o null                                                                       | Sí               |
  | `coverage`                  | objeto                                                                              | Sí               |
  | `caveats`                   | lista de cadenas                                                                    | Sí               |
  | `outcome`                   | objeto o null                                                                       | No               |
  | `exposureCheck`             | objeto o null                                                                       | No               |
  | `coverageReceipt`           | objeto o null                                                                       | No               |

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

  Hallazgos de un escaneo.

  * Permiso: `read`

  **Consulta**

  | Campo      | Tipo                                          | Obligatorio |
  | ---------- | --------------------------------------------- | ----------- |
  | `severity` | `critical`, `high`, `medium`, `low`, `info`   | No          |
  | `state`    | `attention`, `information`, `unknown`, `pass` | No          |
  | `all`      | `true`, `false`                               | No          |

  **Cada elemento de data**

  | Campo            | Tipo                                                 | Siempre presente |
  | ---------------- | ---------------------------------------------------- | ---------------- |
  | `dismissal`      | objeto                                               | No               |
  | `id`             | cadena                                               | Sí               |
  | `code`           | string                                               | No               |
  | `runId`          | cadena                                               | Sí               |
  | `kind`           | `pulse`, `box` (Deep, nombre heredado)               | Sí               |
  | `severity`       | `critical`, `high`, `medium`, `low`, `info`          | Sí               |
  | `state`          | `attention`, `information`, `unknown`, `pass`        | Sí               |
  | `category`       | cadena                                               | Sí               |
  | `title`          | cadena                                               | Sí               |
  | `meaning`        | cadena                                               | Sí               |
  | `fix`            | cadena o null                                        | Sí               |
  | `confidence`     | cadena                                               | Sí               |
  | `evidence`       | lista de cadenas                                     | Sí               |
  | `sources`        | lista de string                                      | Yes              |
  | `steps`          | lista de cadenas                                     | Sí               |
  | `webPath`        | cadena                                               | Sí               |
  | `webUrl`         | cadena                                               | No               |
  | `verdict`        | `confirmed`, `needs_review`, `not_actionable` o null | No               |
  | `certainty`      | `high`, `medium`, `low` o null                       | No               |
  | `exploitability` | `direct`, `conditional`, `hygiene`, `none` o null    | No               |
  | `proof`          | objeto o null                                        | No               |
  | `proofGap`       | cadena o null                                        | No               |
  | `urgency`        | `now`, `week`, `later`, `none`                       | No               |
  | `howSure`        | `confirmed`, `likely`, `possible` o null             | No               |
  | `lifecycle`      | objeto o null                                        | No               |

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

  Un hallazgo con su evidencia anonimizada.

  * Permiso: `read`

  **data**

  | Campo            | Tipo                                                 | Siempre presente |
  | ---------------- | ---------------------------------------------------- | ---------------- |
  | `dismissal`      | objeto                                               | No               |
  | `id`             | cadena                                               | Sí               |
  | `code`           | string                                               | No               |
  | `runId`          | cadena                                               | Sí               |
  | `kind`           | `pulse`, `box` (Deep, nombre heredado)               | Sí               |
  | `severity`       | `critical`, `high`, `medium`, `low`, `info`          | Sí               |
  | `state`          | `attention`, `information`, `unknown`, `pass`        | Sí               |
  | `category`       | cadena                                               | Sí               |
  | `title`          | cadena                                               | Sí               |
  | `meaning`        | cadena                                               | Sí               |
  | `fix`            | cadena o null                                        | Sí               |
  | `confidence`     | cadena                                               | Sí               |
  | `evidence`       | lista de cadenas                                     | Sí               |
  | `sources`        | lista de string                                      | Yes              |
  | `steps`          | lista de cadenas                                     | Sí               |
  | `webPath`        | cadena                                               | Sí               |
  | `webUrl`         | cadena                                               | No               |
  | `verdict`        | `confirmed`, `needs_review`, `not_actionable` o null | No               |
  | `certainty`      | `high`, `medium`, `low` o null                       | No               |
  | `exploitability` | `direct`, `conditional`, `hygiene`, `none` o null    | No               |
  | `proof`          | objeto o null                                        | No               |
  | `proofGap`       | cadena o null                                        | No               |
  | `urgency`        | `now`, `week`, `later`, `none`                       | No               |
  | `howSure`        | `confirmed`, `likely`, `possible` o null             | No               |
  | `lifecycle`      | objeto o null                                        | No               |

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

  Las correcciones de un escaneo en un único resumen en Markdown.

  * Permiso: `read`

  **Consulta**

  | Campo       | Tipo                                                                                      | Obligatorio |
  | ----------- | ----------------------------------------------------------------------------------------- | ----------- |
  | `findingId` | string                                                                                    | No          |
  | `agent`     | `claude-code`, `codex`, `cursor`, `vscode`, `opencode`, `lovable`, `bolt`, `replit`, `v0` | No          |

  **data**

  | Campo        | Tipo             | Siempre presente |
  | ------------ | ---------------- | ---------------- |
  | `runId`      | cadena           | Sí               |
  | `findingIds` | lista de cadenas | Sí               |
  | `saved`      | booleano         | Sí               |
  | `markdown`   | cadena           | Sí               |
  | `webUrl`     | cadena           | No               |

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

  Qué cambió entre un escaneo y el anterior.

  * Permiso: `read`

  **data**

  | Campo           | Tipo             | Siempre presente |
  | --------------- | ---------------- | ---------------- |
  | `runId`         | cadena           | Sí               |
  | `baselineRunId` | cadena           | Sí               |
  | `error`         | cadena o null    | Sí               |
  | `changes`       | lista de objetos | Sí               |
  | `webUrl`        | cadena           | No               |

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

  Los resultados de un escaneo como PDF, en palabras sencillas o técnico, codificado en base64.

  * Permiso: `read`

  **Consulta**

  | Campo     | Tipo                 | Obligatorio |
  | --------- | -------------------- | ----------- |
  | `dialect` | `plain`, `technical` | Sí          |

  **data**

  | Campo      | Tipo   | Siempre presente |
  | ---------- | ------ | ---------------- |
  | `filename` | cadena | Sí               |
  | `mimeType` | cadena | Sí               |
  | `base64`   | cadena | Sí               |
</details>