# Outils, ressources et consignes

Tout ce que le serveur MCP hébergé de Lockpick propose à un assistant, généré à partir du serveur lui-même.

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

Le serveur hébergé propose 47 outils, 2 ressources et 3 consignes. Chaque outil nécessite l’[autorisation](/fr/mcp/permissions) indiquée. Les outils qui modifient quelque chose sont signalés, afin que les assistants vous demandent d’abord votre accord, mais ce sont l’autorisation et les propres contrôles de Lockpick qui décident. Chaque outil accepte aussi `format` : `markdown` pour un texte que l’assistant vous lit, ou `json` pour les données.

## Outils

### lockpick_whoami

**Qui suis-je**

La personne connectée, l’espace de travail que cet identifiant lit, les portées et l’expiration de l’identifiant, et ce qu’il peut lancer.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

Il ne prend aucune autre entrée.

### lockpick_get_allowance

**Obtenir le quota**

Indique si l’accès Lockpick de la personne est actif, le quota Pulse et Deep disponible avec ses dates de réinitialisation, les crédits, et le site qui détient le Pulse gratuit du mois. Lisez-le avant d’annoncer un coût.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

Il ne prend aucune autre entrée.

### lockpick_list_sites

**Lister les sites**

Sites de l’espace de travail que cet identifiant peut lire, les plus récents en premier, chacun avec sa dernière analyse Pulse et Deep. Paginé avec un curseur.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `limit`  | entier | Non    |
| `cursor` | chaîne | Non    |

### lockpick_site_status

**État du site**

L’état d’un site : ses dernières analyses Pulse et Deep avec leur note et leur score, les points à corriger ouverts par gravité, les limites de couverture, l’écart du dernier contrôle et ce qui est pertinent maintenant (avis qui touchent ses versions épinglées ou peuvent toucher sa pile, composants observés en direct, failles activement exploitées et corrections récentes, chacun avec sa preuve).

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `siteId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>"
}
```

### lockpick_get_site_history

**Historique du site**

L’historique de sécurité d’un site : l’évolution du score de chaque profondeur de scan (Pulse, Standard et Deep séparément), les constats ouverts au fil du temps, les corrections, les régressions et le délai médian de correction. Un point marqué newBaseline a été noté avec un autre moteur, une autre grille ou une autre politique de notation que le précédent : les scores d’avant ne sont donc pas comparables à ceux d’après. Une correction signifie qu’un scan comparable ultérieur n’a plus vu le constat, pas qu’elle est prouvée.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `siteId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>"
}
```

### lockpick_add_site

**Ajouter un site**

Ajoute un site à partir de son adresse à l’espace de travail, ou renvoie le site existant à cette adresse. Uniquement pour un site que la personne possède ou est autorisée à tester. Ajouter un site ne l’analyse pas. Une nouvelle tentative avec le même idempotencyKey renvoie le même site.

* Autorisation : Sites (`lockpick.sites`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type   | Requis |
| ---------------- | ------ | ------ |
| `url`            | chaîne | Oui    |
| `name`           | chaîne | Non    |
| `idempotencyKey` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_switch_free_site

**Changer de site gratuit**

Retire un des sites de la personne pour que le Pulse gratuit du mois puisse passer à un autre site. Ne l’appelez que lorsque la personne a demandé de changer et a nommé le site à retirer : transmettez son identifiant comme removeSiteId avec confirmRemoval: true, jamais un site que vous auriez choisi. Le site retiré n’est plus surveillé, ses analyses restent lisibles, et un responsable peut le restaurer dans Lockpick (restoreUrl). Avec checkId, un contrôle rapide du nouveau site, il lance aussi un Pulse sur ce site, qui utilise un Pulse gratuit ; le résultat indique l’analyse, le coût et le quota restant. Sans checkId, rien n’est lancé. Refusé sans rien retirer lorsqu’une analyse de ce site est en cours, lorsque le retrait ne libérerait pas le Pulse gratuit, lorsque le contrôle rapide a expiré ou lorsqu’aucun Pulse gratuit ne reste. Si le site a été retiré mais que le Pulse n’a pas pu démarrer, l’erreur le signale et renvoie vers son lancement dans Lockpick. Une nouvelle tentative avec le même idempotencyKey renvoie le même résultat et ne modifie rien de plus.

* Autorisation : Sites (`lockpick.sites`) et analyses Pulse (`lockpick.pulse`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type    | Requis |
| ---------------- | ------- | ------ |
| `removeSiteId`   | chaîne  | Oui    |
| `checkId`        | chaîne  | Non    |
| `idempotencyKey` | chaîne  | Oui    |
| `confirmRemoval` | booléen | Oui    |

```json title="Exemple d’arguments"
{
  "removeSiteId": "<removeSiteId>",
  "idempotencyKey": "a-unique-key",
  "confirmRemoval": true
}
```

### lockpick_list_scans

**Lister les analyses**

Analyses les plus récentes en premier, filtrables par site, type, niveau d’évaluation (pulse, standard, deep) et statut, chacune avec sa note et son score. Paginé avec un curseur.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée            | Type                                                                                | Requis |
| ----------------- | ----------------------------------------------------------------------------------- | ------ |
| `siteId`          | chaîne                                                                              | Non    |
| `kind`            | `pulse`, `box` (Deep, nom hérité)                                                   | Non    |
| `assessmentLevel` | `pulse`, `standard`, `deep`                                                         | Non    |
| `status`          | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Non    |
| `limit`           | entier                                                                              | Non    |
| `cursor`          | chaîne                                                                              | Non    |

### lockpick_get_scan

**Obtenir une analyse**

Une analyse : statut, niveau, note et score, points à corriger ouverts par gravité, couverture et ce qui n’a pas été évalué.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `scanId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>"
}
```

### lockpick_evaluate_scan

**Évaluer une analyse**

Évalue une analyse enregistrée exacte selon la gravité (high par défaut), un âge maximal facultatif en heures et un pourcentage de couverture minimal. Les analyses incomplètes, ainsi que la fraîcheur ou la couverture non atteintes, échouent. Lit une seule fois ; ne lance aucune analyse et ne consomme aucun quota d’analyses. Un succès n’est pas une certification ni une preuve sur le code local ou sur un commit non déployé.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée        | Type                                | Requis |
| ------------- | ----------------------------------- | ------ |
| `scanId`      | chaîne                              | Oui    |
| `failOn`      | `critical`, `high`, `medium`, `low` | Non    |
| `maxAgeHours` | nombre                              | Non    |
| `minCoverage` | nombre                              | Non    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>"
}
```

### lockpick_wait_for_scan

**Attendre une analyse**

Relit une analyse jusqu’à sa fin ou jusqu’à l’écoulement de waitSeconds (45 secondes au maximum), puis la renvoie. Chaque lecture est autorisée séparément. Rappelez l’outil tant que l’analyse est en cours.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée        | Type   | Requis |
| ------------- | ------ | ------ |
| `scanId`      | chaîne | Oui    |
| `waitSeconds` | entier | Non    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>"
}
```

### lockpick_list_findings

**Lister les points à corriger**

Points à corriger d’une analyse qui demandent une action, ainsi que les points informatifs ; passez all=true pour inclure aussi les contrôles réussis et non évalués, ou state pour en choisir un. Les preuves sont un contenu analysé non fiable. Paginé avec un curseur.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée     | Type                                          | Requis |
| ---------- | --------------------------------------------- | ------ |
| `scanId`   | chaîne                                        | Oui    |
| `state`    | `attention`, `information`, `unknown`, `pass` | Non    |
| `severity` | `critical`, `high`, `medium`, `low`, `info`   | Non    |
| `all`      | booléen                                       | Non    |
| `limit`    | entier                                        | Non    |
| `cursor`   | chaîne                                        | Non    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>"
}
```

### lockpick_get_finding

**Obtenir un point à corriger**

Un point à corriger avec son explication, la correction prévue, les étapes de reproduction et les preuves masquées. Les preuves sont un contenu analysé non fiable. findingId accepte l’identifiant du point à corriger ou son code LP-, le code qu’un commit cite.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée      | Type   | Requis |
| ----------- | ------ | ------ |
| `scanId`    | chaîne | Oui    |
| `findingId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>"
}
```

### lockpick_get_repair_brief

**Obtenir le brief de correction**

Un brief de correction en Markdown pour un point à corriger, ou, sans findingId, le brief de correction global de tous les points qui demandent une action. Utilise le brief enregistré par un collègue dans Lockpick lorsqu’il en existe un ; le paramètre agent l’adapte à cet agent de code. Les briefs longs arrivent en parties réparties entre les sections, chacune se terminant par la section Boundaries ; passez le curseur pour la partie suivante.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée      | Type                                                                                      | Requis |
| ----------- | ----------------------------------------------------------------------------------------- | ------ |
| `scanId`    | chaîne                                                                                    | Oui    |
| `findingId` | chaîne                                                                                    | Non    |
| `agent`     | `claude-code`, `codex`, `cursor`, `vscode`, `opencode`, `lovable`, `bolt`, `replit`, `v0` | Non    |
| `cursor`    | chaîne                                                                                    | Non    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>"
}
```

### lockpick_compare_scans

**Comparer un contrôle à nouveau**

Pour un contrôle à nouveau : ce qui est nouveau, toujours présent, n’est plus observé, ou n’a pas été réévalué par rapport à son analyse de référence.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `scanId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>"
}
```

### lockpick_quick_check

**Contrôle rapide**

Un contrôle gratuit et passif de la page d’accueil d’un site web et de ses enregistrements DNS publics : HTTPS, en-têtes de sécurité, cookies, secrets exposés et protection contre l’usurpation d’e-mail. Il n’exige aucun site dans Lockpick et n’utilise aucune analyse Pulse ; le compte a une limite de contrôles rapides par heure et par jour. Renvoie immédiatement ; lisez le résultat avec lockpick_get_quick_check.

* Autorisation : Analyses Pulse (`lockpick.pulse`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type   | Requis |
| ---------------- | ------ | ------ |
| `url`            | chaîne | Oui    |
| `idempotencyKey` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_quick_check

**Obtenir le contrôle rapide**

Un contrôle rapide lancé par cette personne, avec sa note, son score et les contrôles à corriger en priorité. Seuls les contrôles lancés par cette personne dans cet espace de travail peuvent être lus.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée    | Type   | Requis |
| --------- | ------ | ------ |
| `checkId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "checkId": "<checkId>"
}
```

### lockpick_check_repository

**Vérifier un dépôt**

Un examen statique gratuit d’un dépôt GitHub public avant son installation dans un agent de code IA : un plugin ou une marketplace Claude Code, un skill d’agent, un serveur MCP ou sa configuration, ou la configuration d’agent d’une application (hooks, réglages, CLAUDE.md, AGENTS.md). Transmettez n’importe quel lien GitHub, un owner/repo ou la commande d’installation indiquée dans le README. Lockpick lit un commit épinglé et n’exécute rien. Aucun site n’est nécessaire et aucune analyse Pulse n’est utilisée ; le compte a une limite horaire et quotidienne. Le résultat est renvoyé immédiatement ; lisez-le avec lockpick_get_repository_check. Passez depth 'deep' seulement quand la personne demande une vérification Deep du dépôt : elle lit aussi chaque lockfile et les 50 derniers commits à la recherche de clés divulguées, utilise une revue plus poussée et un scan Deep de son forfait.

* Autorisation : Analyses Pulse (`lockpick.pulse`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type           | Requis |
| ---------------- | -------------- | ------ |
| `url`            | chaîne         | Oui    |
| `mode`           | `skill`, `app` | Non    |
| `depth`          | `free`, `deep` | Non    |
| `idempotencyKey` | chaîne         | Oui    |

```json title="Exemple d’arguments"
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_repository_check

**Lire une vérification de dépôt**

Une vérification de dépôt lancée par cette personne : le verdict d’installation (ou le risque de l’application), les constats avec le fichier et la ligne, la couverture et le lien vers le rapport. Seules les vérifications lancées par cette personne dans cet espace de travail peuvent être lues.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée    | Type   | Requis |
| --------- | ------ | ------ |
| `checkId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "checkId": "<checkId>"
}
```

### lockpick_start_pulse

**Lancer une analyse Pulse**

Lance une analyse Pulse sur un site que la personne possède ou est autorisée à tester (un nouveau contrôle de son dernier Pulse lorsque c’est compatible). Utilise une analyse Pulse du quota indiqué par lockpick_get_allowance ; lisez-le avant d’annoncer un coût. Renvoie immédiatement l’analyse, le coût et le quota ; faites-la suivre par lockpick_wait_for_scan. Une nouvelle tentative avec le même idempotencyKey renvoie la même analyse et ne facture rien de plus. Ne peut pas lancer une analyse Deep ni Master Key.

* Autorisation : Analyses Pulse (`lockpick.pulse`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type   | Requis |
| ---------------- | ------ | ------ |
| `siteId`         | chaîne | Oui    |
| `idempotencyKey` | chaîne | Oui    |
| `baselineScanId` | chaîne | Non    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_start_deep_verification

**Lancer une preuve de propriété Deep**

Émet une preuve de propriété pour un site avant une analyse Deep : un enregistrement DNS TXT, une balise meta de la page d’accueil ou un fichier que la personne publie à l’adresse du site. Renvoie exactement ce qu’il faut publier ; la valeur n’est affichée que dans cette réponse. La preuve expire au bout de 30 minutes et permet un nombre limité de vérifications.

* Autorisation : Analyses Deep (`lockpick.deep`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type                  | Requis |
| ---------------- | --------------------- | ------ |
| `siteId`         | chaîne                | Oui    |
| `method`         | `dns`, `file`, `meta` | Oui    |
| `idempotencyKey` | chaîne                | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>",
  "method": "dns",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_check_deep_verification

**Vérifier la preuve de propriété Deep**

Recherche une seule fois la preuve de propriété publiée d’un site et renvoie son état. Chaque appel utilise une des vérifications de la preuve ; appelez-le donc après que la personne a indiqué que l’enregistrement ou le fichier est publié.

* Autorisation : Analyses Deep (`lockpick.deep`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type   | Requis |
| ---------------- | ------ | ------ |
| `siteId`         | chaîne | Oui    |
| `verificationId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>",
  "verificationId": "<verificationId>"
}
```

### lockpick_prepare_deep

**Préparer une analyse Deep**

Prépare une analyse Deep d’un site avec une preuve de propriété vérifiée, et renvoie son coût et le lien d’autorisation. Rien ne démarre tant que la personne n’ouvre pas le lien et n’autorise pas cette analyse exacte dans Lockpick ; un agent ne l’autorise jamais. Une nouvelle tentative avec le même idempotencyKey renvoie la même analyse préparée.

* Autorisation : Analyses Deep (`lockpick.deep`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type   | Requis |
| ---------------- | ------ | ------ |
| `siteId`         | chaîne | Oui    |
| `verificationId` | chaîne | Oui    |
| `idempotencyKey` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>",
  "verificationId": "<verificationId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_start_deep

**Lancer une analyse Deep autorisée**

Lance une analyse Deep autorisée par la personne dans Lockpick, au coût affiché lors de sa préparation. Avant l’autorisation, il répond qu’une autorisation est requise, avec le lien. Le rappeler renvoie la même analyse et ne facture rien de plus. Faites-la suivre par lockpick_wait_for_scan.

* Autorisation : Analyses Deep (`lockpick.deep`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée        | Type   | Requis |
| ------------- | ------ | ------ |
| `operationId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "operationId": "<operationId>"
}
```

### lockpick_recheck_dns

**Relancer le contrôle DNS**

Gratuit : relit les enregistrements DNS publics d’un point à corriger DNS d’une analyse terminée, après que la personne les a modifiés. Ne contacte jamais le site et ne modifie jamais la note de l’analyse ; au plus un contrôle par analyse et par minute, et un contrôle déjà en cours est rejoint. Un contrôle complet passe par lockpick_start_pulse et coûte un Pulse.

* Autorisation : Analyses Pulse (`lockpick.pulse`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type   | Requis |
| ---------------- | ------ | ------ |
| `scanId`         | chaîne | Oui    |
| `findingId`      | chaîne | Oui    |
| `idempotencyKey` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_dns_recheck

**Obtenir le contrôle DNS relancé**

Le dernier contrôle DNS gratuit relancé pour une analyse : pour chaque point à corriger DNS, toujours observé, plus observé ou inconnu. La note d’origine de l’analyse ne change jamais.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `scanId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>"
}
```

### lockpick_recheck_finding

**Vérifier ce correctif**

Gratuit : une fois que la personne a déployé un correctif pour un point à corriger d’une analyse Deep terminée, relit uniquement les pages, scripts ou chemins sur lesquels il a été vu, et répond corrigé, toujours ouvert ou vérification impossible (avec la raison). Le site reçoit quelques requêtes : ne l’appelez que si la personne l’a demandé. Au plus 5 vérifications par point et 50 par espace de travail chaque jour ; une vérification en cours est rejointe. La note de l’analyse ne change jamais ; un contrôle complet est une nouvelle analyse Deep. Appelez ensuite lockpick_get_finding_recheck tant qu’elle est en attente.

* Autorisation : Analyses Deep (`lockpick.deep`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type   | Requis |
| ---------------- | ------ | ------ |
| `scanId`         | chaîne | Oui    |
| `findingId`      | chaîne | Oui    |
| `idempotencyKey` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_finding_recheck

**Obtenir Vérifier ce correctif**

Le dernier Vérifier ce correctif pour un point à corriger d’une analyse Deep : si une vérification est en cours, le résultat le plus récent (corrigé, toujours ouvert ou vérification impossible, avec la raison et chaque chemin relu) et le nombre de vérifications restantes aujourd’hui. La note initiale de l’analyse ne change jamais.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée      | Type   | Requis |
| ----------- | ------ | ------ |
| `scanId`    | chaîne | Oui    |
| `findingId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>"
}
```

### lockpick_send_dependencies

**Envoyer les versions des paquets**

Envoie les noms et versions exactes des paquets épinglés par le projet d’un site (npm, PyPI, Composer, Go, RubyGems, Maven, crates.io, NuGet, Pub, Hex et Swift), jamais le code, les chemins ni les adresses de registre, et indique quels avis connus touchent ces versions exactes, avec la version corrigée. Transmettez `packages` que vous avez lus dans le fichier de verrouillage, ou `path`, le dossier du projet, lorsque vous passez par le serveur local `lockpick mcp` (il lit lui-même 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 et pom.xml). Chaque appel remplace la liste du site ; une liste `packages` vide l’efface. N’appelez cet outil que si la personne l’a demandé ou accepté.

* Autorisation : Sites (`lockpick.sites`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée           | Type                                                                                                                                                                                                                                                                                                                                                                                                                                | Requis |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
| `inventory`      | objet                                                                                                                                                                                                                                                                                                                                                                                                                               | Non    |
| `siteId`         | chaîne                                                                                                                                                                                                                                                                                                                                                                                                                              | Oui    |
| `packages`       | liste d’objets                                                                                                                                                                                                                                                                                                                                                                                                                      | Non    |
| `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` | Non    |
| `path`           | chaîne                                                                                                                                                                                                                                                                                                                                                                                                                              | Non    |
| `idempotencyKey` | chaîne                                                                                                                                                                                                                                                                                                                                                                                                                              | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_github_link

**Obtenir le lien GitHub**

Le lien GitHub d’un site : le dépôt, la branche ou le commit et les fichiers de verrouillage qu’il vérifie, la dernière lecture de chaque fichier de verrouillage, si le commentaire de sécurité Deep sur les pull requests est activé, si la liste GitHub de la personne est à jour et si elle gère le site et peut donc modifier le lien.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `siteId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>"
}
```

### lockpick_list_github_repositories

**Lister mes dépôts GitHub**

Les dépôts de la liste GitHub de la personne elle-même pour cet espace de travail, avec la branche par défaut de chacun : les seuls auxquels un site se lie immédiatement. Filtrez avec search (une partie de owner/name). La liste est celle que la personne a autorisée en dernier sur GitHub ; si elle manque ou date de plus de 30 jours, elle est vide ou périmée, et une liaison renvoie à la place une page d’approbation.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `search` | chaîne | Non    |
| `limit`  | entier | Non    |

### lockpick_link_github_repository

**Lier un dépôt GitHub**

Lie un site à un dépôt GitHub (owner/name) et lit ses fichiers de verrouillage : ref est la branche, le tag ou le commit (la branche par défaut s’il est omis) et lockfiles vaut 'auto' (chaque fichier de verrouillage du dépôt, recherché à nouveau à chaque lecture, 20 au plus) ou une liste de chemins de fichiers de verrouillage dans le dépôt, vérifiés tels quels. S’il est omis, relier de nouveau le même dépôt conserve une liste choisie auparavant, sinon 'auto'. Ne l’appelez que si la personne a demandé de lier ce dépôt à ce site ; il faut une personne qui gère le site. Le dépôt doit figurer dans la liste GitHub de la personne elle-même dans cet espace de travail (lockpick_list_github_repositories) ; sinon, le résultat est approval_required avec un approvalUrl : donnez ce lien à la personne, ne l’ouvrez ni ne l’approuvez jamais à sa place, puis appelez lockpick_get_github_link_request avec son requestId toutes les pollAfterSeconds jusqu’à un état final (linked, not_reachable, declined, failed ou expired).

* Autorisation : Sites (`lockpick.sites`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée                | Type                       | Requis |
| --------------------- | -------------------------- | ------ |
| `repository`          | chaîne                     | Oui    |
| `ref`                 | chaîne                     | Non    |
| `lockfiles`           | chaîne ou liste de chaînes | Non    |
| `pullRequestComments` | `on`, `off`                | Non    |
| `siteId`              | chaîne                     | Oui    |

```json title="Exemple d’arguments"
{
  "repository": "<repository>",
  "siteId": "<siteId>"
}
```

### lockpick_get_github_link_request

**Obtenir la demande de lien GitHub**

Où en est un lien GitHub en attente de l’approbation de la personne : pending (la page n’est pas encore ouverte), authorizing (elle est sur GitHub) ou un état final : linked (avec le lien du site), not_reachable (GitHub n’a pas listé le dépôt pour elle), declined, failed ou expired. Interrogez-le toutes les pollAfterSeconds indiquées dans le résultat de la liaison jusqu’à un état final ; n’ouvrez ni n’approuvez jamais la page à la place de la personne.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée      | Type   | Requis |
| ----------- | ------ | ------ |
| `requestId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "requestId": "<requestId>"
}
```

### lockpick_unlink_github_repository

**Délier un dépôt GitHub**

Délie le dépôt GitHub d’un site et oublie la lecture de son fichier de verrouillage. Ne l’appelez que si la personne a demandé de le délier ; il faut une personne qui gère le site. Cela ne désinstalle pas la Lockpick App sur GitHub. Délier un site sans dépôt ne change rien.

* Autorisation : Sites (`lockpick.sites`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `siteId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>"
}
```

### lockpick_set_github_pr_comments

**Régler les commentaires de pull request GitHub**

Active ou désactive le commentaire de sécurité Deep sur les pull requests du dépôt lié à un site : activé, Lockpick commente chaque pull request avec les dépendances vulnérables qu’il trouve. Ne l’appelez que si la personne l’a demandé ; il faut une personne qui gère le site et un dépôt lié, et l’activation nécessite pullRequestComments.canEnable de lockpick_get_github_link. Renvoie le lien GitHub du site.

* Autorisation : Sites (`lockpick.sites`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée    | Type    | Requis |
| --------- | ------- | ------ |
| `enabled` | booléen | Oui    |
| `siteId`  | chaîne  | Oui    |

```json title="Exemple d’arguments"
{
  "enabled": true,
  "siteId": "<siteId>"
}
```

### lockpick_get_schedules

**Obtenir les contrôles automatiques**

Les contrôles automatiques d’un site : sa planification Pulse et sa planification Deep (au plus une de chaque ; active, en pause ou retirée, avec la fréquence, l’heure UTC visée pour les exécutions, la prochaine exécution, la date jusqu’à laquelle le consentement est valable et l’issue de la dernière exécution), les fréquences que le forfait autorise à chaque profondeur, et si les contrôles automatiques sont configurés sur ce serveur Lockpick.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `siteId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>"
}
```

### lockpick_set_pulse_schedule

**Configurer le contrôle automatique Pulse**

Configure, modifie ou reprend le contrôle automatique Pulse d’un site, qui lance ensuite une analyse Pulse du site à sa fréquence ; chaque exécution utilise le quota comme tout Pulse. cadence vaut daily, weekly ou monthly et doit être une fréquence que le forfait autorise à cette profondeur (allowed dans lockpick_get_schedules) ; runHourUtc est l’heure UTC visée pour les exécutions (0-23), null pour n’importe quelle heure. Une nouvelle planification nécessite un cadence ; une planification existante conserve ce qui est omis, et une planification en pause ou retirée est reprise, donc l’appeler sans cadence la reprend. Ne l’appelez que lorsque la personne l’a demandé ; il faut une personne autorisée à lancer des analyses sur le site. Renvoie la planification.

* Autorisation : Analyses Pulse (`lockpick.pulse`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée       | Type                         | Requis |
| ------------ | ---------------------------- | ------ |
| `cadence`    | `daily`, `weekly`, `monthly` | Non    |
| `runHourUtc` | entier ou null               | Non    |
| `siteId`     | chaîne                       | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>"
}
```

### lockpick_pause_pulse_schedule

**Mettre en pause le contrôle automatique Pulse**

Met aussitôt en pause le contrôle automatique Pulse d’un site : aucune exécution Pulse planifiée jusqu’à sa reprise avec lockpick_set_pulse_schedule. La mise en pause est toujours autorisée, quel que soit le forfait. Renvoie la planification.

* Autorisation : Analyses Pulse (`lockpick.pulse`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `siteId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>"
}
```

### lockpick_prepare_deep_schedule

**Préparer un contrôle automatique Deep**

Prépare la configuration, la modification ou la reprise du contrôle automatique Deep d’un site et renvoie une approvalUrl ; il ne modifie rien lui-même. Rien n’est configuré tant que la personne n’ouvre pas le lien et n’autorise pas cette planification exacte dans Lockpick ; un agent ne l’autorise jamais. Donnez le lien à la personne, puis appelez lockpick_get_schedule_request avec son requestId toutes les pollAfterSeconds jusqu’à un état final (approved, declined, failed ou expired). cadence vaut daily, weekly ou monthly et doit être une fréquence que le forfait autorise à cette profondeur (allowed dans lockpick_get_schedules) ; runHourUtc est l’heure UTC visée pour les exécutions (0-23), null pour n’importe quelle heure. Une nouvelle planification nécessite un cadence ; une planification existante conserve ce qui est omis, et une planification en pause ou retirée est reprise, donc l’appeler sans cadence la reprend.

* Autorisation : Analyses Deep (`lockpick.deep`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée       | Type                         | Requis |
| ------------ | ---------------------------- | ------ |
| `cadence`    | `daily`, `weekly`, `monthly` | Non    |
| `runHourUtc` | entier ou null               | Non    |
| `siteId`     | chaîne                       | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>"
}
```

### lockpick_pause_deep_schedule

**Mettre en pause le contrôle automatique Deep**

Met aussitôt en pause le contrôle automatique Deep d’un site, sans page d’autorisation : aucune exécution Deep planifiée jusqu’à sa reprise via lockpick_prepare_deep_schedule et l’autorisation de la personne. La mise en pause est toujours autorisée, quel que soit le forfait. Renvoie la planification.

* Autorisation : Analyses Deep (`lockpick.deep`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `siteId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>"
}
```

### lockpick_get_schedule_request

**Obtenir la demande de contrôle automatique Deep**

Où en est un contrôle automatique Deep en attente de l’autorisation de la personne : pending, ou un état final : approved (avec la planification), declined, failed (failure indique pourquoi la planification n’a pas pu être configurée) ou expired. Interrogez-le toutes les pollAfterSeconds indiquées par lockpick_prepare_deep_schedule jusqu’à un état final ; n’ouvrez ni n’autorisez jamais la page à la place de la personne.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée      | Type   | Requis |
| ----------- | ------ | ------ |
| `requestId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "requestId": "<requestId>"
}
```

### lockpick_list_shares

**Lister les liens de partage**

Les résultats Pulse d’un site qui ont un lien de partage public actif, les plus récents en premier, avec la date de partage de chacun. Les liens eux-mêmes ne sont plus affichés ; lockpick_share_scan avec replace en crée un nouveau.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `siteId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "siteId": "<siteId>"
}
```

### lockpick_share_scan

**Partager un résultat Pulse**

Publie un résultat Pulse terminé à un lien public que toute personne qui le possède peut ouvrir sans se connecter. Ne l’appelez que lorsque la personne a demandé à partager ce résultat ; les résultats Deep ne sont pas partagés. L’url n’est renvoyée que par l’appel qui crée le lien : si le résultat est déjà partagé, url vaut null, et replace: true crée un nouveau lien, après quoi l’ancien cesse de fonctionner. lockpick_unshare_scan arrête le partage.

* Autorisation : Analyses Pulse (`lockpick.pulse`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée    | Type    | Requis |
| --------- | ------- | ------ |
| `replace` | booléen | Non    |
| `scanId`  | chaîne  | Oui    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>"
}
```

### lockpick_unshare_scan

**Arrêter le partage d’un résultat Pulse**

Arrête le partage d’un résultat Pulse : son lien public cesse aussitôt de fonctionner, pour toutes les personnes qui le possèdent. Ne l’appelez que lorsque la personne l’a demandé. lockpick_share_scan le partage à nouveau avec un nouveau lien.

* Autorisation : Analyses Pulse (`lockpick.pulse`)
* Modifie quelque chose : les assistants vous demandent donc confirmation d’abord

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `scanId` | chaîne | Oui    |

```json title="Exemple d’arguments"
{
  "scanId": "<scanId>"
}
```

### lockpick_monitor

**Renseignement de sécurité**

Parcourt les avis de sécurité actuels et les rapports de paquets malveillants, ou explique les correspondances pour les sites que cet identifiant peut lire. Utilisez siteId pour un site ou advisoryId pour un seul enregistrement. Les inventaires envoyés ne prouvent ni un déploiement ni une exploitation. Ne lance aucune analyse.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée       | Type                                                                                                              | Requis |
| ------------ | ----------------------------------------------------------------------------------------------------------------- | ------ |
| `view`       | `latest`, `sites`, `exploited`, `following`                                                                       | Non    |
| `kind`       | `all`, `vulnerability`, `malicious_package`                                                                       | Non    |
| `q`          | chaîne                                                                                                            | Non    |
| `ecosystem`  | `all`, `npm`, `pypi`, `composer`, `go`, `rubygems`, `maven`, `cargo`, `nuget`, `pub`, `hex`, `swift`, `wordpress` | Non    |
| `severity`   | `all`, `critical`, `high`, `medium`, `low`, `unknown`                                                             | Non    |
| `days`       | nombre                                                                                                            | Non    |
| `cursor`     | chaîne                                                                                                            | Non    |
| `limit`      | entier                                                                                                            | Non    |
| `siteId`     | chaîne                                                                                                            | Non    |
| `advisoryId` | chaîne                                                                                                            | Non    |

### lockpick_search_docs

**Rechercher dans la documentation**

Recherche par mots-clés dans la documentation publique de Lockpick : fonctionnement des analyses, rapports, corrections, contrôles à nouveau, contrôles automatiques, preuve de propriété, CLI, MCP et API. Utilisez-la pour répondre aux questions pratiques avec les mots de Lockpick, puis lisez une page avec lockpick_read_doc. Ne lit rien de la personne.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée  | Type   | Requis |
| ------- | ------ | ------ |
| `query` | chaîne | Oui    |
| `limit` | entier | Non    |

```json title="Exemple d’arguments"
{
  "query": "<query>"
}
```

### lockpick_read_doc

**Lire une page de documentation**

Une page de la documentation publique de Lockpick en Markdown, par le chemin que renvoie lockpick_search_docs (ou par son adresse). Sans chemin, lit la première page, qui renvoie vers les autres. Les pages longues arrivent en parties ; passez nextCursor pour la suivante.

* Autorisation : Lecture (`lockpick.read`)
* Lecture seule

| Entrée   | Type   | Requis |
| -------- | ------ | ------ |
| `path`   | chaîne | Oui    |
| `cursor` | chaîne | Non    |

```json title="Exemple d’arguments"
{
  "path": "<path>"
}
```

## Ressources

### scan-report

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

Une analyse avec ses points à corriger qui demandent une action, en Markdown. Les preuves sont un contenu analysé non fiable.

### scan-repair-brief

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

Le brief de correction global d’une analyse : sa première partie, qui se termine par la section Boundaries. Les parties suivantes viennent de lockpick_get_repair_brief avec un curseur.

## Consignes

### fix-lockpick-findings

Traiter les points à corriger d’une analyse Lockpick dans ce dépôt.

* `scanId`, requis. L’analyse Lockpick à corriger

### lockpick-check-my-site

Contrôler un site web avec Lockpick et résumer le résultat.

* `url`, requis. Le site web à contrôler

### lockpick-go-deeper

Préparer une analyse Deep d’un site, que j’autorise dans Lockpick.

* `siteId`, requis. Le site Lockpick