Free passive security scan for AI-built apps: leaked API keys, public .env files, security headers
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get the free summary of a ShipLatch scan by its scan_ref (from scan_url). Use it when scan_url returned status "running". Results are kept for 7 days.
The scan_ref returned by scan_url
Get the free summary of a ShipLatch scan by its scan_ref (from scan_url). Use it when scan_url returned status "running". Results are kept for 7 days.
| Argument | Type | Description |
|---|---|---|
| scan_ref* | string | The scan_ref returned by scan_url |
{
"type": "object",
"required": [
"scan_ref"
],
"properties": {
"scan_ref": {
"type": "string",
"description": "The scan_ref returned by scan_url"
}
},
"additionalProperties": false
}List the categories of security checks ShipLatch runs, which are in the free passive scan and which need ownership verification. No network access.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Run ShipLatch's free passive security scan on a public web app URL (for example a Lovable, Bolt, Replit or Cursor app). Read-only: it fetches the page and its public JS like a browser would and never logs in, submits forms or tests exploits. Returns the grade, issue counts and the type of each issue; exact locations and fix prompts stay in the full report for the verified owner. Only scan sites you own or are authorized to test. Results for the same site are cached for 24 hours. If the scan takes longer than about 25 seconds it returns status "running" and a scan_ref: call get_scan with it.
| Argument | Type | Description |
|---|---|---|
| url* | string | The app's public URL, e.g. https://myapp.lovable.app |
| focus | string | Optional: also answer one question yes/no. env = is a .env file public; vite = is a dev server exposed; rls = Supabase key exposure; gemini = Gemini/Google AI key exposure. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The app's public URL, e.g. https://myapp.lovable.app"
},
"focus": {
"enum": [
"env",
"vite",
"gemini",
"rls"
],
"type": "string",
"description": "Optional: also answer one question yes/no. env = is a .env file public; vite = is a dev server exposed; rls = Supabase key exposure; gemini = Gemini/Google AI key exposure."
}
},
"additionalProperties": false
}