Skip to main content
Glama
ChristianPresley

threatintel-mcp

Submit URL to urlscan.io

scan_url

Submit a suspicious or unknown URL for a live sandbox scan to see what it loads, where it redirects, what infrastructure it contacts, and if it is flagged malicious.

Instructions

Submit a URL to urlscan.io for a fresh sandbox scan.

Call this when you have a suspicious or unknown URL and want live analysis: what it loads, where it redirects, what infrastructure it contacts, and whether urlscan flags it as malicious. Returns a scan uuid — then poll get_url_result with that uuid to fetch findings.

OPSEC — visibility defaults to 'unlisted' on purpose. A public scan is indexed and browsable by anyone, including the adversary, who may be watching urlscan for scans of their own infrastructure. Scanning their URL publicly tips them off that they are under investigation and can burn the operation. Use 'public' only when you deliberately want the result shared; use 'private' for the most sensitive cases.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to submit for scanning.
visibilityNoScan visibility: 'unlisted' (default), 'private', or 'public'.unlisted

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already mark this as a non-read-only, open-world, non-idempotent write, but the description adds substantial context the annotations cannot: default visibility is 'unlisted', public scans are indexed and adversary-visible, and public scanning can burn an investigation. That OPSEC disclosure is genuinely valuable. It stops short of covering rate limits, quota, or scan latency, so not a full 5.

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

Conciseness4/5

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

Front-loaded with the action and the follow-up tool, then the OPSEC block, which is longer than strictly necessary but every sentence carries decision-relevant content about visibility choice. No filler or repetition of the schema.

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?

An output schema exists so return values need not be fully documented, yet the description still tells the agent the key return artifact (uuid) and what to do with it (poll get_url_result). For a 2-parameter submission tool this covers everything needed to invoke it correctly and safely.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description adds real meaning beyond the schema's terse enum gloss by explaining the operational consequence of choosing 'public' versus 'unlisted' versus 'private'. It still leaves 'private' vs 'unlisted' slightly under-differentiated, so it is not a clean 5.

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+resource ('Submit a URL to urlscan.io for a fresh sandbox scan') and immediately distinguishes itself from the sibling get_url_result by naming it as the polling follow-up. An agent can tell this is the submission step, not the retrieval step, without opening either schema.

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?

Gives an explicit trigger condition ('when you have a suspicious or unknown URL') plus what the tool is for (live analysis: loads, redirects, infrastructure, maliciousness flag). It routes the agent onward to get_url_result with the returned uuid, so the workflow ordering is unambiguous.

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