Skip to main content
Glama

Nullcone Threat Intelligence

poll_since

Fetch new threat signatures since a high-water mark ID. This is the
recommended sync pattern — one call, get new data, persist next_id,
disconnect. No persistent connection required.

Call with last_id=0 on first run to get all signatures. Persist the
returned next_id and pass it on the next call to get only new entries.
If count == batch_size, call again immediately to drain backlog.

Args:
    last_id:      Last signature ID seen (0 for all). Persist this between calls.
    batch_size:   Max signatures to return (1–5000)
    min_severity: Skip signatures below this severity (0–10)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
last_idNo
batch_sizeNo
min_severityNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it delivers: it reveals that no persistent connection is required, that state must be persisted between calls (next_id), that the tool batches results, and that immediate re-calling is needed to drain the backlog. This is exactly the kind of behavioral context an agent needs for a stateful sync operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: a purpose sentence, a pattern statement, a usage flow, and a compact Args block. Every sentence earns its place — the 'No persistent connection required' note and the drain instruction are behaviorally significant, not filler. There is no repetition of schema information, and the content is front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a stateful pagination tool with no annotations and no output schema, the description covers the critical operational details: first-run initialization, state persistence, backlog draining, and parameter ranges. The only minor gap is that the min_severity 0–10 scale's meaning is left to the agent's inference (does higher mean more severe?), and the next_id return contract is implied rather than explicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully compensate, and it does. It adds substantive meaning beyond the schema's bare defaults: last_id is explained as the high-water mark to persist between calls, batch_size gets a valid range (1–5000) and semantics ('max signatures to return'), and min_severity gets a range and behavior ('skip signatures below'). This directly enables correct parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource-scope construction: 'Fetch new threat signatures since a high-water mark ID.' This clearly identifies the tool's function and differentiates it from siblings like get_new_threats (bulk retrieval) and check_freshness (status check) by emphasizing the incremental high-water mark pattern and explicitly labeling it 'the recommended sync pattern.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong usage guidance: call with last_id=0 on first run, persist next_id, pass it on subsequent calls, and drain backlog when count == batch_size. It explicitly states this is 'the recommended sync pattern' versus a persistent connection. However, it doesn't name specific sibling alternatives or state when NOT to use this tool, stopping just short of the explicit when/when-not standard.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, but there is notable overlap among threat-fetching methods: get_new_threats, poll_since, and drain_subscription all retrieve new threats via different mechanisms, and several stats tools (get_stats, freshness_limits, prompt_cache_stats) serve similar informational roles. Overall, descriptions help disambiguate, but a few tools could be confused.

Naming Consistency3/5

The naming is predominantly snake_case, but mixes verb_noun (check_freshness, submit_ioc), noun phrases (family_threats, freshness_limits), and even a question (is_ioc_revoked). 'unsubscribe' breaks the pattern of other subscription tools (subscribe_threats, drain_subscription). This inconsistency is noticeable though still readable.

Tool Count3/5

30 tools is on the heavy side for a single MCP server, exceeding the typical 15-tool comfort zone. However, the server covers a broad domain—IOC submission, retrieval, subscriptions, freshness tracking, prompt/skill scanning, and registry monitoring—so the large number is somewhat justified by the scope.

Completeness4/5

The tool surface covers the full threat intelligence lifecycle: submit (submit_ioc, submit_batch), query (lookup_ioc, search_by_type, recent_threats, family_threats), subscribe (subscribe_threats, drain_subscription), update (report_detection, vote_false_positive), and revoke (revoke_ioc). Minor gaps exist, such as the absence of a direct delete or update signature tool and no get-by-signature-id endpoint, but these are manageable for agents.