unphurl
MCP serverAI & modelsUnphurl gives your AI the ability to check URLs for security and data quality signals and get a risk score from 0 to 100 with a breakdown of what drove it. Once added, your AI can vet links before they are trusted and flag likely phishing. You start with 20 free checks, and the weighting of the 25 scoring signals can be adjusted to fit your needs.
Use unphurl in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add unphurl and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the signup tool from unphurl
No key or account is asked for. Not verified by us yet: Ahel has not run a call through it.
Details
Available today. Use it from your connected AI after setup. It ran on Ahel's own infrastructure and offers 16 tools.
No key or account is asked for. Not verified by us yet: Ahel has not run a call through it.
After adding it, create an Unphurl account and store the API key it shows you, since it is displayed only once, then confirm the verification email (the link can be resent if needed). After that, ask your AI to check a URL to see its first risk score.
What your AI can do with it
- Check a single URL or a whole batch and get a risk score from 0 to 100 for each
- See a detailed breakdown of the security and data quality signals behind each score
- Review recent check history, including scores and phishing status
- Create custom scoring profiles that override the default weights of the 25 signals
- Show the default weights and descriptions for all 25 scoring signals
- Check your credit balance, view pricing packages, and purchase more checks
Install unphurl
The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user unphurl 'https://mcp.unphurl.com/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://mcp.unphurl.com/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=unphurl&config=eyJ1cmwiOiJodHRwczovL21jcC51bnBodXJsLmNvbS9tY3AifQ==Open the link and Cursor adds the server at that address.
ChatGPT
https://mcp.unphurl.com/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add unphurl --url 'https://mcp.unphurl.com/mcp'Run it once, then sign in with codex mcp login unphurl if the server asks for an account.
From the project's README
As published by 123ergo/unphurl-mcp in README.md.
_ _ _ _ ____ _ _ _ _ ____ _
| | | | \ | | _ \| | | | | | | _ \| |
| | | | \| | |_) | |_| | | | | |_) | |
| |_| | |\ | __/| _ | |_| | _ <| |___
\___/|_| \_|_| |_| |_|\___/|_| \_\_____|
URL intelligence for AI agents and developers. 16 MCP tools. 25 signals. 7 dimensions.
Give your AI agent eyes for URLs. Unphurl analyses any URL across 7 dimensions (redirect behaviour, brand impersonation, domain age, SSL/TLS, parked detection, URL structure, DNS enrichment) and returns structured signals with a configurable 0-100 risk score. Signals, not verdicts. Your agent decides what to do with them.
Works with Claude Code, Claude Desktop, Claude Cowork, ChatGPT desktop, Cursor, Windsurf, and any MCP-compatible tool.
What it costs
Every new account gets 20 free pipeline check credits. Most lookups are free. Known domains (Tranco Top 100K) and previously analysed domains return cached results at no cost. You only pay when an unknown domain runs through the full pipeline.
| Package | Credits | Price | Per check |
|---|---|---|---|
| Starter | 100 | $9 | $0.090 |
| Standard | 500 | $39 | $0.078 |
| Pro | 2,000 | $99 | $0.050 |
| Scale | 10,000 | $399 | $0.040 |
One-time purchases, no subscriptions. In typical use, 95-99% of URLs resolve free.
Quick start
1. Add to your MCP configuration
Add to your .mcp.json (Claude Code, Claude Desktop, Claude Cowork, ChatGPT desktop, Cursor, Windsurf, or any MCP-compatible tool):
{
"mcpServers": {
"unphurl": {
"command": "npx",
"args": ["-y", "@unphurl/mcp-server"],
"env": {
"UNPHURL_API_KEY": "uph_your_key_here"
}
}
}
}
2. No account yet?
The AI can create one for you. Just ask: "Sign up for Unphurl." The signup tool works without an API key. After signup, add the key to your MCP configuration and restart.
3. Start checking URLs
Just talk to your AI:
"Check https://suspicious-domain.xyz"
"Batch check all URLs in this spreadsheet"
"Create a scoring profile called 'lead-qual' that weights parked domains at 30 and no MX record at 20"
"Check my credit balance"
No commands to memorize. No syntax to learn. Your AI handles the tool calls.
What you get back
Every check returns signals across 7 dimensions:
| Dimension | What it tells you |
|---|---|
| Redirect behaviour | Full chain (up to 10 hops), shortener detection, stopped reasons |
| Brand impersonation | Levenshtein + homoglyph analysis against 150+ brands |
| Domain intelligence | Age, registrar, expiration, status codes, nameservers (via RDAP) |
| SSL/TLS | Real handshake validation from Cloudflare's edge |
| Parked detection | 4-layer check: registrar pages, for-sale, empty content, parking services |
| URL structure | Length, path depth, subdomain count, entropy, IP detection, encoded chars |
| DNS enrichment | MX record existence (can the domain receive email?) |
Every signal is business intelligence. Domain age tells you how established a company is. No MX record means they can't receive email. Expiring domains mean a business might be shutting down. Combined with your AI's ability to process in bulk and output to spreadsheets, it becomes a lightweight due diligence engine.
16 Tools
| Tool | What it does | Auth |
|---|---|---|
signup | Create a new account, get an API key | No |
resend_verification | Resend verification email (3/hour limit) | Yes |
check_url | Check a single URL across all 7 dimensions | Yes |
check_urls | Batch check up to 500 URLs (handles async polling automatically) | Yes |
list_profiles | List your custom scoring profiles | Yes |
create_profile | Create or update a scoring profile with custom weights | Yes |
delete_profile | Delete a scoring profile | Yes |
show_defaults | Show all 25 scoring signals with default weights | No |
get_balance | Check your pipeline check credit balance | Yes |
get_stats | View usage statistics and score threshold counts | Yes |
get_pricing | Show available credit packages and pricing | No |
purchase | Purchase credits (returns Stripe Checkout URL) | Yes |
check_history | View recent URL check history | Yes |
list_allowlist | List trusted domains that suppress scoring amplifiers | Yes |
add_to_allowlist | Add domains to your trusted allowlist (up to 100 per request) | Yes |
remove_from_allowlist | Remove domains from your trusted allowlist | Yes |
Power moves
Batch check + filter
"Check these 500 URLs. Give me two lists: the clean ones (score under 25) and the flagged ones (score 50 or higher). Export both as CSV."
Your AI gets the batch results, filters by score, and outputs the lists. No code, no scripting.
Custom scoring profiles
Different jobs need different weights. A security bot cares about brand impersonation. A cold email tool cares about parked domains and missing MX records.
"Create a profile called 'cold-email' that weights parked at 30, no_mx_record at 20, and domain_age_7 at 25. Then batch check my lead list using that profile."
Combine with other tools
Unphurl inside an AI chat combines with everything else your agent has access to:
- Spreadsheets: Read a CRM export, batch-check every URL, write results back with risk scores
- Web scraping: Scrape a competitor's partner page, check every link for health
- Documents: Generate a branded PDF audit report from the results
- Scheduled tasks: "Check my critical URLs every Monday morning"
How billing works
- A positive credit balance is required for all checks, even free lookups.
- Known domains (google.com, amazon.com, etc.): free, instant.
- Cached domains (analysed recently by anyone): free, instant.
- Unknown domains (first-time analysis): 1 credit each.
- Batch checks deduct credits upfront for unknowns. If you don't have enough, you get a summary showing exactly how many credits you need.
- Failed pipeline checks are automatically refunded.
Companion skill
The check-url-safety skill teaches your AI to proactively check URLs before following or recommending them, without being asked.
Claude Cowork or Claude Desktop: Just ask: "Install the Unphurl URL safety skill."
Claude Code, Cursor, or other dev tools:
# Global (all projects)
cp node_modules/@unphurl/mcp-server/skills/check-url-safety.md ~/.claude/skills/
# Or for a specific project
cp node_modules/@unphurl/mcp-server/skills/check-url-safety.md .claude/skills/
Build a business on it
Unphurl costs you $0.04-$0.09 per check. A website link audit takes 15 minutes and uses 50-100 credits. Charge $150-$500 per audit.
Service ideas: link health audits, lead list verification, SEO backlink audits, newsletter link monitoring, vendor vetting reports, brand protection monitoring, influencer vetting.
Also available as
- CLI:
npx unphurl(npm) - Hosted MCP for Claude Cowork (no local install): mcp.unphurl.com
- REST API: api.unphurl.com
- Website: unphurl.com
- Visual guides: unphurl.com/getting-started-guides
License
MIT
Tools it gives your AI (16)
| Tool | What it does |
|---|---|
| signup | Create a new Unphurl account. Returns an API key (shown once, store it securely). After signup, the user must check their email and click the verification link. |
| resend_verification | Resend the email verification link for an existing Unphurl account. Use this when a user signed up but their verification link expired (links are valid for 24 hours) and they need a new one. |
| check_url | Check a single URL for security and data quality signals. Returns a risk score (0-100), detailed signal breakdown, and metadata. Unphurl analyses URLs across seven dimensions: redirect behaviour... |
| check_urls | Check multiple URLs in a single batch. Returns results for all URLs, handling async processing automatically. Each URL is analysed across seven dimensions: redirect behaviour, brand impersonation... |
| list_profiles | List all custom scoring profiles on this account. Returns profile names and their custom weight overrides. Profiles are named weight sets that change how Unphurl scores URLs. |
| create_profile | Create or update a custom scoring profile. Profiles are sparse overrides: only specify the weights you want to change. |
| delete_profile | Delete a custom scoring profile. This is permanent. Any future check requests using this profile name will fall back to default weights. Use list_profiles to see your current profiles before... |
| show_defaults | Show all 25 scoring signals with their default weights and descriptions. This is the baseline scoring that applies when no custom profile is specified. Use this to understand what each signal means... |
| get_balance | Check your pipeline check credit balance. Shows credits remaining, total purchased, total used, and lifetime free lookups count. Credits are consumed only when unknown domains run through the full... |
| get_pricing | Show available pipeline check credit packages and pricing. Returns all packages with credit counts and prices. Packages (one-time purchase, no subscription): - Starter: 100 credits for $9 ($0.09... |
| purchase | Purchase pipeline check credits. Returns a Stripe Checkout URL that the user must open in a browser to complete payment. The AI cannot complete the payment. |
| check_history | View recent URL check history. Shows what URLs have been checked, their scores, phishing status, and whether each check was free or used a pipeline credit. Results are paginated. |
| get_stats | View your account usage statistics. Shows total URLs submitted, breakdown by gate (Tranco lookups, cache lookups, pipeline checks), free rate percentage, score threshold counts, and credit... |
| list_allowlist | List all domains on this account's trusted allowlist. Allowlisted domains suppress the compound signal and brand impersonation floor in scoring. |
| add_to_allowlist | Add one or more domains to this account's trusted allowlist. Allowlisted domains suppress the compound signal and brand impersonation floor in scoring. |
| remove_from_allowlist | Remove one or more domains from this account's trusted allowlist. Once removed, those domains resume normal scoring on the next check. |
Signals
- GitHub stars
- 1
- Last commit
- Apr 2026
- Tools captured
- 16
Advanced
- Delivery
- unphurl MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
io-github-123ergo-unphurl- Source
- github.com/123ergo/unphurl-mcp
- Hosted endpoint
https://mcp.unphurl.com/mcp
github.com/123ergo/unphurl-mcp
More in AI & models
MCP server · upstash
More in AI & modelsAdButler
MCP server · adbutler
More in AI & modelsatom-mcp-server
MCP server · a7om-ai
More in AI & modelsottasia
MCP server · aiweather-anurag
More in AI & modelsmicrosoft-learn-mcp
MCP server · microsoftdocs
More in AI & modelsfree-blueprints
MCP server · agent-blueprint
More in AI & models