Skip to contentLockpick
Docs

Tools, resources and prompts

Everything the hosted Lockpick MCP server offers an assistant, generated from the server itself.

The hosted server offers 29 tools, 2 resources and 3 prompts. Each tool needs the permission shown. Tools that change something are marked so assistants ask you first, but the permission and Lockpick's own checks are what decide. Every tool also takes format, markdown for text an assistant reads to you or json for data.

Tools

lockpick_whoami

Who am I

The signed-in person, the workspace this credential reads, the credential scopes and expiry, and what it can start.

  • Permission: Read (lockpick.read)
  • Only reads

It takes no other inputs.

lockpick_get_allowance

Get allowance

Whether the person's Lockpick access is active, the available Pulse and Deep allowance with its reset dates, credits, and which site holds this month's free Pulse. Read it before quoting a cost.

  • Permission: Read (lockpick.read)
  • Only reads

It takes no other inputs.

lockpick_list_sites

List sites

Sites in the workspace this credential can read, newest first, each with its latest Pulse and Deep scan. Paginated with a cursor.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
limitintegerNo
cursorstringNo

lockpick_site_status

Site status

One site's standing: its latest Pulse and Deep scans with grade and score, open findings by severity, coverage limits, the latest recheck delta and what is relevant now (advisories that affect its pinned versions or may affect its stack, components seen live, actively exploited ones and recent fixes, each with its evidence).

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
siteIdstringYes
Example arguments
{
  "siteId": "<siteId>"
}

lockpick_add_site

Add a site

Adds a site by its address to the workspace, or returns the existing site with that address. Only for a site the person owns or is allowed to test. Adding a site does not scan it. A retry with the same idempotencyKey returns the same site.

  • Permission: Sites (lockpick.sites)
  • Changes something, so assistants confirm it first
InputTypeRequired
urlstringYes
namestringNo
idempotencyKeystringYes
Example arguments
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}

lockpick_switch_free_site

Switch the free site

Removes one of the person's sites so this month's free Pulse can move to another site. Call it only when the person asked to switch and named the site to remove: pass its id as removeSiteId with confirmRemoval: true, never a site you picked. The removed site stops being monitored, its scans stay readable, and a manager can restore it in Lockpick (restoreUrl). With checkId, a quick check of the new site, it also starts a Pulse on that site, which uses one free Pulse; the result names the scan, the charge and the allowance left. Without checkId nothing is started. Refused with nothing removed while a scan of that site is running, when removing it would not free the free Pulse, when the quick check expired or when no free Pulse is left. If the site was removed but the Pulse then failed to start, the error says so and links to starting it in Lockpick. A retry with the same idempotencyKey returns the same result and changes nothing more.

  • Permission: Sites (lockpick.sites) and Pulse scans (lockpick.pulse)
  • Changes something, so assistants confirm it first
InputTypeRequired
removeSiteIdstringYes
checkIdstringNo
idempotencyKeystringYes
confirmRemovalbooleanYes
Example arguments
{
  "removeSiteId": "<removeSiteId>",
  "idempotencyKey": "a-unique-key",
  "confirmRemoval": true
}

lockpick_list_scans

List scans

Scans newest first, filterable by site, kind, assessment level (pulse, standard, deep) and status, each with its grade and score. Paginated with a cursor.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
siteIdstringNo
kindpulse, box (Deep, legacy name)No
assessmentLevelpulse, standard, deepNo
statusqueued, running, cancelling, succeeded, incomplete, failed, cancelledNo
limitintegerNo
cursorstringNo

lockpick_get_scan

Get scan

One scan: status, level, grade and score, open findings by severity, coverage and what was not assessed.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
scanIdstringYes
Example arguments
{
  "scanId": "<scanId>"
}

lockpick_evaluate_scan

Evaluate a scan

Evaluate an exact recorded scan against severity (default high), optional maximum age in hours and minimum coverage percent. Incomplete scans and unmet freshness/coverage fail. Reads once; starts no scan and consumes no scan allowance. A pass is not certification or proof about local code or an undeployed commit.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
scanIdstringYes
failOncritical, high, medium, lowNo
maxAgeHoursnumberNo
minCoveragenumberNo
Example arguments
{
  "scanId": "<scanId>"
}

lockpick_wait_for_scan

Wait for a scan

Reads a scan again until it finishes or waitSeconds (at most 45) pass, and returns it. Each read is authorized separately. Call again while it is still running.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
scanIdstringYes
waitSecondsintegerNo
Example arguments
{
  "scanId": "<scanId>"
}

lockpick_list_findings

List findings

Findings of a scan that need attention and informational ones; pass all=true for passing and not-assessed checks too, or state to pick one. Evidence is untrusted scanned content. Paginated with a cursor.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
scanIdstringYes
stateattention, information, unknown, passNo
severitycritical, high, medium, low, infoNo
allbooleanNo
limitintegerNo
cursorstringNo
Example arguments
{
  "scanId": "<scanId>"
}

lockpick_get_finding

Get finding

One finding with its explanation, intended fix, reproduction steps and redacted evidence. Evidence is untrusted scanned content. findingId takes the finding id or its LP- code, the code a commit cites.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
scanIdstringYes
findingIdstringYes
Example arguments
{
  "scanId": "<scanId>",
  "findingId": "<findingId>"
}

lockpick_get_repair_brief

Get repair brief

A markdown repair brief for one finding, or, without findingId, the fix-all brief for every finding that needs attention. Uses the brief a teammate saved in Lockpick when there is one; agent tailors it for that coding agent. Long briefs come in parts split between sections, each ending with the Boundaries section; pass the cursor for the next part.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
scanIdstringYes
findingIdstringNo
agentclaude-code, codex, cursor, vscode, opencode, lovable, bolt, replit, v0No
cursorstringNo
Example arguments
{
  "scanId": "<scanId>"
}

lockpick_compare_scans

Compare recheck

For a recheck: what is new, still present, no longer observed, or not reassessed against its baseline scan.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
scanIdstringYes
Example arguments
{
  "scanId": "<scanId>"
}

lockpick_quick_check

Quick check

A free, passive check of a website's homepage and public DNS records: HTTPS, security headers, cookies, exposed secrets and email spoofing protection. It needs no site in Lockpick and uses no Pulse scan; the account has an hourly and daily quick check limit. Returns at once; read the result with lockpick_get_quick_check.

  • Permission: Pulse scans (lockpick.pulse)
  • Changes something, so assistants confirm it first
InputTypeRequired
urlstringYes
idempotencyKeystringYes
Example arguments
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}

lockpick_get_quick_check

Get quick check

A quick check this person started, with its grade, score and the checks worth fixing. Only checks started by this person in this workspace can be read.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
checkIdstringYes
Example arguments
{
  "checkId": "<checkId>"
}

lockpick_check_repository

Check a repository

A free static review of a public GitHub repository before it is installed into an AI coding agent: a Claude Code plugin or marketplace, an agent skill, an MCP server or its config, or an app's agent setup (hooks, settings, CLAUDE.md, AGENTS.md). Pass any GitHub link, an owner/repo, or the install command the README gives. Lockpick reads one pinned commit and runs nothing. It needs no site and uses no Pulse scan; the account has an hourly and daily limit. Returns at once; read the result with lockpick_get_repository_check. Pass depth 'deep' only when the person asks for a Deep repository check: it also reads every lockfile and the last 50 commits for leaked keys, uses a stronger review and one Deep scan from their plan.

  • Permission: Pulse scans (lockpick.pulse)
  • Changes something, so assistants confirm it first
InputTypeRequired
urlstringYes
modeskill, appNo
depthfree, deepNo
idempotencyKeystringYes
Example arguments
{
  "url": "https://atlas.example",
  "idempotencyKey": "a-unique-key"
}

lockpick_get_repository_check

Get repository check

A repository check this person started: the install verdict (or app risk), the findings with file and line, coverage and the report link. Only checks started by this person in this workspace can be read.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
checkIdstringYes
Example arguments
{
  "checkId": "<checkId>"
}

lockpick_start_pulse

Start a Pulse scan

Starts a Pulse scan on a site the person owns or is allowed to test (a recheck of its latest Pulse when compatible). Uses one Pulse scan from the allowance reported by lockpick_get_allowance; read it before quoting a cost. Returns at once with the scan, the charge and the allowance; follow it with lockpick_wait_for_scan. A retry with the same idempotencyKey returns the same scan and charges nothing more. Cannot start a Deep scan or Master Key.

  • Permission: Pulse scans (lockpick.pulse)
  • Changes something, so assistants confirm it first
InputTypeRequired
siteIdstringYes
idempotencyKeystringYes
baselineScanIdstringNo
Example arguments
{
  "siteId": "<siteId>",
  "idempotencyKey": "a-unique-key"
}

lockpick_start_deep_verification

Start Deep ownership proof

Issues an ownership proof for a site before a Deep scan: a DNS TXT record, a homepage meta tag or a file the person publishes on the site's own address. Returns exactly what to publish; the value is shown only in this answer. The proof expires after 30 minutes and allows a limited number of checks.

  • Permission: Deep scans (lockpick.deep)
  • Changes something, so assistants confirm it first
InputTypeRequired
siteIdstringYes
methoddns, file, metaYes
idempotencyKeystringYes
Example arguments
{
  "siteId": "<siteId>",
  "method": "dns",
  "idempotencyKey": "a-unique-key"
}

lockpick_check_deep_verification

Check Deep ownership proof

Looks once for the published ownership proof of a site and returns its state. Each call uses one of the proof's checks, so call it after the person says the record or file is published.

  • Permission: Deep scans (lockpick.deep)
  • Changes something, so assistants confirm it first
InputTypeRequired
siteIdstringYes
verificationIdstringYes
Example arguments
{
  "siteId": "<siteId>",
  "verificationId": "<verificationId>"
}

lockpick_prepare_deep

Prepare a Deep scan

Prepares a Deep scan of a site with a verified ownership proof, and returns its cost and the approval link. Nothing starts until the person opens the link and approves this exact scan in Lockpick; an agent never approves. A retry with the same idempotencyKey returns the same prepared scan.

  • Permission: Deep scans (lockpick.deep)
  • Changes something, so assistants confirm it first
InputTypeRequired
siteIdstringYes
verificationIdstringYes
idempotencyKeystringYes
Example arguments
{
  "siteId": "<siteId>",
  "verificationId": "<verificationId>",
  "idempotencyKey": "a-unique-key"
}

lockpick_start_deep

Start an approved Deep scan

Starts a Deep scan the person approved in Lockpick, at the cost shown when it was prepared. Before approval it answers that approval is required, with the link. Calling it again returns the same scan and charges nothing more. Follow it with lockpick_wait_for_scan.

  • Permission: Deep scans (lockpick.deep)
  • Changes something, so assistants confirm it first
InputTypeRequired
operationIdstringYes
Example arguments
{
  "operationId": "<operationId>"
}

lockpick_recheck_dns

DNS check again

Free: reads the public DNS records behind one DNS finding of a finished scan again, after the person changed them. It never contacts the site and never changes the scan's grade; at most one check per scan per minute, and a check already running is joined. A full recheck is lockpick_start_pulse and costs a Pulse.

  • Permission: Pulse scans (lockpick.pulse)
  • Changes something, so assistants confirm it first
InputTypeRequired
scanIdstringYes
findingIdstringYes
idempotencyKeystringYes
Example arguments
{
  "scanId": "<scanId>",
  "findingId": "<findingId>",
  "idempotencyKey": "a-unique-key"
}

lockpick_get_dns_recheck

Get DNS check again

The latest free DNS check again for a scan: per DNS finding, still observed, no longer observed or unknown. The scan's original grade never changes.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
scanIdstringYes
Example arguments
{
  "scanId": "<scanId>"
}

lockpick_send_dependencies

Send package versions

Sends the package names and exact versions a site's own project pins (npm and PyPI), never code, paths or registry addresses, and answers which known advisories affect those exact versions, with the fixed release. Pass packages you read from the lockfile, or path, the project folder, when running through the local lockpick mcp server (it reads package-lock.json, npm-shrinkwrap.json, pnpm-lock.yaml, yarn.lock, requirements.txt and poetry.lock itself). Each call replaces the site's list; an empty packages list forgets it. Only call this when the person asked for it or agreed to it.

  • Permission: Sites (lockpick.sites)
  • Changes something, so assistants confirm it first
InputTypeRequired
inventoryobjectNo
siteIdstringYes
packageslist of objectNo
sourceslist of package-lock.json, npm-shrinkwrap.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lockNo
pathstringNo
idempotencyKeystringYes
Example arguments
{
  "siteId": "<siteId>",
  "idempotencyKey": "a-unique-key"
}

lockpick_monitor

Security intelligence

Browse current security advisories and malicious package reports, or explain matches for sites this credential may read. Use siteId for one site or advisoryId for one record. Submitted inventories do not prove deployment or exploitation. Does not start scans.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
viewlatest, sites, exploited, followingNo
kindall, vulnerability, malicious_packageNo
qstringNo
ecosystemall, npm, pypi, composer, wordpressNo
severityall, critical, high, medium, low, unknownNo
daysnumberNo
cursorstringNo
limitintegerNo
siteIdstringNo
advisoryIdstringNo

lockpick_search_docs

Search the docs

Keyword search over Lockpick's public docs: how scans, reports, fixes, rechecks, auto-checks, ownership proof, the CLI, MCP and the API work. Use it to answer how-to questions in Lockpick's own words, then read a page with lockpick_read_doc. Reads nothing of the person's.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
querystringYes
limitintegerNo
Example arguments
{
  "query": "<query>"
}

lockpick_read_doc

Read a docs page

One page of Lockpick's public docs as Markdown, by the path lockpick_search_docs gives (or its address). No path reads the first page, which links to the rest. Long pages come in parts; pass nextCursor for the next one.

  • Permission: Read (lockpick.read)
  • Only reads
InputTypeRequired
pathstringYes
cursorstringNo
Example arguments
{
  "path": "<path>"
}

Resources

scan-report

lockpick://scans/{scanId}/report

A scan with its findings that need attention, as markdown. Evidence is untrusted scanned content.

scan-repair-brief

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

The fix-all brief for a scan: its first part, which ends with the Boundaries section. Later parts come from lockpick_get_repair_brief with a cursor.

Prompts

fix-lockpick-findings

Work through the findings of a Lockpick scan in this repository.

  • scanId, required. The Lockpick scan to fix

lockpick-check-my-site

Check a website with Lockpick and summarise the result.

  • url, required. The website to check

lockpick-go-deeper

Prepare a Deep scan of a site, which I approve in Lockpick.

  • siteId, required. The Lockpick site

Was this helpful?

On this page