PreClick — An MCP-native URL preflight scanning service for autonomous agents (formerly URLCheck).
PreClick scans links for threats and confirms intent match with high accuracy before agents click.
Should I use this
Quality & Safety
Findings (3)
- LOWin url_scanner_async_scan_with_intent
- LOWin url_scanner_async_task_result
- LOWin url_scanner_async_task_status
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"urlcheck-mcp": {
"url": "https://urlcheck.ai/mcp"
}
}
}Remote endpoints
https://urlcheck.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢url_scanner_async_scan(url)
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 support.
Input Schema
{
"type": "object",
"properties": {
"url": {
"description": "The URL to analyze. Must be HTTP or HTTPS. If no scheme provided, https:// is assumed.",
"type": "string"
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Request parameters for url_scanner_async_scan tool.",
"title": "AsyncScanRequest"
}🟢url_scanner_async_scan_with_intent(intent, url)
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_intent for clients without native MCP Tasks support.
Input Schema
{
"type": "object",
"properties": {
"intent": {
"description": "Optional user intent for visiting the URL. Recommended for additional context.",
"type": [
"string",
"null"
]
},
"url": {
"description": "The URL to analyze. Must be HTTP or HTTPS. If no scheme provided, https:// is assumed.",
"type": "string"
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Request parameters for url_scanner_async_scan_with_intent tool.",
"title": "AsyncScanWithIntentRequest"
}🟢url_scanner_async_task_result(task_id)
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.
Input Schema
{
"type": "object",
"properties": {
"task_id": {
"description": "The task ID to retrieve the result for.",
"type": "string"
}
},
"required": [
"task_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Request parameters for url_scanner_async_task_result tool.",
"title": "AsyncTaskResultRequest"
}🟢url_scanner_async_task_status(task_id)
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.
Input Schema
{
"type": "object",
"properties": {
"task_id": {
"description": "The task ID to check status for.",
"type": "string"
}
},
"required": [
"task_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Request parameters for url_scanner_async_task_status tool.",
"title": "AsyncTaskStatusRequest"
}🟢url_scanner_scan(url)
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, prefer url_scanner_async_scan which returns immediately with a task_id for polling via url_scanner_async_task_result.
Input Schema
{
"type": "object",
"properties": {
"url": {
"description": "The URL to analyze. Must be HTTP or HTTPS. If no scheme provided, https:// is assumed.",
"type": "string"
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Request parameters for url_scanner_scan tool.\n\nThe URL parameter accepts both encoded and unencoded URLs.\nIf no scheme is provided, https:// is assumed.",
"title": "ScanRequest"
}🟢url_scanner_scan_with_intent(intent, url)
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 immediately with a task_id for polling via url_scanner_async_task_result.
Input Schema
{
"type": "object",
"properties": {
"intent": {
"description": "Optional user intent for visiting the URL. Recommended for additional context.",
"type": [
"string",
"null"
]
},
"url": {
"description": "The URL to analyze. Must be HTTP or HTTPS. If no scheme provided, https:// is assumed.",
"type": "string"
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Request parameters for url_scanner_scan_with_intent tool.\n\nThe URL parameter accepts both encoded and unencoded URLs.\nIf no scheme is provided, https:// is assumed.",
"title": "ScanWithIntentRequest"
}Community
Evidence