urlscan-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| URLSCAN_API_KEY | No | Optional API key for urlscan.io. Without it, some tools degrade gracefully and verdicts are not available in search results. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| scan_urlA | Submit a URL to urlscan.io for scanning. Returns immediately with a UUID. The scan takes roughly 10-30 seconds to complete. Use scan_and_wait instead if you want the finished result in one call. Requires an API key. visibility must be one of: public, unlisted, private. country is a 2-letter ISO code selecting the scanner's exit location. |
| scan_and_waitA | Submit a URL and wait for the finished, summarised result. This is the tool to reach for in most workflows — it handles the submit, poll and summarise cycle in one call. Requires an API key. |
| get_scan_resultA | Fetch the result of a completed scan by UUID. Requires an API key. Returns a summary by default. Set full=True for the complete document — be aware that it is frequently several megabytes and will dominate the context window. |
| get_page_domA | Fetch the captured DOM snapshot for a scan. Requires an API key. Useful for inspecting injected scripts, hidden form fields, or obfuscated payloads. Truncated to max_chars — full DOMs regularly exceed 1 MB. |
| get_screenshot_urlA | Get the screenshot URL for a scan. Returns a link rather than image bytes — screenshots are large and usually meant for a human to open. |
| search_scansA | Search historical urlscan.io scans with an ElasticSearch query string. Useful fields: page.domain, page.ip, page.asn, page.server, page.status, domain, ip, asn, country, hash, filename, task.tags, verdicts.score, verdicts.malicious, date. Examples: page.domain:example.com AND page.status:200 task.tags:phishing AND date:>now-30d verdicts.score:>50 AND page.asn:AS15169 Works without an API key, at lower rate limits. |
| search_by_domainB | Find recent scans of a domain. Matches the domain and its subdomains. |
| search_by_ipA | Find recent scans of pages served from an IP address. Good for spotting what else is hosted alongside something suspicious. |
| search_by_asnA | Find recent scans hosted within an autonomous system, e.g. 'AS15169'. |
| search_by_hashA | Find scans that loaded a resource with this SHA-256 response hash. Pivots from one known-bad file to every other page serving it — often the fastest way to map a campaign. |
| get_quotasA | Show remaining urlscan.io API quota for the configured key. Worth checking before a batch of scans. Requires an API key. |
| list_available_countriesA | List country codes available as scanner exit locations. Geo-targeted phishing frequently only serves the payload to one region, so re-scanning from the right country is often what makes it visible. |
| server_capabilitiesA | Report which operations are available with the current configuration. Submission and quota lookup need an API key; search and result retrieval do not. Call this first if something is unexpectedly refused. |
| assess_indicatorA | Build a reputation picture for a domain, IP, URL or SHA-256 hash. Aggregates every recent urlscan.io scan of the indicator into one assessment: how often it has been scanned, how many scans were flagged malicious, the highest and mean verdict scores, which tags and brands recur, and the hosting spread. This is analysis on top of the raw API rather than a passthrough — it answers "should I care about this?" instead of returning a scan document. Read the caveats field before acting on the result. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/blackhole8080-darkmatter/urlscan-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server