Skip to main content
Glama

Jeevesus — DugganUSA threat-intel MCP

Correlate an indicator: do we hold it, and what is next to it

correlate
Read-onlyIdempotent

Answers two different questions about an IP address or domain, and keeps them apart: do we HOLD it, and what sits NEXT to it.

held is an exact yes or no, with held_in naming the lane that answered (iocs, the published blocklist lane, or the graph). neighbors is set membership in our indicator graph: the same /24 for an IPv4 address, the same registrable domain for a domain, with a real count (or "200+" with truncated:true when the scan hit its bound). neighbor_summary says what those neighbors are: how many are attributed to which actor or malware family, from how many lanes. A range we carry that covers the address, with no exact record, is reported as block_coverage, never as a detection.

strength is a single word for a hurried reader: none, adjacent-only, single-lane, multi-lane or corroborated. Read caveats before trusting it: a shared hosting platform or cloud range makes neighbors co-tenants, not related infrastructure, and the response says so when it applies.

Use it after enrich-ioc, or first, when the question is "is this part of something": a scanner next to a known C2, a lookalike domain on a campaign's registrar, a clean address in a dirty /24. Keyed Pro and Enterprise callers also get the neighbor rows themselves (neighbors.sample) to pivot on with enrich-ioc; free and anonymous callers get the counts and the summary.

Not consulted: our own edge observations (blocks, honeypot hits). Read-only. Hashes and URLs are not graph nodes; use enrich-ioc for those.

Input Schema

NameRequiredDescriptionDefault
limitNoMax neighbor rows returned to Pro and Enterprise callers. Default 10. Counts and the summary do not depend on it.
indicatorYesAn IPv4 address or a domain.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations it discloses a great deal: `held` vs `held_in` lane attribution, co-tenant false-positive risk from shared hosting/cloud ranges surfaced via `caveats`, truncation signaling with `truncated:true` at the scan bound, `block_coverage` being reported separately from a detection, and tier-based response differences for Pro/Enterprise versus free/anonymous callers. It also states what is explicitly not consulted (edge observations, honeypot hits).

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

Conciseness4/5

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

It is front-loaded with the two-question framing and organized into tight paragraphs covering returns, strength, usage, and exclusions. The field-name-heavy prose is dense but every paragraph carries information an agent needs; there is little filler, though the length is at the upper end for a two-parameter tool.

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

Completeness5/5

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

There is no output schema, so the description carries the full burden of explaining return values, and it does so field by field (held, held_in, neighbors, neighbor_summary, block_coverage, strength, caveats, neighbors.sample). Combined with the usage and exclusion guidance, an agent can call this correctly and interpret the result without further context.

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

Parameters4/5

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

Schema coverage is 100%, so both parameters are already documented, including the `limit` note that counts and summary do not depend on it. The description reinforces the accepted indicator types (IPv4 or domain) and explains why `limit` only affects Pro/Enterprise sample rows, adding modest but real meaning on top of the schema.

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 precise framing of the two questions it answers ('do we HOLD it, and what sits NEXT to it') and names the concrete resources involved: IPv4 addresses and domains. It clearly separates itself from `enrich-ioc` by defining correlation as graph/lane membership rather than enrichment.

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

Usage Guidelines5/5

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

It gives explicit when-to-use conditions ('after `enrich-ioc`, or first, when the question is "is this part of something"') with concrete motivating examples (scanner next to known C2, lookalike domain, clean address in dirty /24). It also states the exclusions outright: hashes and URLs are not graph nodes, use `enrich-ioc` for those.

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.

Resources