{"serverId":"mcp-registry/ai.tunnelmind/scry","tools":[{"name":"scry_check","fixed":{"name":"scry_check","description":"Returns Scry's corpus knowledge for a single IPv4 address: when it was first/last\nobserved, observation count, protocols and ports targeted, ASN, country, category\n(actor/scanner/not_observed), and confidence_bucket (low/medium/high).\n\nUse when an agent needs IP triage, hostility assessment, or risk signaling.\nDo NOT use for raw payloads (never exposed) or IPv6 (corpus is v4-only at v0.1).","inputSchema":{"type":"object","required":["ip"],"properties":{"ip":{"type":"string","description":"IPv4 address (e.g. '8.8.8.8')"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":167,"tokensAfter":167},{"name":"scry_check_bulk","fixed":{"name":"scry_check_bulk","description":"Look up many IPv4 addresses in one request. Up to 100 IPs per call. Same per-IP shape as scry_check, keyed by IP.","inputSchema":{"type":"object","required":["ips"],"properties":{"ips":{"type":"array","items":{"type":"string"},"maxItems":100,"minItems":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":92,"tokensAfter":92},{"name":"scry_country","fixed":{"name":"scry_country","description":"Roll-up of corpus activity by ISO country code. Same shape as scry_asn.","inputSchema":{"type":"object","required":["country"],"properties":{"country":{"type":"string","pattern":"^[A-Za-z]{2}$"},"since_ms":{"type":"integer"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":82,"tokensAfter":82},{"name":"scry_stats","fixed":{"name":"scry_stats","description":"Returns aggregate Scry corpus telemetry: total observation count, distinct\nsource IPs, first/last observation timestamps, last-24h activity, and\nper-protocol breakdowns. Useful as a liveness/density check before issuing\nper-IP queries — lets an agent decide whether the corpus has enough data\nto be authoritative.\n\nUse this tool when:\n- An agent is planning a multi-step investigation and wants to know if Scry\n  has corpus density worth querying.\n- You want a 'corpus health' signal in a dashboard o","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":174,"tokensAfter":174}],"toolsChanged":4,"tokensSaved":0,"todo":[{"tool":"scry_asn","params":["asn","since_ms"]},{"tool":"scry_campaign","params":["id"]},{"tool":"scry_campaigns","params":["limit","include_inactive"]},{"tool":"scry_check_bulk","params":["ips"]},{"tool":"scry_country","params":["country","since_ms"]},{"tool":"scry_recent","params":["limit","country","protocol","since_ms","include_noise"]},{"tool":"scry_timeseries","params":["bucket","since_ms","until_ms"]},{"tool":"scry_tool","params":["id"]},{"tool":"scry_tools","params":["limit","protocol","since_ms"]},{"tool":"scry_top","params":["limit","since_ms","dimension","include_noise"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}