Skip to main content
Glama

Scan a web app (free, passive)

scan_url
Read-onlyIdempotent

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.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "url": "<url>"
    },
    "name": "scan_url"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesThe app's public URL, e.g. https://myapp.lovable.app
focusNoOptional: 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/destructive/idempotent, yet the description adds real value beyond them: no login, no form submission, no exploit testing, 24-hour result caching, a ~25 second timeout that returns status 'running' plus a scan_ref, and what the results do and do not include (issue types only; locations gated to the verified owner).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the action and read-only scope come first, then authorization, caching, and the timeout branch. Every sentence carries operational information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the missing pieces an agent would otherwise have to guess: what the call returns, the async 'running' outcome and recovery path via get_scan, caching effects, and access restrictions, despite there being no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already explains both url and the focus enum in detail, so the baseline applies. The description adds no extra meaning about the focus parameter or URL formatting beyond the schema's own examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run ShipLatch's free passive security scan on a public web app URL') with concrete examples of the target platforms, and names the follow-up sibling get_scan, so it is distinguishable from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly sets the precondition ('public web app URL'), the authorization constraint ('Only scan sites you own or are authorized to test'), and the branch to the alternative ('call get_scan with it' when status is running).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources