# Ferramentas, recursos e prompts

Tudo o que o servidor MCP hospedado do Lockpick oferece a um assistente, gerado a partir do próprio servidor.

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

O servidor hospedado oferece 47 ferramentas, 2 recursos e 3 prompts. Cada ferramenta precisa da [permissão](/pt-BR/mcp/permissions) indicada. As ferramentas que alteram algo são marcadas para que os assistentes peçam a sua confirmação antes, mas quem decide são a permissão e as próprias verificações do Lockpick. Toda ferramenta também aceita `format`: `markdown` para texto que um assistente lê para você, ou `json` para dados.

## Ferramentas

### lockpick_whoami

**Quem sou eu**

A pessoa conectada, o workspace que esta credencial lê, os escopos e a validade da credencial, e o que ela pode iniciar.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

Não recebe outras entradas.

### lockpick_get_allowance

**Obter a cota**

Se o acesso da pessoa ao Lockpick está ativo, a cota disponível de Pulse e Deep com as datas de renovação, os créditos, e qual site tem o Pulse gratuito deste mês. Leia antes de citar um custo.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

Não recebe outras entradas.

### lockpick_list_sites

**Listar sites**

Sites do workspace que esta credencial pode ler, do mais recente para o mais antigo, cada um com o seu scan Pulse e Deep mais recente. Paginado com um cursor.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo    | Obrigatório |
| -------- | ------- | ----------- |
| `limit`  | integer | Não         |
| `cursor` | string  | Não         |

### lockpick_site_status

**Situação do site**

A situação de um site: os seus scans Pulse e Deep mais recentes com nota e pontuação, achados abertos por gravidade, limites de cobertura, a variação da última nova verificação e o que é relevante agora (avisos que afetam as versões fixadas ou podem afetar a stack dele, componentes vistos no ar, os explorados ativamente e as correções recentes, cada um com as suas provas).

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `siteId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>"
}
```

### lockpick_get_site_history

**Histórico do site**

O histórico de segurança de um site: a evolução da pontuação de cada profundidade de varredura (Pulse, Standard e Deep separados), os achados abertos ao longo do tempo, as correções, as regressões e o tempo mediano até a correção. Um ponto marcado com newBaseline foi pontuado com outro mecanismo, rubrica ou política de pontuação que o anterior, então as pontuações anteriores não são comparáveis às posteriores. Uma correção significa que uma varredura comparável posterior não viu mais o achado, não que a correção esteja comprovada.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `siteId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>"
}
```

### lockpick_add_site

**Add a site**

Adiciona um site pelo endereço ao workspace, ou devolve o site existente com esse endereço. Só para um site que a pessoa possui ou tem permissão para testar. Adicionar um site não inicia um scan. Uma nova tentativa com a mesma idempotencyKey devolve o mesmo site.

* Permissão: Sites (`lockpick.sites`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo   | Obrigatório |
| ---------------- | ------ | ----------- |
| `url`            | string | Sim         |
| `name`           | string | Não         |
| `idempotencyKey` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_switch_free_site

**Trocar o site gratuito**

Remove um dos sites da pessoa para que o Pulse gratuito deste mês possa passar para outro site. Chame só quando a pessoa pedir a troca e indicar o site a remover: passe o id dele como removeSiteId com confirmRemoval: true, nunca um site que você escolheu. O site removido deixa de ser monitorado, os scans dele continuam legíveis, e um gerente pode restaurá-lo no Lockpick (restoreUrl). Com checkId, uma verificação rápida do novo site, também inicia um Pulse nele, que usa um Pulse gratuito; o resultado indica o scan, a cobrança e a cota restante. Sem checkId, nada é iniciado. Recusado sem remover nada quando há um scan desse site em andamento, quando a remoção não liberaria o Pulse gratuito, quando a verificação rápida expirou ou quando não resta nenhum Pulse gratuito. Se o site foi removido mas o Pulse não iniciou, o erro informa isso e leva a iniciá-lo no Lockpick. Uma nova tentativa com a mesma idempotencyKey devolve o mesmo resultado e não altera mais nada.

* Permissão: Sites (`lockpick.sites`) e verificações Pulse (`lockpick.pulse`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo    | Obrigatório |
| ---------------- | ------- | ----------- |
| `removeSiteId`   | string  | Sim         |
| `checkId`        | string  | Não         |
| `idempotencyKey` | string  | Sim         |
| `confirmRemoval` | boolean | Sim         |

```json title="Exemplo de argumentos"
{
  "removeSiteId": "<removeSiteId>",
  "idempotencyKey": "a-unique-key",
  "confirmRemoval": true
}
```

### lockpick_list_scans

**Listar scans**

Scans do mais recente para o mais antigo, filtráveis por site, tipo, nível de avaliação (pulse, standard, deep) e situação, cada um com a nota e a pontuação. Paginado com um cursor.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada           | Tipo                                                                                | Obrigatório |
| ----------------- | ----------------------------------------------------------------------------------- | ----------- |
| `siteId`          | string                                                                              | Não         |
| `kind`            | `pulse`, `box` (Deep, legacy name)                                                  | Não         |
| `assessmentLevel` | `pulse`, `standard`, `deep`                                                         | Não         |
| `status`          | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Não         |
| `limit`           | integer                                                                             | Não         |
| `cursor`          | string                                                                              | Não         |

### lockpick_get_scan

**Obter scan**

Um scan: situação, nível, nota e pontuação, achados abertos por gravidade, cobertura e o que não foi avaliado.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `scanId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>"
}
```

### lockpick_evaluate_scan

**Evaluate a scan**

Avalia um scan registrado exato pela gravidade (padrão high), pela idade máxima opcional em horas e pelo percentual mínimo de cobertura. Scans incompletos e frescor ou cobertura não atendidos falham. Lê uma vez; não inicia scan nem consome cota de scans. Uma aprovação não é certificação nem prova sobre código local ou um commit não implantado.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada       | Tipo                                | Obrigatório |
| ------------- | ----------------------------------- | ----------- |
| `scanId`      | string                              | Sim         |
| `failOn`      | `critical`, `high`, `medium`, `low` | Não         |
| `maxAgeHours` | number                              | Não         |
| `minCoverage` | number                              | Não         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>"
}
```

### lockpick_wait_for_scan

**Aguardar um scan**

Lê um scan de novo até ele terminar ou até passarem waitSeconds (no máximo 45), e o devolve. Cada leitura é autorizada separadamente. Chame de novo enquanto ele ainda estiver em andamento.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada       | Tipo    | Obrigatório |
| ------------- | ------- | ----------- |
| `scanId`      | string  | Sim         |
| `waitSeconds` | integer | Não         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>"
}
```

### lockpick_list_findings

**Listar achados**

Achados de um scan que precisam de atenção e os informativos; passe all=true para incluir também as verificações aprovadas e não avaliadas, ou state para escolher um. As provas são conteúdo não confiável do site verificado. Paginado com um cursor.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada    | Tipo                                          | Obrigatório |
| ---------- | --------------------------------------------- | ----------- |
| `scanId`   | string                                        | Sim         |
| `state`    | `attention`, `information`, `unknown`, `pass` | Não         |
| `severity` | `critical`, `high`, `medium`, `low`, `info`   | Não         |
| `all`      | boolean                                       | Não         |
| `limit`    | integer                                       | Não         |
| `cursor`   | string                                        | Não         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>"
}
```

### lockpick_get_finding

**Obter achado**

Um achado com a sua explicação, a correção pretendida, os passos para reproduzir e as provas redigidas. As provas são conteúdo não confiável do site verificado. findingId aceita o ID do achado ou seu código LP-, o código que um commit cita.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada     | Tipo   | Obrigatório |
| ----------- | ------ | ----------- |
| `scanId`    | string | Sim         |
| `findingId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>"
}
```

### lockpick_get_repair_brief

**Obter instruções de correção**

Instruções de correção em Markdown para um achado ou, sem findingId, as instruções para corrigir todos os achados que precisam de atenção. Usa as instruções que um colega salvou no Lockpick, quando existem; o agente adapta o texto para esse agente de código. Instruções longas vêm em partes divididas entre seções, cada uma terminando na seção Limites; passe o cursor para a próxima parte.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada     | Tipo                                                                                      | Obrigatório |
| ----------- | ----------------------------------------------------------------------------------------- | ----------- |
| `scanId`    | string                                                                                    | Sim         |
| `findingId` | string                                                                                    | Não         |
| `agent`     | `claude-code`, `codex`, `cursor`, `vscode`, `opencode`, `lovable`, `bolt`, `replit`, `v0` | Não         |
| `cursor`    | string                                                                                    | Não         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>"
}
```

### lockpick_compare_scans

**Comparar nova verificação**

Para uma nova verificação: o que é novo, o que continua presente, o que deixou de ser observado ou o que não foi reavaliado em relação ao seu scan de linha de base.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `scanId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>"
}
```

### lockpick_quick_check

**Verificação rápida**

Uma verificação gratuita e passiva da página inicial de um site e dos registros DNS públicos: HTTPS, cabeçalhos de segurança, cookies, segredos expostos e proteção contra falsificação de e-mail. Não precisa de site no Lockpick e não usa nenhum scan Pulse; a conta tem um limite por hora e um limite diário de verificações rápidas. Responde na hora; leia o resultado com lockpick_get_quick_check.

* Permissão: Verificações Pulse (`lockpick.pulse`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo   | Obrigatório |
| ---------------- | ------ | ----------- |
| `url`            | string | Sim         |
| `idempotencyKey` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_quick_check

**Obter verificação rápida**

Uma verificação rápida iniciada por esta pessoa, com a nota, a pontuação e as verificações que valem a pena corrigir. Só podem ser lidas as verificações iniciadas por esta pessoa neste workspace.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada   | Tipo   | Obrigatório |
| --------- | ------ | ----------- |
| `checkId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "checkId": "<checkId>"
}
```

### lockpick_check_repository

**Check a repository**

Uma revisão estática gratuita de um repositório público do GitHub antes de ser instalado em um agente de programação com IA: um plugin ou marketplace do Claude Code, uma skill de agente, um servidor MCP ou a configuração dele, ou a configuração de agente de um app (hooks, configurações, CLAUDE.md, AGENTS.md). Passe qualquer link do GitHub, um owner/repo ou o comando de instalação indicado pelo README. O Lockpick lê um commit fixado e não roda nada. Não precisa de site e não usa nenhum scan Pulse; a conta tem um limite por hora e um limite diário. Responde na hora; leia o resultado com lockpick_get_repository_check. Passe depth 'deep' só quando a pessoa pedir uma verificação Deep do repositório: ela também lê cada lockfile e os últimos 50 commits em busca de chaves vazadas, usa uma revisão mais forte e um escaneamento Deep do plano.

* Permissão: Verificações Pulse (`lockpick.pulse`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo           | Obrigatório |
| ---------------- | -------------- | ----------- |
| `url`            | string         | Sim         |
| `mode`           | `skill`, `app` | Não         |
| `depth`          | `free`, `deep` | Não         |
| `idempotencyKey` | string         | Sim         |

```json title="Exemplo de argumentos"
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_repository_check

**Obter verificação de repositório**

Uma verificação de repositório iniciada por esta pessoa: o veredito de instalação (ou o risco do app), os achados com arquivo e linha, a cobertura e o link do relatório. Só podem ser lidas as verificações iniciadas por esta pessoa neste workspace.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada   | Tipo   | Obrigatório |
| --------- | ------ | ----------- |
| `checkId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "checkId": "<checkId>"
}
```

### lockpick_start_pulse

**Iniciar um scan Pulse**

Inicia um scan Pulse em um site que a pessoa possui ou tem permissão para testar (uma nova verificação do último Pulse dele, quando for compatível). Usa um scan Pulse da cota informada por lockpick_get_allowance; leia-a antes de citar um custo. Responde na hora com o scan, a cobrança e a cota; acompanhe com lockpick_wait_for_scan. Uma nova tentativa com a mesma idempotencyKey devolve o mesmo scan e não cobra mais nada. Não pode iniciar um scan Deep nem o Master Key.

* Permissão: Verificações Pulse (`lockpick.pulse`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo   | Obrigatório |
| ---------------- | ------ | ----------- |
| `siteId`         | string | Sim         |
| `idempotencyKey` | string | Sim         |
| `baselineScanId` | string | Não         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_start_deep_verification

**Iniciar prova de propriedade Deep**

Emite uma prova de propriedade de um site antes de um scan Deep: um registro DNS TXT, uma meta tag na página inicial ou um arquivo que a pessoa publica no próprio endereço do site. Devolve exatamente o que publicar; o valor só aparece nesta resposta. A prova expira após 30 minutos e permite um número limitado de verificações.

* Permissão: Verificações Deep (`lockpick.deep`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo                  | Obrigatório |
| ---------------- | --------------------- | ----------- |
| `siteId`         | string                | Sim         |
| `method`         | `dns`, `file`, `meta` | Sim         |
| `idempotencyKey` | string                | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>",
  "method": "dns",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_check_deep_verification

**Verificar a prova de propriedade Deep**

Verifica uma vez a prova de propriedade publicada de um site e devolve a sua situação. Cada chamada usa uma das verificações da prova; por isso, chame só depois que a pessoa disser que o registro ou o arquivo foi publicado.

* Permissão: Verificações Deep (`lockpick.deep`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo   | Obrigatório |
| ---------------- | ------ | ----------- |
| `siteId`         | string | Sim         |
| `verificationId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>",
  "verificationId": "<verificationId>"
}
```

### lockpick_prepare_deep

**Preparar um scan Deep**

Prepara um scan Deep de um site com uma prova de propriedade verificada, e devolve o custo e o link de aprovação. Nada começa até a pessoa abrir o link e aprovar este scan exato no Lockpick; um agente nunca aprova. Uma nova tentativa com a mesma idempotencyKey devolve o mesmo scan preparado.

* Permissão: Verificações Deep (`lockpick.deep`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo   | Obrigatório |
| ---------------- | ------ | ----------- |
| `siteId`         | string | Sim         |
| `verificationId` | string | Sim         |
| `idempotencyKey` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>",
  "verificationId": "<verificationId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_start_deep

**Iniciar um scan Deep aprovado**

Inicia um scan Deep que a pessoa aprovou no Lockpick, pelo custo indicado quando foi preparado. Antes da aprovação, responde que a aprovação é necessária, com o link. Chamá-lo de novo devolve o mesmo scan e não cobra mais nada. Acompanhe com lockpick_wait_for_scan.

* Permissão: Verificações Deep (`lockpick.deep`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada       | Tipo   | Obrigatório |
| ------------- | ------ | ----------- |
| `operationId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "operationId": "<operationId>"
}
```

### lockpick_recheck_dns

**Verificar o DNS de novo**

Gratuito: lê de novo os registros DNS públicos por trás de um achado de DNS de um scan concluído, depois que a pessoa os alterou. Nunca contata o site e nunca altera a nota do scan; no máximo uma verificação por scan por minuto, e uma verificação já em andamento é reaproveitada. Uma nova verificação completa é lockpick_start_pulse e custa um Pulse.

* Permissão: Verificações Pulse (`lockpick.pulse`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo   | Obrigatório |
| ---------------- | ------ | ----------- |
| `scanId`         | string | Sim         |
| `findingId`      | string | Sim         |
| `idempotencyKey` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_dns_recheck

**Obter a verificação de DNS de novo**

A última verificação gratuita de DNS de novo de um scan: por achado de DNS, ainda observado, já não observado ou desconhecido. A nota original do scan nunca muda.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `scanId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>"
}
```

### lockpick_recheck_finding

**Verificar esta correção**

Gratuito: depois que a pessoa fizer o deploy de uma correção para um achado de um scan Deep concluído, lê novamente apenas as páginas, scripts ou caminhos onde esse achado foi visto e responde corrigido, ainda aberto ou não foi possível verificar (com o motivo). Envia algumas solicitações ao site, então só chame quando a pessoa pedir. No máximo 5 verificações por achado e 50 por espaço de trabalho por dia; uma verificação em andamento é reaproveitada. Nunca altera a nota do scan; uma nova verificação completa é um novo scan Deep. Depois, chame lockpick_get_finding_recheck enquanto estiver pendente.

* Permissão: Verificações Deep (`lockpick.deep`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo   | Obrigatório |
| ---------------- | ------ | ----------- |
| `scanId`         | string | Sim         |
| `findingId`      | string | Sim         |
| `idempotencyKey` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_finding_recheck

**Obter Verificar esta correção**

A Verificar esta correção mais recente de um achado de um scan Deep: se há uma verificação em andamento, o resultado mais recente (corrigido, ainda aberto ou não foi possível verificar, com o motivo e cada caminho lido de novo) e quantas verificações restam hoje. A nota original do scan nunca muda.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada     | Tipo   | Obrigatório |
| ----------- | ------ | ----------- |
| `scanId`    | string | Sim         |
| `findingId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>"
}
```

### lockpick_send_dependencies

**Enviar versões de pacotes**

Envia os nomes e as versões exatas que o próprio projeto de um site fixa (npm, PyPI, Composer, Go, RubyGems, Maven, crates.io, NuGet, Pub, Hex e Swift), nunca código, caminhos ou endereços de registro, e responde quais avisos conhecidos afetam essas versões exatas, com a versão corrigida. Passe `packages` lidos do lockfile, ou `path`, a pasta do projeto, ao usar o servidor local `lockpick mcp` (ele lê package-lock.json, npm-shrinkwrap.json, pnpm-lock.yaml, yarn.lock, bun.lock, requirements.txt, poetry.lock, uv.lock, Pipfile.lock, pdm.lock, composer.lock, go.mod, Gemfile.lock, gems.locked, gradle.lockfile, Cargo.lock, packages.lock.json, pubspec.lock, mix.lock, Package.resolved e pom.xml sozinho). Cada chamada substitui a lista do site; uma lista `packages` vazia a esquece. Só chame quando a pessoa pedir ou concordar.

* Permissão: Sites (`lockpick.sites`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada          | Tipo                                                                                                                                                                                                                                                                                                                                                                                                                                | Obrigatório |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| `inventory`      | object                                                                                                                                                                                                                                                                                                                                                                                                                              | Não         |
| `siteId`         | string                                                                                                                                                                                                                                                                                                                                                                                                                              | Sim         |
| `packages`       | list of object                                                                                                                                                                                                                                                                                                                                                                                                                      | Não         |
| `sources`        | list of `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` | Não         |
| `path`           | string                                                                                                                                                                                                                                                                                                                                                                                                                              | Não         |
| `idempotencyKey` | string                                                                                                                                                                                                                                                                                                                                                                                                                              | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_github_link

**Obter vínculo do GitHub**

O vínculo do GitHub de um site: o repositório, a branch ou o commit e os lockfiles que ele verifica, a leitura mais recente de cada lockfile, se o comentário de segurança do Deep em pull requests está ligado, se a lista do GitHub da própria pessoa está atual e se ela gerencia o site e, portanto, pode mudar o vínculo.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `siteId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>"
}
```

### lockpick_list_github_repositories

**Listar meus repositórios do GitHub**

Os repositórios da lista do GitHub da própria pessoa neste workspace, com a branch padrão de cada um: os únicos aos quais um site se vincula na hora. Filtre com search (parte de owner/name). A lista é a que a pessoa autorizou por último no GitHub; quando ela não existe ou tem mais de 30 dias, fica vazia ou desatualizada, e um vínculo retorna uma página de aprovação.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo    | Obrigatório |
| -------- | ------- | ----------- |
| `search` | string  | Não         |
| `limit`  | integer | Não         |

### lockpick_link_github_repository

**Vincular um repositório do GitHub**

Vincula um site a um repositório do GitHub (owner/name) e lê os lockfiles dele: ref é a branch, a tag ou o commit (a branch padrão quando omitido) e lockfiles é 'auto' (todo lockfile do repositório, procurado de novo a cada leitura, no máximo 20) ou uma lista de caminhos de lockfiles dentro do repositório para verificar exatamente. Quando omitido, vincular de novo o mesmo repositório mantém uma lista escolhida antes; caso contrário, 'auto'. Chame somente quando a pessoa pediu para vincular esse repositório a esse site; é preciso uma pessoa que gerencie o site. O repositório precisa estar na lista do GitHub da própria pessoa neste workspace (lockpick_list_github_repositories); caso contrário, o resultado é approval_required com um approvalUrl: passe esse link para a pessoa, nunca o abra nem o aprove por ela e, depois, chame lockpick_get_github_link_request com o requestId a cada pollAfterSeconds até o estado ser final (linked, not_reachable, declined, failed ou expired).

* Permissão: Sites (`lockpick.sites`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada               | Tipo                     | Obrigatório |
| --------------------- | ------------------------ | ----------- |
| `repository`          | string                   | Sim         |
| `ref`                 | string                   | Não         |
| `lockfiles`           | string or list of string | Não         |
| `pullRequestComments` | `on`, `off`              | Não         |
| `siteId`              | string                   | Sim         |

```json title="Exemplo de argumentos"
{
  "repository": "<repository>",
  "siteId": "<siteId>"
}
```

### lockpick_get_github_link_request

**Obter solicitação de vínculo do GitHub**

Em que ponto está um vínculo do GitHub que aguarda a aprovação da pessoa: pending (a página ainda não foi aberta), authorizing (ela está no GitHub) ou um estado final: linked (com o vínculo do site), not_reachable (o GitHub não listou o repositório para ela), declined, failed ou expired. Consulte a cada pollAfterSeconds do resultado do vínculo até o estado ser final; nunca abra nem aprove a página pela pessoa.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada     | Tipo   | Obrigatório |
| ----------- | ------ | ----------- |
| `requestId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "requestId": "<requestId>"
}
```

### lockpick_unlink_github_repository

**Desvincular um repositório do GitHub**

Desvincula o repositório do GitHub de um site e descarta a leitura do lockfile. Chame somente quando a pessoa pediu para desvincular; é preciso uma pessoa que gerencie o site. Isso não desinstala o Lockpick App no GitHub. Desvincular um site sem repositório não muda nada.

* Permissão: Sites (`lockpick.sites`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `siteId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>"
}
```

### lockpick_set_github_pr_comments

**Definir comentários em pull requests do GitHub**

Ativa ou desativa o comentário de segurança do Deep nos pull requests do repositório vinculado a um site: quando ativado, o Lockpick comenta em cada pull request as dependências vulneráveis que encontrar. Chame somente quando a pessoa pedir; é preciso uma pessoa que gerencie o site e um repositório vinculado, e ativar exige pullRequestComments.canEnable de lockpick_get_github_link. Retorna o vínculo do GitHub do site.

* Permissão: Sites (`lockpick.sites`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada   | Tipo    | Obrigatório |
| --------- | ------- | ----------- |
| `enabled` | boolean | Sim         |
| `siteId`  | string  | Sim         |

```json title="Exemplo de argumentos"
{
  "enabled": true,
  "siteId": "<siteId>"
}
```

### lockpick_get_schedules

**Obter verificações automáticas**

As verificações automáticas de um site: o agendamento Pulse e o agendamento Deep dele (no máximo um de cada; ativo, pausado ou removido, com a frequência, a hora UTC em que as execuções devem acontecer, a próxima execução, até quando vale o consentimento e como terminou a última execução), as frequências que o plano permite em cada profundidade e se as verificações automáticas estão configuradas neste servidor do Lockpick.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `siteId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>"
}
```

### lockpick_set_pulse_schedule

**Configurar verificação automática Pulse**

Configura, altera ou retoma a verificação automática Pulse de um site, que então roda um scan Pulse do site na frequência dela; cada execução usa a cota como qualquer Pulse. cadence é daily, weekly ou monthly e precisa ser uma que o plano permite nessa profundidade (allowed em lockpick_get_schedules); runHourUtc é a hora UTC em que as execuções devem acontecer (0-23), null para qualquer hora. Um agendamento novo precisa de um cadence; um existente mantém o que for omitido, e um pausado ou removido é retomado, então chamar sem cadence o retoma. Chame só quando a pessoa pedir; exige uma pessoa que possa iniciar scans no site. Devolve o agendamento.

* Permissão: Verificações Pulse (`lockpick.pulse`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada      | Tipo                         | Obrigatório |
| ------------ | ---------------------------- | ----------- |
| `cadence`    | `daily`, `weekly`, `monthly` | Não         |
| `runHourUtc` | integer or null              | Não         |
| `siteId`     | string                       | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>"
}
```

### lockpick_pause_pulse_schedule

**Pausar verificação automática Pulse**

Pausa na hora a verificação automática Pulse de um site: nenhuma execução Pulse agendada até ela ser retomada com lockpick_set_pulse_schedule. Pausar é sempre permitido, qualquer que seja o plano. Devolve o agendamento.

* Permissão: Verificações Pulse (`lockpick.pulse`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `siteId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>"
}
```

### lockpick_prepare_deep_schedule

**Preparar uma verificação automática Deep**

Prepara a configuração, a alteração ou a retomada da verificação automática Deep de um site e devolve uma approvalUrl; por si só não altera nada. Nada é configurado até a pessoa abrir o link e aprovar este agendamento exato no Lockpick; um agente nunca aprova. Passe o link para a pessoa e depois chame lockpick_get_schedule_request com o requestId dele a cada pollAfterSeconds até o estado ser final (approved, declined, failed ou expired). cadence é daily, weekly ou monthly e precisa ser uma que o plano permite nessa profundidade (allowed em lockpick_get_schedules); runHourUtc é a hora UTC em que as execuções devem acontecer (0-23), null para qualquer hora. Um agendamento novo precisa de um cadence; um existente mantém o que for omitido, e um pausado ou removido é retomado, então chamar sem cadence o retoma.

* Permissão: Verificações Deep (`lockpick.deep`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada      | Tipo                         | Obrigatório |
| ------------ | ---------------------------- | ----------- |
| `cadence`    | `daily`, `weekly`, `monthly` | Não         |
| `runHourUtc` | integer or null              | Não         |
| `siteId`     | string                       | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>"
}
```

### lockpick_pause_deep_schedule

**Pausar verificação automática Deep**

Pausa na hora a verificação automática Deep de um site, sem página de aprovação: nenhuma execução Deep agendada até ela ser retomada por lockpick_prepare_deep_schedule e pela aprovação da pessoa. Pausar é sempre permitido, qualquer que seja o plano. Devolve o agendamento.

* Permissão: Verificações Deep (`lockpick.deep`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `siteId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>"
}
```

### lockpick_get_schedule_request

**Obter solicitação de verificação automática Deep**

Em que ponto está uma verificação automática Deep que aguarda a aprovação da pessoa: pending, ou um estado final: approved (com o agendamento), declined, failed (failure diz por que o agendamento não pôde ser configurado) ou expired. Consulte a cada pollAfterSeconds de lockpick_prepare_deep_schedule até o estado ser final; nunca abra nem aprove a página pela pessoa.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada     | Tipo   | Obrigatório |
| ----------- | ------ | ----------- |
| `requestId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "requestId": "<requestId>"
}
```

### lockpick_list_shares

**Listar links de compartilhamento**

Os resultados Pulse de um site que têm um link público de compartilhamento ativo, os mais recentes primeiro, com quando cada um foi compartilhado. Os links em si não são mostrados de novo; lockpick_share_scan com replace cria um novo.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `siteId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "siteId": "<siteId>"
}
```

### lockpick_share_scan

**Compartilhar um resultado Pulse**

Publica um resultado Pulse concluído em um link público que qualquer pessoa que o tenha pode abrir sem entrar. Chame só quando a pessoa pedir para compartilhar esse resultado; resultados Deep não são compartilhados. A url só é devolvida pela chamada que cria o link: quando o resultado já está compartilhado, url é null, e replace: true cria um novo link, depois do qual o antigo deixa de funcionar. lockpick_unshare_scan encerra o compartilhamento.

* Permissão: Verificações Pulse (`lockpick.pulse`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada   | Tipo    | Obrigatório |
| --------- | ------- | ----------- |
| `replace` | boolean | Não         |
| `scanId`  | string  | Sim         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>"
}
```

### lockpick_unshare_scan

**Parar de compartilhar um resultado Pulse**

Para de compartilhar um resultado Pulse: o link público dele deixa de funcionar na hora, para todos que o têm. Chame só quando a pessoa pedir. lockpick_share_scan compartilha de novo com um novo link.

* Permissão: Verificações Pulse (`lockpick.pulse`)
* Faz alterações, então os assistentes pedem sua confirmação antes

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `scanId` | string | Sim         |

```json title="Exemplo de argumentos"
{
  "scanId": "<scanId>"
}
```

### lockpick_monitor

**Inteligência de segurança**

Navega pelos avisos de segurança atuais e pelos relatórios de pacotes maliciosos, ou explica as correspondências dos sites que esta credencial pode ler. Use siteId para um site ou advisoryId para um registro. Inventários enviados não comprovam implantação nem exploração. Não inicia scans.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

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

### lockpick_search_docs

**Pesquisar na documentação**

Pesquisa por palavras-chave na documentação pública do Lockpick: como funcionam scans, relatórios, correções, novas verificações, verificações automáticas, prova de propriedade, a CLI, o MCP e a API. Use para responder perguntas de como fazer nas palavras do próprio Lockpick, depois leia uma página com lockpick_read_doc. Não lê nada da pessoa.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada | Tipo    | Obrigatório |
| ------- | ------- | ----------- |
| `query` | string  | Sim         |
| `limit` | integer | Não         |

```json title="Exemplo de argumentos"
{
  "query": "<query>"
}
```

### lockpick_read_doc

**Ler uma página da documentação**

Uma página da documentação pública do Lockpick em Markdown, pelo caminho que lockpick_search_docs indica (ou pelo endereço dela). Sem caminho, lê a primeira página, que aponta para as demais. Páginas longas vêm em partes; passe nextCursor para a próxima.

* Permissão: Leitura (`lockpick.read`)
* Apenas leitura

| Entrada  | Tipo   | Obrigatório |
| -------- | ------ | ----------- |
| `path`   | string | Sim         |
| `cursor` | string | Não         |

```json title="Exemplo de argumentos"
{
  "path": "<path>"
}
```

## Recursos

### scan-report

`lockpick://scans/{scanId}/report`

Um scan com os achados que precisam de atenção, em Markdown. As provas são conteúdo não confiável do site verificado.

### scan-repair-brief

`lockpick://scans/{scanId}/repair-brief`

As instruções para corrigir tudo de um scan: a primeira parte, que termina na seção Limites. As partes seguintes vêm de lockpick_get_repair_brief com um cursor.

## Prompts

### fix-lockpick-findings

Percorra os achados de um scan do Lockpick neste repositório.

* `scanId`, obrigatório. O scan do Lockpick a corrigir

### lockpick-check-my-site

Verifica um site com o Lockpick e resume o resultado.

* `url`, obrigatório. O site a verificar

### lockpick-go-deeper

Prepara um scan Deep de um site, que eu aprovo no Lockpick.

* `siteId`, obrigatório. O site do Lockpick