Skip to main content
Glama

TunnelMind Data API

verify_agent

Reconciles a claimed bot User-Agent against the operator's OWN published IP-range feed (Googlebot, GPTBot, OAI-SearchBot, ChatGPT-User, PerplexityBot, Perplexity-User, Bingbot). A User-Agent is trivial to forge; membership in the operator's published CIDR ranges is not. This exposes the common attack: a scraper sending User-Agent: Googlebot from an IP in none of Google's ranges.

Use this tool when:

  • A request claims to be a search/AI crawler and you must decide whether to trust that claim before serving, allowing, or logging it.

  • You are separating genuine declared agents from impersonators.

Inputs:

  • ip (path, required): the IPv4 or IPv6 address to check.

  • ua (query, optional): the claimed User-Agent string. Omit to ask only "is this IP a known published bot range?".

Returns:

  • verdict: one of

    • verified — the IP is inside the agent's published range (UA, if given, agrees). It genuinely is that bot.

    • spoofed — the UA claims a verifiable bot but the IP is in none of its published ranges. Impersonation.

    • mismatch — the IP is a real bot's range, but the UA names a different bot.

    • unverifiable — the UA names a real agent whose operator publishes no authoritative IP feed (e.g. Anthropic's ClaudeBot). Neither confirmed nor denied — never reported as spoofed.

    • unknown — no recognized bot UA and the IP is in no known range.

  • is_verified_agent, is_spoofed: booleans for the two actionable cases.

  • agent, agent_label, matched_agent, claimed_agent: the resolved identities.

  • reason: one-line explanation of the verdict.

  • feeds_as_of_ms: when the published ranges were last refreshed.

Cost:

  • Counts as one request against the daily rate limit.

Latency:

  • Typical: <50ms (one KV read + CIDR match). First call after a deploy may take ~1s if it has to warm the range cache.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ipYes
uaNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It explains the fundamental security rationale (UA forgery vs. IP range membership), details all verdict outcomes including edge cases (e.g., 'unverifiable' never reported as spoofed), and discloses operational behaviors such as rate-limit counting and cache-warming latency. This is exceptionally transparent.

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 long but well-structured with clear sections: purpose, use cases, inputs, returns, cost, and latency. The first sentence immediately delivers the core function. Every section provides necessary operational detail without fluff. The structure makes the length appropriate for the tool's complexity.

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?

Given there is no output schema, the description thoroughly explains all possible return fields and verdict values. It also covers cost and latency, which are essential for an agent deciding whether to invoke the tool. The information is complete enough for an agent to fully understand the tool's behavior and results.

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?

Although the input schema has 0% description coverage (only type and required flags), the description compensates fully by explaining each parameter's purpose, location (path/query), requiredness, and optional behavior. For `ua`, it even describes what happens when omitted. This adds substantial meaning beyond the bare 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 specific verb+resource: 'Reconciles a claimed bot User-Agent against the operator's OWN published IP-range feed.' It clearly identifies the tool's function of verifying bot claims against IP ranges and lists the exact bots covered. This distinguishes it from sibling tools like verify_agent_signature (which likely verifies signatures, not IP ranges).

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 provides an explicit 'Use this tool when' section with two concrete scenarios: deciding whether to trust a bot claim before serving/allowing/logging, and separating genuine agents from impersonators. This is clear usage context, but it does not mention alternative tools or explicitly state when not to use it, so it falls just short of a 5.

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

B3.3/5.0
Disambiguation2/5

Many tools overlap in purpose, such as cross_lens_verify, cross_lens_lookup, profile_entity, and preflight_should_i_act, which all return node verdicts with subtle differences. Sigil verification tools and receipt-related tools also have similar names and require deep reading to distinguish.

Naming Consistency3/5

The tool names are mostly readable, but the pattern is mixed: some use verb_noun (get_domain, create_subscription) while others use domain prefixes (sigil_*, ghostroute_*, intel_*). Within each domain, naming is consistent, but the overall style lacks uniformity.

Tool Count1/5

With 90 tools, this server is extremely overloaded. Even for a multi-purpose data API, the sheer number overwhelms and makes navigation difficult, far exceeding the typical well-scoped MCP server. The count is an extreme mismatch for the apparent scope.

Completeness4/5

The tool surface is very comprehensive, covering tracker lookup, cross-lens verification, receipts, compliance, subscriptions, tasks, intel probes, and more. Minor gaps exist, such as no batch cross-lens verification, but core workflows are well covered.

Resources