# ツール、リソース、プロンプト

ホスト型のLockpick MCPサーバーがアシスタントに提供するすべての機能です。サーバー自身から自動生成しています。

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

ホスト型サーバーは、47 のツール、2 つのリソース、3 つのプロンプトを提供します。各ツールには、表示されている [権限](/ja/mcp/permissions) が必要です。何かを変更するツールには印が付いており、アシスタントは先にあなたに確認します。ただし、判断するのは権限と Lockpick 自身のチェックです。すべてのツールは `format` も受け取ります。アシスタントがあなたに読み上げるテキストには `markdown`、データには `json` を指定します。

## ツール

### lockpick_whoami

**自分の情報**

サインインしている人、この認証情報が読み取るワークスペース、認証情報のスコープと期限、そして開始できる操作です。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

ほかの入力はありません。

### lockpick_get_allowance

**利用枠を取得**

その人のLockpickの利用が有効かどうか、利用可能なPulseとDeepの利用枠とその再設定日、クレジット、今月の無料Pulseを持っているサイトです。費用を伝える前に読んでください。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

ほかの入力はありません。

### lockpick_list_sites

**サイトを一覧表示**

この認証情報が読み取れるワークスペースのサイトを、新しい順に表示します。各サイトには、最新のPulseとDeepのスキャンが付きます。カーソルでページ分けされます。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須  |
| -------- | --- | --- |
| `limit`  | 整数  | いいえ |
| `cursor` | 文字列 | いいえ |

### lockpick_site_status

**サイトの状態**

1つのサイトの現在の状況です。最新のPulseとDeepのスキャンと、その評価、スコア、重大度ごとの未解決の検出事項、カバレッジの制限、最新の再チェックの差分、今注目すべきことを含みます。注目すべきことには、固定されたバージョンに影響するアドバイザリ、影響するかもしれないアドバイザリ、実際に確認されたコンポーネント、実際に悪用されているもの、最近の修正があり、それぞれに証拠が付きます。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `siteId` | 文字列 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>"
}
```

### lockpick_get_site_history

**サイトの履歴**

サイトのセキュリティ履歴: スキャンの深さごとのスコアの推移（Pulse、Standard、Deep は別々）、未解決の検出事項の推移、修正、再発、修正までの時間の中央値。newBaseline の付いた点は、その前の点とは別のエンジン、評価基準またはスコアリングポリシーで採点されたため、それより前のスコアはそれ以降のスコアと比較できません。修正とは、後の比較可能なスキャンでその検出事項が見られなくなったことを意味し、修正が証明されたことではありません。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `siteId` | 文字列 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>"
}
```

### lockpick_add_site

**サイトを追加**

アドレスでサイトをワークスペースに追加します。同じアドレスのサイトがあれば、それを返します。お持ちのサイト、またはテストを許可されたサイトだけに使います。サイトを追加しても、スキャンは開始されません。同じ `idempotencyKey` で再試行すると、同じサイトが返ります。

* 権限: サイト（`lockpick.sites`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型   | 必須  |
| ---------------- | --- | --- |
| `url`            | 文字列 | はい  |
| `name`           | 文字列 | いいえ |
| `idempotencyKey` | 文字列 | はい  |

```json title="引数の例"
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_switch_free_site

**無料枠のサイトを切り替え**

その人のサイトを1つ削除して、今月の無料Pulseを別のサイトに移します。ユーザーが切り替えを依頼し、削除するサイトを名指ししたときだけ呼び出してください。その場合は、サイトのIDを `removeSiteId` として渡し、`confirmRemoval: true` を付けます。エージェントが勝手に選んだサイトを渡してはいけません。削除されたサイトは監視されなくなりますが、スキャンは引き続き読めます。マネージャーは、Lockpickでそのサイトを復元できます（`restoreUrl`）。`checkId`（新しいサイトのクイックチェック）を渡すと、そのサイトでPulseも開始します。その際、無料のPulseを1回使います。結果には、開始されたスキャン、課金、残りの利用枠が示されます。`checkId` を渡さなければ、何も開始されません。そのサイトのスキャンが実行中の場合、無料のPulseを空けられない場合、クイックチェックの期限が切れた場合、無料のPulseが残っていない場合は、何も削除されずに拒否されます。サイトは削除されたのに、Pulseを開始できなかった場合は、エラーにその旨が示され、Lockpickで開始するためのリンクが付きます。同じ `idempotencyKey` で再試行すると、同じ結果が返り、それ以上は何も変更されません。

* 権限: サイト（`lockpick.sites`）と Pulseスキャン（`lockpick.pulse`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型   | 必須  |
| ---------------- | --- | --- |
| `removeSiteId`   | 文字列 | はい  |
| `checkId`        | 文字列 | いいえ |
| `idempotencyKey` | 文字列 | はい  |
| `confirmRemoval` | 真偽値 | はい  |

```json title="引数の例"
{
  "removeSiteId": "<removeSiteId>",
  "idempotencyKey": "a-unique-key",
  "confirmRemoval": true
}
```

### lockpick_list_scans

**スキャンを一覧表示**

スキャンを新しい順に表示します。サイト、種類、評価レベル（pulse、standard、deep）、状態で絞り込めます。各スキャンには評価とスコアが付きます。カーソルでページ分けされます。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力                | 型                                                                             | 必須  |
| ----------------- | ----------------------------------------------------------------------------- | --- |
| `siteId`          | 文字列                                                                           | いいえ |
| `kind`            | `pulse`、`box`（Deep、旧名称）                                                       | いいえ |
| `assessmentLevel` | `pulse`、`standard`、`deep`                                                     | いいえ |
| `status`          | `queued`、`running`、`cancelling`、`succeeded`、`incomplete`、`failed`、`cancelled` | いいえ |
| `limit`           | 整数                                                                            | いいえ |
| `cursor`          | 文字列                                                                           | いいえ |

### lockpick_get_scan

**スキャンを取得**

1つのスキャンです。状態、レベル、評価とスコア、重大度ごとの未解決の検出事項、カバレッジ、確認されなかった項目を含みます。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `scanId` | 文字列 | はい |

```json title="引数の例"
{
  "scanId": "<scanId>"
}
```

### lockpick_evaluate_scan

**スキャンを評価**

記録された正確なスキャンを、重大度（既定は high）、任意の最大経過時間（時間）、任意の最小カバレッジ（パーセント）に照らして評価します。未完了のスキャン、鮮度やカバレッジの条件を満たさないスキャンは失敗します。読み取りは1回だけで、スキャンは開始せず、スキャンの利用枠も使いません。合格しても、それはローカルのコードや、まだデプロイされていないコミットについての認証や証明ではありません。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力            | 型                                | 必須  |
| ------------- | -------------------------------- | --- |
| `scanId`      | 文字列                              | はい  |
| `failOn`      | `critical`、`high`、`medium`、`low` | いいえ |
| `maxAgeHours` | 数値                               | いいえ |
| `minCoverage` | 数値                               | いいえ |

```json title="引数の例"
{
  "scanId": "<scanId>"
}
```

### lockpick_wait_for_scan

**スキャンの完了を待つ**

スキャンが終わるか、`waitSeconds`（最大45秒）が過ぎるまで、スキャンを読み直して返します。読み取るたびに、それぞれ別に認可されます。まだ実行中なら、もう一度呼び出してください。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力            | 型   | 必須  |
| ------------- | --- | --- |
| `scanId`      | 文字列 | はい  |
| `waitSeconds` | 整数  | いいえ |

```json title="引数の例"
{
  "scanId": "<scanId>"
}
```

### lockpick_list_findings

**検出事項を一覧表示**

スキャンのうち、対応が必要な検出事項と、参考になる検出事項を表示します。合格した項目と確認されなかった項目も含める場合は `all=true` を渡します。また、`state` を指定して絞り込めます。証拠はスキャンで取得した信頼できない内容です。カーソルでページ分けされます。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力         | 型                                          | 必須  |
| ---------- | ------------------------------------------ | --- |
| `scanId`   | 文字列                                        | はい  |
| `state`    | `attention`、`information`、`unknown`、`pass` | いいえ |
| `severity` | `critical`、`high`、`medium`、`low`、`info`    | いいえ |
| `all`      | 真偽値                                        | いいえ |
| `limit`    | 整数                                         | いいえ |
| `cursor`   | 文字列                                        | いいえ |

```json title="引数の例"
{
  "scanId": "<scanId>"
}
```

### lockpick_get_finding

**検出事項を取得**

1つの検出事項です。その説明、意図された修正、再現手順、秘匿された証拠を含みます。証拠はスキャンで取得した信頼できない内容です。 findingId には検出事項のIDか、コミットに記す LP- コードを指定します。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力          | 型   | 必須 |
| ----------- | --- | -- |
| `scanId`    | 文字列 | はい |
| `findingId` | 文字列 | はい |

```json title="引数の例"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>"
}
```

### lockpick_get_repair_brief

**修正ブリーフを取得**

1つの検出事項のMarkdownの修正ブリーフです。`findingId` を省略すると、対応が必要なすべての検出事項を直すブリーフを返します。チームメンバーがLockpickに保存したブリーフがあれば、それを使います。`agent` は、そのコーディングエージェント向けに内容を調整します。長いブリーフは、セクションごとに分けて返されます。各部分は境界のセクションで終わります。次の部分を読むには `cursor` を渡してください。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力          | 型                                                                                 | 必須  |
| ----------- | --------------------------------------------------------------------------------- | --- |
| `scanId`    | 文字列                                                                               | はい  |
| `findingId` | 文字列                                                                               | いいえ |
| `agent`     | `claude-code`、`codex`、`cursor`、`vscode`、`opencode`、`lovable`、`bolt`、`replit`、`v0` | いいえ |
| `cursor`    | 文字列                                                                               | いいえ |

```json title="引数の例"
{
  "scanId": "<scanId>"
}
```

### lockpick_compare_scans

**再チェックを比較**

再チェックの場合、基準となるスキャンと比べて、新しく見つかったもの、まだ残っているもの、もう観測されなくなったもの、再評価されなかったものを示します。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `scanId` | 文字列 | はい |

```json title="引数の例"
{
  "scanId": "<scanId>"
}
```

### lockpick_quick_check

**クイックチェック**

ウェブサイトのホームページと公開DNSレコードを、無料で受動的に確認します。HTTPS、セキュリティヘッダー、Cookie、公開されたシークレット、メールのなりすまし対策を確認します。Lockpickにサイトを登録する必要はなく、Pulseスキャンも使いません。アカウントには、1時間あたりと1日あたりのクイックチェックの上限があります。すぐに戻ります。結果は lockpick_get_quick_check で読みます。

* 権限: Pulseスキャン（`lockpick.pulse`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型   | 必須 |
| ---------------- | --- | -- |
| `url`            | 文字列 | はい |
| `idempotencyKey` | 文字列 | はい |

```json title="引数の例"
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_quick_check

**クイックチェックを取得**

その人が開始したクイックチェックです。評価、スコア、修正する価値のあるチェック項目を含みます。この人がこのワークスペースで開始したクイックチェックだけを読めます。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力        | 型   | 必須 |
| --------- | --- | -- |
| `checkId` | 文字列 | はい |

```json title="引数の例"
{
  "checkId": "<checkId>"
}
```

### lockpick_check_repository

**リポジトリをチェック**

AI コーディングエージェントにインストールする前の、公開 GitHub リポジトリの無料の静的レビューです。対象は、Claude Code プラグインやマーケットプレイス、エージェントスキル、MCP サーバーとその設定、またはアプリのエージェント設定（フック、設定、CLAUDE.md、AGENTS.md）です。任意の GitHub リンク、owner/repo、または README に記載されたインストールコマンドを渡してください。Lockpick は固定された1つのコミットを読み取り、何も実行しません。サイトは不要で、Pulseスキャンも使いません。アカウントには1時間あたりと1日あたりの上限があります。すぐに返されるので、結果は lockpick_get_repository_check で読み取ってください。 depth 'deep' は、本人が Deep リポジトリチェックを求めたときだけ渡してください。すべてのロックファイルと直近 50 件のコミットも漏えいしたキーがないか読み、より強いレビューを行い、プランの Deep スキャンを 1 回使います。

* 権限: Pulseスキャン（`lockpick.pulse`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型              | 必須  |
| ---------------- | -------------- | --- |
| `url`            | 文字列            | はい  |
| `mode`           | `skill`、`app`  | いいえ |
| `depth`          | `free`, `deep` | いいえ |
| `idempotencyKey` | 文字列            | はい  |

```json title="引数の例"
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_repository_check

**リポジトリチェックを取得**

この人が開始したリポジトリチェックです。インストールの判定（またはアプリのリスク）、ファイルと行を含む指摘、カバレッジ、レポートへのリンクが含まれます。読み取れるのは、このワークスペースでこの人が開始したチェックだけです。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力        | 型   | 必須 |
| --------- | --- | -- |
| `checkId` | 文字列 | はい |

```json title="引数の例"
{
  "checkId": "<checkId>"
}
```

### lockpick_start_pulse

**Pulseスキャンを開始**

お持ちのサイト、またはテストを許可されたサイトでPulseスキャンを開始します（互換性がある場合は、最新のPulseの再チェック）。`lockpick_get_allowance` が示す利用枠から、Pulseスキャンを1回使います。費用を伝える前に、必ず読んでください。スキャン、課金、利用枠を示して、すぐに戻ります。続けて `lockpick_wait_for_scan` を呼び出してください。同じ `idempotencyKey` で再試行すると、同じスキャンが返り、それ以上は課金されません。Deepスキャンや Master Key は開始できません。

* 権限: Pulseスキャン（`lockpick.pulse`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型   | 必須  |
| ---------------- | --- | --- |
| `siteId`         | 文字列 | はい  |
| `idempotencyKey` | 文字列 | はい  |
| `baselineScanId` | 文字列 | いいえ |

```json title="引数の例"
{
  "siteId": "<siteId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_start_deep_verification

**Deepの所有証明を開始**

Deepスキャンの前に、サイトの所有証明を発行します。DNSのTXTレコード、トップページのmetaタグ、またはその人がサイトのアドレスに公開するファイルのいずれかです。公開する内容をそのまま返します。値はこの応答にだけ表示されます。証明の期限は30分で、確認できる回数も限られています。

* 権限: Deepスキャン（`lockpick.deep`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型                   | 必須 |
| ---------------- | ------------------- | -- |
| `siteId`         | 文字列                 | はい |
| `method`         | `dns`、`file`、`meta` | はい |
| `idempotencyKey` | 文字列                 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>",
  "method": "dns",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_check_deep_verification

**Deepの所有証明を確認**

サイトの公開された所有証明を1回確認し、その状態を返します。確認するたびに、証明の回数を1回使います。レコードやファイルを公開したとその人が言ってから、呼び出してください。

* 権限: Deepスキャン（`lockpick.deep`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型   | 必須 |
| ---------------- | --- | -- |
| `siteId`         | 文字列 | はい |
| `verificationId` | 文字列 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>",
  "verificationId": "<verificationId>"
}
```

### lockpick_prepare_deep

**Deepスキャンを準備**

所有証明が確認済みのサイトについて、Deepスキャンを準備します。費用と承認用のリンクを返します。その人がリンクを開き、Lockpickでこの正確なスキャンを承認するまで、何も開始されません。アシスタントが承認することはありません。同じ `idempotencyKey` で再試行すると、同じ準備済みのスキャンが返ります。

* 権限: Deepスキャン（`lockpick.deep`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型   | 必須 |
| ---------------- | --- | -- |
| `siteId`         | 文字列 | はい |
| `verificationId` | 文字列 | はい |
| `idempotencyKey` | 文字列 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>",
  "verificationId": "<verificationId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_start_deep

**承認済みのDeepスキャンを開始**

その人がLockpickで承認したDeepスキャンを、準備したときに示された費用で開始します。まだ承認されていない場合は、承認が必要であることとリンクを返します。もう一度呼び出すと、同じスキャンが返り、それ以上は課金されません。続けて `lockpick_wait_for_scan` を呼び出してください。

* 権限: Deepスキャン（`lockpick.deep`）
* 変更を伴うため、アシスタントは先に確認します

| 入力            | 型   | 必須 |
| ------------- | --- | -- |
| `operationId` | 文字列 | はい |

```json title="引数の例"
{
  "operationId": "<operationId>"
}
```

### lockpick_recheck_dns

**DNSを再チェック**

無料です。その人がDNSレコードを変更した後、完了したスキャンのDNSの検出事項1件の裏にある公開DNSレコードを読み直します。サイトには一切アクセスせず、スキャンの評価も変わりません。1つのスキャンにつき1分に1回までです。実行中のチェックがあれば、それに参加します。完全な再チェックは lockpick_start_pulse で、Pulseスキャン1回分の費用がかかります。

* 権限: Pulseスキャン（`lockpick.pulse`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型   | 必須 |
| ---------------- | --- | -- |
| `scanId`         | 文字列 | はい |
| `findingId`      | 文字列 | はい |
| `idempotencyKey` | 文字列 | はい |

```json title="引数の例"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_dns_recheck

**DNSの再チェックを取得**

スキャンの最新の無料DNS再チェックです。DNSの検出事項ごとに、まだ観測される、もう観測されない、不明のいずれかを示します。スキャンの元の評価は変わりません。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `scanId` | 文字列 | はい |

```json title="引数の例"
{
  "scanId": "<scanId>"
}
```

### lockpick_recheck_finding

**この修正を確認**

無料: 完了したDeepスキャンの検出事項1件について、本人が修正をデプロイした後に、その検出事項が見つかったページ、スクリプト、パスだけを読み直し、修正済み、未解決、確認できず（理由つき）のいずれかを返します。サイトに数件のリクエストを送るため、本人が依頼したときだけ呼び出してください。検出事項ごとに1日5回、ワークスペースごとに1日50回までで、実行中の確認があればそれに合流します。スキャンの評価は変わりません。完全な再チェックは新しいDeepスキャンです。保留中の間は lockpick_get_finding_recheck を続けて呼び出してください。

* 権限: Deepスキャン（`lockpick.deep`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型   | 必須 |
| ---------------- | --- | -- |
| `scanId`         | 文字列 | はい |
| `findingId`      | 文字列 | はい |
| `idempotencyKey` | 文字列 | はい |

```json title="引数の例"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_finding_recheck

**「この修正を確認」を取得**

Deepスキャンの検出事項1件についての最新の「この修正を確認」: 確認が実行中かどうか、最新の結果（修正済み、未解決、確認できず。理由と読み直した各パスつき）、本日の残り回数。スキャンの元の評価は変わりません。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力          | 型   | 必須 |
| ----------- | --- | -- |
| `scanId`    | 文字列 | はい |
| `findingId` | 文字列 | はい |

```json title="引数の例"
{
  "scanId": "<scanId>",
  "findingId": "<findingId>"
}
```

### lockpick_send_dependencies

**パッケージのバージョンを送信**

サイトが固定しているパッケージ名と正確なバージョン（npm、PyPI、Composer、Go、RubyGems、Maven、crates.io、NuGet、Pub、Hex、Swift）を送ります。コード、パス、レジストリのアドレスは送りません。そのバージョンに影響する既知のアドバイザリと、修正済みのリリースを答えます。`packages` にはロックファイルから読み取った値を渡します。ローカルの `lockpick mcp` サーバーを使う場合は、`path`（プロジェクトのフォルダー）を渡せます。その場合、サーバーがロックファイル（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、pom.xml）を自分で読み取ります。呼び出すたびに、サイトの一覧は置き換えられます。`packages` を空にすると、一覧は削除されます。その人が依頼したか、同意した場合にだけ呼び出してください。

* 権限: サイト（`lockpick.sites`）
* 変更を伴うため、アシスタントは先に確認します

| 入力               | 型                                                                                                                                                                                                                                                                                                                                                                                                                                   | 必須  |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- |
| `inventory`      | オブジェクト                                                                                                                                                                                                                                                                                                                                                                                                                              | いいえ |
| `siteId`         | 文字列                                                                                                                                                                                                                                                                                                                                                                                                                                 | はい  |
| `packages`       | オブジェクトのリスト                                                                                                                                                                                                                                                                                                                                                                                                                          | いいえ |
| `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` | いいえ |
| `path`           | 文字列                                                                                                                                                                                                                                                                                                                                                                                                                                 | いいえ |
| `idempotencyKey` | 文字列                                                                                                                                                                                                                                                                                                                                                                                                                                 | はい  |

```json title="引数の例"
{
  "siteId": "<siteId>",
  "idempotencyKey": "a-unique-key"
}
```

### lockpick_get_github_link

**GitHub リンクを取得**

サイトの GitHub リンクです。リポジトリ、ブランチまたはコミット、チェック対象のロックファイル、各ロックファイルの最新の読み取り結果、Deep のプルリクエストセキュリティコメントがオンかどうか、本人の GitHub リストが有効かどうか、そしてサイトを管理していてリンクを変更できるかどうかを返します。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `siteId` | 文字列 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>"
}
```

### lockpick_list_github_repositories

**自分の GitHub リポジトリを一覧表示**

このワークスペースにおける本人の GitHub リストにあるリポジトリと、それぞれの既定ブランチです。サイトをすぐにリンクできるのは、これらのリポジトリだけです。search（owner/name の一部）で絞り込めます。このリストは本人が GitHub で最後に承認したものです。リストがない場合や 30 日を過ぎている場合は、空または古い状態になり、リンクすると代わりに承認ページが返されます。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須  |
| -------- | --- | --- |
| `search` | 文字列 | いいえ |
| `limit`  | 整数  | いいえ |

### lockpick_link_github_repository

**GitHub リポジトリをリンク**

サイトを GitHub リポジトリ（owner/name）にリンクし、そのロックファイルを読み取ります。ref はブランチ、タグ、またはコミット（省略時は既定ブランチ）、lockfiles は 'auto'（リポジトリ内のすべてのロックファイル。読み取りのたびに探し直し、最大 20 個）か、そのままチェックするリポジトリ内のロックファイルのパスのリストです。省略した場合、同じリポジトリを再リンクすると以前に選んだリストを保持し、それ以外は 'auto' になります。本人がそのリポジトリをそのサイトにリンクするよう求めたときだけ呼び出してください。サイトを管理する人が必要です。リポジトリは、このワークスペースにおける本人の GitHub リスト（lockpick_list_github_repositories）に含まれている必要があります。含まれていない場合、結果は approvalUrl 付きの approval_required になります。そのリンクを本人に渡し、本人の代わりに開いたり承認したりせず、状態が確定する（linked、not_reachable、declined、failed、expired）まで pollAfterSeconds ごとに requestId を指定して lockpick_get_github_link_request を呼び出してください。

* 権限: サイト（`lockpick.sites`）
* 変更を伴うため、アシスタントは先に確認します

| 入力                    | 型             | 必須  |
| --------------------- | ------------- | --- |
| `repository`          | 文字列           | はい  |
| `ref`                 | 文字列           | いいえ |
| `lockfiles`           | 文字列または文字列のリスト | いいえ |
| `pullRequestComments` | `on`, `off`   | いいえ |
| `siteId`              | 文字列           | はい  |

```json title="引数の例"
{
  "repository": "<repository>",
  "siteId": "<siteId>"
}
```

### lockpick_get_github_link_request

**GitHub リンクのリクエストを取得**

本人の承認を待っている GitHub リンクの状況です。pending（ページはまだ開かれていない）、authorizing（本人が GitHub にいる）、または確定状態の linked（サイトのリンク付き）、not_reachable（GitHub が本人向けにそのリポジトリを返さなかった）、declined、failed、expired のいずれかです。状態が確定するまで、リンク結果の pollAfterSeconds ごとに確認してください。本人の代わりにページを開いたり承認したりしないでください。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力          | 型   | 必須 |
| ----------- | --- | -- |
| `requestId` | 文字列 | はい |

```json title="引数の例"
{
  "requestId": "<requestId>"
}
```

### lockpick_unlink_github_repository

**GitHub リポジトリのリンクを解除**

サイトの GitHub リポジトリのリンクを解除し、ロックファイルの読み取り結果を破棄します。本人がリンクの解除を求めたときだけ呼び出してください。サイトを管理する人が必要です。GitHub 上の Lockpick App はアンインストールされません。リポジトリがリンクされていないサイトで解除しても、何も変わりません。

* 権限: サイト（`lockpick.sites`）
* 変更を伴うため、アシスタントは先に確認します

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `siteId` | 文字列 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>"
}
```

### lockpick_set_github_pr_comments

**GitHub プルリクエストコメントを設定**

サイトにリンクされたリポジトリについて、Deep のプルリクエストセキュリティコメントをオンまたはオフにします。オンのとき、Lockpick は各プルリクエストに、見つかった脆弱な依存関係をコメントします。本人が求めたときだけ呼び出してください。サイトを管理する人とリンク済みのリポジトリが必要です。オンにするには、lockpick_get_github_link の pullRequestComments.canEnable が必要です。サイトの GitHub リンクを返します。

* 権限: サイト（`lockpick.sites`）
* 変更を伴うため、アシスタントは先に確認します

| 入力        | 型   | 必須 |
| --------- | --- | -- |
| `enabled` | 真偽値 | はい |
| `siteId`  | 文字列 | はい |

```json title="引数の例"
{
  "enabled": true,
  "siteId": "<siteId>"
}
```

### lockpick_get_schedules

**自動チェックを取得**

サイトの自動チェックです。PulseとDeepのスケジュール（それぞれ最大1つ。有効、一時停止中、削除済みのいずれかで、頻度、実行の目安にするUTCの時刻、次回の実行、同意の有効期限、前回の実行の結果を含みます）、プランで深さごとに選べる頻度、そしてこのLockpickサーバーで自動チェックが設定されているかどうかを返します。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `siteId` | 文字列 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>"
}
```

### lockpick_set_pulse_schedule

**Pulseの自動チェックを設定**

サイトのPulseの自動チェックを設定、変更、または再開します。その後は、その頻度でサイトのPulseスキャンを実行し、実行ごとに通常のPulseと同じく利用枠を使います。cadence は daily、weekly、monthly のいずれかで、その深さでプランが許可するものでなければなりません（lockpick_get_schedules の allowed）。runHourUtc は実行の目安にするUTCの時刻（0-23）で、null はいつでもを意味します。新しいスケジュールには cadence が必要です。既存のスケジュールは省略した項目をそのまま保ち、一時停止中または削除済みのスケジュールは再開されます。そのため、cadence なしで呼び出すと再開になります。本人が依頼したときだけ呼び出してください。そのサイトでスキャンを開始できる人が必要です。スケジュールを返します。

* 権限: Pulseスキャン（`lockpick.pulse`）
* 変更を伴うため、アシスタントは先に確認します

| 入力           | 型                            | 必須  |
| ------------ | ---------------------------- | --- |
| `cadence`    | `daily`, `weekly`, `monthly` | いいえ |
| `runHourUtc` | 整数または null                   | いいえ |
| `siteId`     | 文字列                          | はい  |

```json title="引数の例"
{
  "siteId": "<siteId>"
}
```

### lockpick_pause_pulse_schedule

**Pulseの自動チェックを一時停止**

サイトのPulseの自動チェックをすぐに一時停止します。lockpick_set_pulse_schedule で再開するまで、予定されたPulseは実行されません。一時停止はプランにかかわらず常に可能です。スケジュールを返します。

* 権限: Pulseスキャン（`lockpick.pulse`）
* 変更を伴うため、アシスタントは先に確認します

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `siteId` | 文字列 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>"
}
```

### lockpick_prepare_deep_schedule

**Deepの自動チェックを準備**

サイトのDeepの自動チェックの設定、変更、または再開を準備し、approvalUrl を返します。このツール自体は何も変更しません。本人がリンクを開き、Lockpickでこの正確なスケジュールを承認するまで、何も設定されません。アシスタントが承認することはありません。本人にリンクを渡し、状態が確定する（approved、declined、failed、expired）まで、pollAfterSeconds ごとに requestId を付けて lockpick_get_schedule_request を呼び出してください。cadence は daily、weekly、monthly のいずれかで、その深さでプランが許可するものでなければなりません（lockpick_get_schedules の allowed）。runHourUtc は実行の目安にするUTCの時刻（0-23）で、null はいつでもを意味します。新しいスケジュールには cadence が必要です。既存のスケジュールは省略した項目をそのまま保ち、一時停止中または削除済みのスケジュールは再開されます。そのため、cadence なしで呼び出すと再開になります。

* 権限: Deepスキャン（`lockpick.deep`）
* 変更を伴うため、アシスタントは先に確認します

| 入力           | 型                            | 必須  |
| ------------ | ---------------------------- | --- |
| `cadence`    | `daily`, `weekly`, `monthly` | いいえ |
| `runHourUtc` | 整数または null                   | いいえ |
| `siteId`     | 文字列                          | はい  |

```json title="引数の例"
{
  "siteId": "<siteId>"
}
```

### lockpick_pause_deep_schedule

**Deepの自動チェックを一時停止**

サイトのDeepの自動チェックを、承認ページなしですぐに一時停止します。lockpick_prepare_deep_schedule と本人の承認で再開するまで、予定されたDeepは実行されません。一時停止はプランにかかわらず常に可能です。スケジュールを返します。

* 権限: Deepスキャン（`lockpick.deep`）
* 変更を伴うため、アシスタントは先に確認します

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `siteId` | 文字列 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>"
}
```

### lockpick_get_schedule_request

**Deepの自動チェックのリクエストを取得**

本人の承認を待っているDeepの自動チェックの状況です。pending、または確定状態の approved（スケジュール付き）、declined、failed（failure にスケジュールを設定できなかった理由が入ります）、expired のいずれかです。状態が確定するまで、lockpick_prepare_deep_schedule の pollAfterSeconds ごとに確認してください。本人の代わりにページを開いたり承認したりしないでください。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力          | 型   | 必須 |
| ----------- | --- | -- |
| `requestId` | 文字列 | はい |

```json title="引数の例"
{
  "requestId": "<requestId>"
}
```

### lockpick_list_shares

**共有リンクを一覧表示**

有効な公開共有リンクがある、サイトのPulseの結果です。新しい順に並び、それぞれ共有した日時が付きます。リンク自体は再表示されません。replace を付けて lockpick_share_scan を呼び出すと、新しいリンクを作成します。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `siteId` | 文字列 | はい |

```json title="引数の例"
{
  "siteId": "<siteId>"
}
```

### lockpick_share_scan

**Pulseの結果を共有**

完了したPulseの結果を公開リンクで公開します。リンクを持っている人は誰でも、サインインせずに開けます。本人がその結果の共有を依頼したときだけ呼び出してください。Deepの結果は共有されません。url が返るのは、リンクを作成した呼び出しだけです。結果がすでに共有されている場合、url は null です。replace: true を指定すると新しいリンクを作成し、古いリンクは使えなくなります。lockpick_unshare_scan で共有を停止します。

* 権限: Pulseスキャン（`lockpick.pulse`）
* 変更を伴うため、アシスタントは先に確認します

| 入力        | 型   | 必須  |
| --------- | --- | --- |
| `replace` | 真偽値 | いいえ |
| `scanId`  | 文字列 | はい  |

```json title="引数の例"
{
  "scanId": "<scanId>"
}
```

### lockpick_unshare_scan

**Pulseの結果の共有を停止**

Pulseの結果の共有を停止します。その公開リンクは、持っている全員に対してすぐに使えなくなります。本人が依頼したときだけ呼び出してください。lockpick_share_scan で、新しいリンクを使って再び共有できます。

* 権限: Pulseスキャン（`lockpick.pulse`）
* 変更を伴うため、アシスタントは先に確認します

| 入力       | 型   | 必須 |
| -------- | --- | -- |
| `scanId` | 文字列 | はい |

```json title="引数の例"
{
  "scanId": "<scanId>"
}
```

### lockpick_monitor

**セキュリティ情報**

現在のセキュリティアドバイザリと、悪意のあるパッケージのレポートを閲覧します。または、この認証情報が読み取れるサイトとの一致を説明します。1つのサイトには `siteId`、1つのレコードには `advisoryId` を使います。提出されたインベントリは、デプロイされたことや悪用されたことを証明するものではありません。スキャンは開始しません。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力           | 型                                                                 | 必須  |
| ------------ | ----------------------------------------------------------------- | --- |
| `view`       | `latest`、`sites`、`exploited`、`following`                          | いいえ |
| `kind`       | `all`、`vulnerability`、`malicious_package`                         | いいえ |
| `q`          | 文字列                                                               | いいえ |
| `ecosystem`  | `all`、`npm`、`pypi`、`composer`、`go`、`rubygems`、`maven`、`wordpress` | いいえ |
| `severity`   | `all`、`critical`、`high`、`medium`、`low`、`unknown`                  | いいえ |
| `days`       | 数値                                                                | いいえ |
| `cursor`     | 文字列                                                               | いいえ |
| `limit`      | 整数                                                                | いいえ |
| `siteId`     | 文字列                                                               | いいえ |
| `advisoryId` | 文字列                                                               | いいえ |

### lockpick_search_docs

**ドキュメントを検索**

Lockpickの公開ドキュメントをキーワードで検索します。スキャン、レポート、修正、再チェック、自動チェック、所有証明、CLI、MCP、APIの仕組みが対象です。使い方の質問に、Lockpick自身の言葉で答えるために使います。その後 lockpick_read_doc でページを読んでください。その人のデータは一切読みません。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力      | 型   | 必須  |
| ------- | --- | --- |
| `query` | 文字列 | はい  |
| `limit` | 整数  | いいえ |

```json title="引数の例"
{
  "query": "<query>"
}
```

### lockpick_read_doc

**ドキュメントのページを読む**

Lockpickの公開ドキュメントの1ページを、Markdownで返します。パスは lockpick_search_docs が示したもの、またはそのアドレスを指定します。パスを省略すると、残りのページへのリンクがある最初のページを読みます。長いページは分けて返されます。次の部分を読むには `nextCursor` を渡してください。

* 権限: 読み取り（`lockpick.read`）
* 読み取りのみ

| 入力       | 型   | 必須  |
| -------- | --- | --- |
| `path`   | 文字列 | はい  |
| `cursor` | 文字列 | いいえ |

```json title="引数の例"
{
  "path": "<path>"
}
```

## リソース

### scan-report

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

スキャンと、対応が必要な検出事項を、Markdownで示したものです。証拠はスキャンで取得した信頼できない内容です。

### scan-repair-brief

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

スキャンのすべてを直すブリーフです。最初の部分を示し、それは境界のセクションで終わります。以降の部分は、カーソルを付けて lockpick_get_repair_brief から取得します。

## プロンプト

### fix-lockpick-findings

このリポジトリで、Lockpickスキャンの検出事項を順に修正します。

* `scanId`、必須。修正するLockpickのスキャン

### lockpick-check-my-site

Lockpickでウェブサイトを確認し、結果を要約します。

* `url`、必須。確認するウェブサイト

### lockpick-go-deeper

サイトのDeepスキャンを準備します。Lockpickで私が承認します。

* `siteId`、必須。Lockpickのサイト