Exposes Nullcone threat intelligence as MCP tools, resources, and prompts, making the network natively usable by Claude, GPT, and other AI agents without any custom HTTP integration. Provides threat indicator (IOC) submission, lookup, querying, and reporting capabilities backed by SpacetimeDB.
Server exposes 4 tools with complete input schemas and descriptions. Naming follows verb_noun pattern (submit_ioc, lookup_ioc, recent_threats). Descriptions are substantive (100-250 chars) and explain WHAT and WHEN. However, parameter descriptions lack actionable constraints (e.g., severity 0-10 range stated but no guidance on when to use 1 vs 3 vs 5 vs 7 vs 9). Output schemas are partially documented in code comments but not formally declared in tool registration. Error handling is minimal, no recovery guidance or categorization. Missing tool annotations (readOnlyHint, destructiveHint). submit_batch lacks per-item error reporting.
Look up a threat signature by its exact IOC value. Returns the full signature record if found, including severity, family, detection count, and false positive votes.
Return the most recently observed threat signatures.
Submit multiple IOCs in a single call. Preferred over looping submit_ioc for bulk ingest from honeypots, sandboxes, or feed processing. Each dict in `iocs` follows the same schema as submit_ioc parameters. Required keys: ioc_type, value. All others are optional. Returns one result dict per input IOC in the same order.
Submit a threat indicator (IOC) to the shared intelligence network. The IOC is automatically classified into a malware family, metadata is compressed, and deduplication is handled atomically. All subscribed agents see the new IOC instantly.
Output schemas not formally documented in tool registration. Code comments describe _sig_dict() and _sig_dict_full() but LLMs cannot parse comments. Tools return dicts with fields (id, ioc_type, value, family_name, severity, confidence, last_seen, detection_count, tags, is_likely_fp, first_seen, false_positive_votes) but this structure is invisible to the MCP client.
Parameter constraints lack actionable guidance. 'severity: 0-10' is stated but no explanation of when to use 1 (info) vs 3 (low) vs 5 (medium) vs 7 (high) vs 9 (critical). LLMs must guess. Confidence 0-100 has no guidance on typical ranges (70 default suggests 70+ is normal, but this is implicit).
No error handling guidance. If submit_ioc fails (invalid ioc_type, network error, duplicate), the response is a dict with 'error' key, but no recovery hint. LLM does not know: retry? Ask user? Call a different tool? No categorization (retryable vs user-fixable vs fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
submit_batch returns 'one result dict per input IOC in the same order' but no per-item error reporting. If 3 of 50 IOCs fail, does the response include which ones failed and why? Code does not show per-item success/failure structure.
Tool annotations missing. submit_ioc and submit_batch are destructive (WRITE risk) but no destructiveHint in schema. lookup_ioc and recent_threats are read-only but no readOnlyHint. Agents cannot infer safety without annotations.