
PreClick — An MCP-native URL preflight scanning service for autonomous agents.
Scans URLs for phishing, malware, and other threats before your agent clicks through, with optional intent matching to verify the link actually leads where your task expects. Exposes `url_scanner_scan` and `url_scanner_scan_with_intent` tools over streamable HTTP. Works in stateless mode by default at preclick.ai/mcp with a 100 request/day trial tier, no key required. Task-augmented mode queues scans asynchronously and returns a task ID you poll for results. Also ships standalone Python and Node clients if you want scan results without managing MCP protocol details. Useful when you're building agents that navigate the web autonomously and need a security layer before following links scraped from emails, search results, or user input.
- GitHub stars
- 6
- tools
- 6
- auth
- Secret needed
- transport
- HTTP
- last updated
- Apr 3, 2026
Install
From registry metadata$ npx add-mcp https://preclick.ai/mcp --name preclick-mcp --header 'X-API-Key: ${X_API_KEY}'Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http preclick-mcp https://preclick.ai/mcp --header 'X-API-Key: YOUR_X_API_KEY'Run in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 6 toolsVerified live against the running server on Nov 6, 2026.
url_scanner_async_scanSubmit a URL for asynchronous security analysis. Returns immediately with a task_id. Poll with url_scanner_async_task_status to check progress, then url_scanner_async_task_result to get the scan result. Async counterpart of url_scanner_scan for clients without native MCP Tasks...1 params
Submit a URL for asynchronous security analysis. Returns immediately with a task_id. Poll with url_scanner_async_task_status to check progress, then url_scanner_async_task_result to get the scan result. Async counterpart of url_scanner_scan for clients without native MCP Tasks...
url*stringurl_scanner_async_scan_with_intentSubmit a URL with optional user intent for asynchronous security analysis. Returns immediately with a task_id. Poll with url_scanner_async_task_status to check progress, then url_scanner_async_task_result to get the scan result. Async counterpart of url_scanner_scan_with_inten...2 params
Submit a URL with optional user intent for asynchronous security analysis. Returns immediately with a task_id. Poll with url_scanner_async_task_status to check progress, then url_scanner_async_task_result to get the scan result. Async counterpart of url_scanner_scan_with_inten...
intentstringurl*stringurl_scanner_async_task_resultRetrieve the result of an asynchronous scan task. If completed, returns the full scan result (risk_score, confidence, agent_access_directive, etc.). If still running, returns status with retry_after_ms — call again after that interval. Non-blocking.1 params
Retrieve the result of an asynchronous scan task. If completed, returns the full scan result (risk_score, confidence, agent_access_directive, etc.). If still running, returns status with retry_after_ms — call again after that interval. Non-blocking.
task_id*stringurl_scanner_async_task_statusCheck the status of an asynchronous scan task. Returns the current task status using native MCP task semantics (working, completed, failed, cancelled) without blocking. Use url_scanner_async_task_result to retrieve the result once completed.1 params
Check the status of an asynchronous scan task. Returns the current task status using native MCP task semantics (working, completed, failed, cancelled) without blocking. Use url_scanner_async_task_result to retrieve the result once completed.
task_id*stringurl_scanner_scanAnalyze a URL for security threats (synchronous, blocks until complete or timeout). Returns risk score, confidence, agent access guidance, and intent_alignment (always not_provided for this tool; use url_scanner_scan_with_intent for intent context). For long-running scans, pre...1 params
Analyze a URL for security threats (synchronous, blocks until complete or timeout). Returns risk score, confidence, agent access guidance, and intent_alignment (always not_provided for this tool; use url_scanner_scan_with_intent for intent context). For long-running scans, pre...
url*stringurl_scanner_scan_with_intentAnalyze a URL for security threats with optional user intent context (synchronous, blocks until complete or timeout). Returns risk score, confidence, agent access guidance, and intent_alignment. For long-running scans, prefer url_scanner_async_scan_with_intent which returns im...2 params
Analyze a URL for security threats with optional user intent context (synchronous, blocks until complete or timeout). Returns risk score, confidence, agent access guidance, and intent_alignment. For long-running scans, prefer url_scanner_async_scan_with_intent which returns im...
intentstringurl*stringSponsors
Readme
PreClick MCP Server
PreClick — An MCP-native URL preflight scanning service for autonomous agents. It scans links for threats and confirms they match the intended task before execution. Built for agentic workflows, it provides high-accuracy, context-aware browsing governance with adaptive learning.
Publisher: CybrLab.ai | Service: PreClick
Hosted Trial Tier: No API key required for up to 100 requests/day. For higher limits and stable quotas, use an API key (contact contact@cybrlab.ai).
Overview
PreClick is a URL security scanner and MCP server that enables AI agents and any client to analyze URLs for phishing, malware, and other security threats before navigation. Use it as a standalone URL scanner via the client libraries below, or connect directly via the MCP protocol.
Integrations
Client Libraries (Recommended)
Details
- Repository
- github.com/cybrlab-ai/preclick-mcp
- Website
- preclick.ai
- Transport
- HTTP
- Auth
- Required
- Registry
- MCP registry, active
- Tools verified
- Nov 6, 2026