check_scan_result
Check the status of a submitted URL or file scan by polling every 5 seconds. Returns malicious/suspicious/clean verdict and engine vote counts when complete.
Instructions
Poll for the result of a previously submitted URL or file scan. Call every 5 seconds after scan_url or scan_file until status is 'completed'. Returns verdict (malicious/suspicious/clean) and engine vote counts, or {status: pending} if the scan is still running. Free with a paid scan (no additional charge).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_id | Yes | analysis_id returned by scan_url or scan_file |
Implementation Reference
- src/relayshield_mcp/server.py:341-346 (handler)Handler: when the tool name is 'check_scan_result', it dispatches a GET request to /result/{analysis_id} to poll the scan result.
if name == "check_scan_result": result_base = f"{API_BASE}/v1/payg" if payg else f"{API_BASE}/v1" return await client.get( f"{result_base}/result/{arguments['analysis_id']}", headers=headers, ) - Schema: declares the check_scan_result tool with input schema requiring analysis_id string.
types.Tool( name="check_scan_result", description=( "Poll for the result of a previously submitted URL or file scan. " "Call every 5 seconds after scan_url or scan_file until status is 'completed'. " "Returns verdict (malicious/suspicious/clean) and engine vote counts, " "or {status: pending} if the scan is still running. " "Free with a paid scan (no additional charge)." ), inputSchema={ "type": "object", "required": ["analysis_id"], "properties": { "analysis_id": { "type": "string", "description": "analysis_id returned by scan_url or scan_file", } }, }, - src/relayshield_mcp/server.py:211-231 (registration)Registration: check_scan_result is listed in the list_tools() handler (decorated with @app.list_tools()) which registers it as an available MCP tool.
types.Tool( name="check_scan_result", description=( "Poll for the result of a previously submitted URL or file scan. " "Call every 5 seconds after scan_url or scan_file until status is 'completed'. " "Returns verdict (malicious/suspicious/clean) and engine vote counts, " "or {status: pending} if the scan is still running. " "Free with a paid scan (no additional charge)." ), inputSchema={ "type": "object", "required": ["analysis_id"], "properties": { "analysis_id": { "type": "string", "description": "analysis_id returned by scan_url or scan_file", } }, }, ), ] - src/relayshield_mcp/server.py:50-51 (helper)Helper: pricing configuration showing check_scan_result is free (no charge) when used to poll a paid scan result.
"check_scan_result": "$0.00 USDC (free — poll result of a paid scan)", "scan_url": "coming soon",