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

A
Description quality
100%
Schema completeness
100%
Naming quality
77%
Poisoning risk
100%
Permission match
80%
Protocol compliance
100%

Findings (3)

  • LOWTool 'url_scanner_async_scan_with_intent' name length outside 3-30 rangein url_scanner_async_scan_with_intent
  • LOWTool 'url_scanner_async_task_result' suggests web access but openWorldHint=falsein url_scanner_async_task_result
  • LOWTool 'url_scanner_async_task_status' suggests web access but openWorldHint=falsein url_scanner_async_task_status

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,125Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (0.88% of 128k context)

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-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools