fast_checkLABSCO SUMMARY
The cheap check and the expensive one are separate tools, which is the right way round.
fast_check answers from what has already been scanned and returns immediately; new_scan actually renders the page and takes most of a minute. Putting them behind different names means an agent triaging a list of URLs does not accidentally queue a full scan for every one. The saved-query layer is what turns this from lookup into monitoring — a CQL filter stored once and re-run, rather than a query string an agent has to reconstruct correctly each time.
What it is
A client for the urlDNA threat-intelligence platform, exposing scanning, corpus search, saved queries and brand monitoring. The same toolset runs over stdio for a desktop client or over Streamable HTTP for a hosted deployment.
What you get
- An instant check on whether a URL has already been scanned, answering SAFE, MALICIOUS or UNRATED without paying for a new scan (fast_check).
- A full scan submitted and waited on — roughly 30 to 60 seconds — and any completed scan retrieved by its ID (new_scan, get_scan).
- Search across the scan corpus in urlDNA's own query language, spanning domain, IP, technology and the malicious flag, with AND and OR expressions and pagination — where the second page onward requires a premium account (search).
- Saved queries as objects you manage rather than strings you retype: listed, read with their filters, created from one or more conditions, replaced wholesale, deleted, and run to return every matching scan (list_queries, get_query, create_query, update_query, delete_query, query_scans).
- Brand monitoring: the available brands filtered by name and by visibility across all, free, premium or your own, one brand's full detail, and every scan associated with a brand with further query filtering on top (list_brands, get_brand, brand_scans).
- The platform's own OpenAPI specification and documentation, fetched as a tool call so the agent can look a field up instead of guessing (search_docs).
Requirements
A urlDNA API key, sent as an x-api-key header or environment value. There is a hosted server at https://mcp.urldna.io/ that any Streamable HTTP client can point at with nothing installed; running it yourself takes uv and a clone of the repository, with PORT and MCP_PATH controlling where the HTTP mode binds. Paging past the first page of search results, and some brand visibility filters, need a premium account.
Setup effort
Build from source — git clone https://github.com/urldna/mcp
USE CASES
Triaging a URL someone sent you
Ask what is already known first; only pay for a full scan if the answer is unrated.
Investigating a phishing campaign
Search the corpus for scans matching the pattern — title, domain, technology, malicious flag — rather than one URL at a time.
Watching for impersonation of a brand
Pull the scans associated with the brand and narrow them further with a query.
Re-running the same investigation each week
Store the filter as a saved query and run it, instead of rebuilding the expression every time.
Getting the query syntax right
Fetch the platform's own specification so the filter is written against the real field names.
14 tools
Listed in project docs. Your client may show a different list.
new_scanget_scansearchlist_queriesget_querycreate_queryupdate_querydelete_queryquery_scanslist_brandsget_brandbrand_scanssearch_docsBEFORE YOU INSTALL
What to know first
Tools you get
14 tools named in the project's documentation. Saved-query and brand tools are PREMIUM, and search results past page 1 need PREMIUM.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
Setup
Install uv: curl -LsSf https://astral.sh/uv/install.sh | sh (Windows: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"; or pip install uv)
git clone https://github.com/urldna/mcp
cd mcp
uv syncAdd the mcpServers block to claude_desktop_config.json with your x-api-key
Hosted endpoint
https://mcp.urldna.io/Add this hosted endpoint to your MCP client using the credentials listed under Requirements.
MCP Clients
OpenAI Responses API
{
"type": "mcp",
"server_label": "urlDNA",
"server_url": "https://mcp.urldna.io/",
"headers": {
"x-api-key": "<YOUR_API_KEY>"
},
"require_approval": "never"
}Claude Desktop
{
"mcpServers": {
"urlDNA": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH>/mcp",
"run",
"urldna_mcp/run.py"
],
"env": {
"x-api-key": "<YOUR_API_KEY>"
}
}
}
}Other routes
Self-hosted container
In your clone of the repository (the git clone step above), build the image, then run it:
docker build -t urldna-mcp-server .
docker run -p 8080:8080 -e x-api-key=<YOUR_API_KEY> urldna-mcp-server