Skip to main content
Glama

isMalicious threat intelligence for AI agents

Check indicators in bulk

check_indicators
Read-onlyIdempotent

Reputation of up to 100 indicators in one call, for triaging a list rather than one alert: IPs, domains, URLs, file hashes (MD5, SHA-1 or SHA-256), email addresses and phone numbers, mixed freely; defanged input is accepted. Each row: malicious, recommendedAction (block, escalate, review, monitor, allow, unverified; unverified means nothing is known either way, and an email address or phone number is never allow), risk 0-100 with level, the number of threat blocklists citing it, categories, lookupStatus, and infrastructure (cloud, cdn, tor-exit…) when the entity is known as such. A row with pending (e.g. ["circl"] for a hash whose lookup outlasted the API's deadline) is not settled: re-check it once, after a few seconds. A URL row is judged on its host. BILLING: every unique indicator the API receives charges one request of the monthly quota — unique after trimming and lowercasing, and including rows the API cannot type, which come back with an error. Exact duplicates are free; entries under 3 characters, SHA-512, TLSH and ssdeep, and input that is none of the six kinds (an address or a number in a shape the API cannot read, a number written with letters, a host that is not a dotted domain name) are refused here with a per-row error, never sent and never charged. Plans cap the batch below the tool ceiling (Free 10, Basic 50, Pro 100); over the cap the API refuses the whole batch. Use check_indicator for the full picture of one indicator.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countryNoISO 3166-1 alpha-2 country applied to every phone number written in national format (06 12 34 56 78 with FR). Numbers written with + or 00 ignore it.
enrichmentNo"standard" (default) adds the risk score; "basic" is the verdict and blocklist count only and answers faster; "full" adds nothing visible in this projection.
indicatorsYesThe indicators to check, at most 100. Each unique one sent costs one request.

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?

Far exceeds the annotations (readOnlyHint/openWorldHint/idempotentHint): it discloses the billing model (one quota request per unique indicator, dedup after trimming and lowercasing), what is refused and never charged, the plan caps that can reject the whole batch, and the semantics of the 'pending' row state. This is exactly the context annotations cannot carry.

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?

Dense but front-loaded: purpose first, then row fields, then billing and refusal rules, then the alternative tool. The single long paragraph is information-rich with little repetition, though the billing/refusal sentences could be split for faster scanning.

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 and does so: it enumerates the returned row fields (malicious, recommendedAction values, risk/level, blocklist count, categories, lookupStatus, infrastructure) and explains the host-based judgement for URLs. Nothing needed to call or interpret the tool is missing.

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 already 100%, so the baseline is 3, but the description adds real meaning to the `indicators` parameter: duplicates are free, sub-3-character and SHA-512/TLSH/ssdeep inputs are rejected per-row, and defanged input is accepted. It adds nothing extra about `country` or `enrichment` beyond the schema text.

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?

Opens with a specific verb+resource+scope ('Reputation of up to 100 indicators in one call') and immediately names the sibling it is not for ('triaging a list rather than one alert'). The enumerated indicator types make the resource concrete and distinguishable from check_indicator and search_indicators.

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?

Explicitly routes between bulk and single use ('for triaging a list rather than one alert', 'Use check_indicator for the full picture of one indicator'), and gives conditional guidance for pending rows ('re-check it once, after a few seconds'). It also states the plan-based cap conditions under which the call fails.

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.