Skip to main content
Glama

TunnelMind Data API

Server Details

Tracker / Sigil / Cross-lens — every TunnelMind Data API operation as one MCP surface.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 51 of 54 tools scored. Lowest: 2.8/5.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose, with detailed descriptions that prevent confusion. Even similar-sounding tools like cross_lens_lookup, cross_lens_verify, preflight_should_i_act, and profile_entity are differentiated by their specific behaviors and outputs. The intel_*, sigil_*, and signal_* prefixes also group related but distinct tools.

Naming Consistency5/5

Tool names consistently use snake_case and follow a predictable pattern, such as verb_noun (e.g., cancel_task, generate_receipt, verify_receipt) or domain_prefix_verb_noun (e.g., intel_http, sigil_verify_ads_txt). There is no mixing of conventions like camelCase.

Tool Count3/5

At 54 tools, the count is high but arguably justified by the broad scope covering multiple lenses (Scry, Sigil, Tracker, ATAP) and various utilities. However, it pushes the boundary of what an agent can easily navigate, making it borderline excessive for a typical MCP server.

Completeness5/5

The tool set covers the domain thoroughly, including CRUD-like operations for domains and entities, multiple intel probes, supply-chain verification, cross-lens analysis, ATAP attestation, receipts, task management, and audit. No obvious gaps are present for the stated purpose of a data API for ad-tech intelligence.

Available Tools

66 tools
audit_exportAInspect

Returns NDJSON (one JSON object per line) of audit log entries. Each entry records the operation called, the identity, hashes of the request and response, duration, and an Ed25519 signature over the canonical entry JSON. Entries are hash-chained: each entry's prev_entry_hash is SHA-256 of the previous entry's signature, making deletion of any entry detectable offline.

Authenticated callers receive only their own entries (identity_sub match). Admin key holders receive all entries.

Use this tool when:

  • You want a tamper-evident record of your own API calls.

  • You are auditing a sequence of requests for compliance or debugging.

  • You want to verify the audit chain integrity offline.

Do NOT use this tool when:

  • You are anonymous — authentication is required.

  • You want task status — use get_task instead.

Inputs:

  • from (query, optional): ISO 8601 start datetime. Default: 7 days ago.

  • to (query, optional): ISO 8601 end datetime. Default: now.

  • limit (query, optional): Max entries. 1–5000, default 1000.

Returns:

  • NDJSON stream, one AuditEntry per line.

  • X-Total-Count response header with entry count.

  • X-Took-Ms response header.

Verify the chain offline:

  • For each consecutive pair (A, B): SHA-256(A.signature) == B.prev_entry_hash.

  • For each entry: verify Ed25519 signature against public key in /.well-known/atap.json.

Cost:

  • Counts as one request against the daily limit.

Latency:

  • Typical: <300ms for 1000 entries, p99: <1s.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
limitNo
Behavior5/5

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

Details authentication-based filtering, hash-chaining for tamper detection, offline verification procedure, cost (one request), and latency. No annotations provided, so description fully compensates.

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?

Well-structured with sections and bullet points, but slightly verbose. Could be trimmed without losing clarity.

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?

Covers purpose, behavior, parameters, return format (NDJSON, headers), and verification method. No output schema exists, but description provides sufficient context.

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?

Explanation for all three parameters (from, to, limit) with defaults, ranges, and format. Schema has 0% coverage, so description adds full meaning.

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?

Clearly states it returns NDJSON of audit log entries, describing the structure (operation, identity, hashes, signature, hash-chain). Distinguishes from sibling 'get_task' for status.

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 lists when to use (tamper-evident recording, auditing, verification) and when not (anonymous, need status - use get_task).

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

cancel_taskAInspect

Marks the task as cancelled. If the task is already in a terminal state (complete, failed, expired), returns 409 Conflict. Only the identity that created the task may cancel it.

Use this tool when:

  • You submitted a probe with ?async=true and no longer need the result.

  • You want to free up a pending task before it expires.

Do NOT use this tool when:

  • The task is already complete — cancellation is not possible.

Inputs:

  • task_id (path, required): 26-char ULID.

Returns:

  • task_id and status: cancelled.

Cost:

  • Free.

Latency:

  • Typical: <150ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses error conditions (409 for terminal state), identity restriction, cost (free), and latency (<150ms). However, does not explicitly state if cancellation is reversible, though implied by terminal state concept.

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?

Well-organized with clear sections: purpose, usage guidelines, inputs, returns, cost, latency. Every sentence provides value; no unnecessary words.

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 the simplicity (one parameter, no output schema), the description covers all essential aspects: behavior, constraints, error handling, cost, and performance. Complete for an agent to use correctly.

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?

While schema provides pattern for task_id, description adds that it's a path parameter and a 26-char ULID. With 0% schema description coverage, this adds significant meaning beyond the schema alone.

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 clearly states the tool marks a task as 'cancelled' and specifies conditions (terminal state conflict). It distinguishes itself from sibling tools like get_task and stream_task by focusing on the cancellation action.

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 provides when to use (async probe no longer needed, free pending task) and when not to use (task already complete). Also mentions identity constraint (only creator can cancel).

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

check_receipt_revokedAInspect

Single-item revocation lookup per Receipt Format v1.0 §8.2. Verifiers that do not want to maintain a local mirror of /.well-known/receipt-revocations.json call this endpoint instead. The response includes feed_version for cache coherence.

Use this tool when:

  • You are verifying a receipt and need to confirm its signature.key_id is still trusted.

  • You are verifying a receipt and need to confirm the specific receipt_id was not retracted by its issuer.

  • You hold receipts long-term and want to recheck trust before acting on them.

Do NOT use this tool when:

  • You want the full revocation set — fetch /.well-known/receipt-revocations.json directly.

  • You want to publish a revocation — that is operator-controlled and not exposed via this API.

Inputs:

  • key_id (query, optional): Receipt-format key_id (e.g., tm-receipt-2026-05). Provide one of key_id or id.

  • id (query, optional): UUIDv7 of a specific receipt. Provide one of key_id or id.

Returns:

  • revoked: boolean.

  • When revoked: revoked_at (ISO 8601), reason (human-readable), replacement_key_id (for keys).

  • Always: checked_at (ISO 8601), feed_version (integer).

Cost:

  • Free; rate-limited like the rest of the data API. Edge-cached 60s.

Latency:

  • Typical <100ms (warm cache); p99 <500ms (cold fetch from well-known).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoUUIDv7 of a specific receipt to check.
key_idNoReceipt-format signing key_id to check.
Behavior5/5

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

With no annotations, description discloses rate limits, caching (60s edge-cached), latency expectations (<100ms typical), and response fields (revoked, revoked_at, reason, etc.). No contradictions.

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?

Well-structured with sections (first sentence summary, bullet points for use cases, inputs, returns, cost, latency). Each sentence provides value with no redundancy.

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?

Despite no output schema or annotations, description fully explains return values, constraints, and performance. Covers all aspects needed for single-item lookup tool.

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% with descriptions and examples. Description adds value by stating the mutual exclusivity requirement ('Provide one of key_id or id'), which is not in 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?

Description clearly states 'Single-item revocation lookup per Receipt Format v1.0 §8.2', specifying the exact resource and action. Distinguishes from sibling tools like verify_receipt and get_receipt by focusing on revocation status.

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?

Includes explicit 'Use this tool when' and 'Do NOT use this tool when' sections, providing clear contexts (e.g., verifying a receipt, rechecking trust) and alternatives (fetch full set directly, operator-controlled API).

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

compliance_configureAInspect

Set the customizable knob: which regulatory regime your auditor maps to, how long to retain decision content, and which export formats to offer. Body: { enabled?, regime?, retention_days?, export_formats? }. retention_days is 1..3650; regime is one of the catalog ids; export_formats is a non-empty subset of [signed_json, csv, eat, stix]. No bespoke engineering — you pick, the ledger adapts.

ParametersJSON Schema
NameRequiredDescriptionDefault
regimeNo
enabledNo
export_formatsNo
retention_daysNo
Behavior3/5

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

With no annotations, the description bears full burden. It discloses constraints (retention_days range, regime from catalog, export_formats subset) and states 'No bespoke engineering — you pick, the ledger adapts', indicating a safe mutation. However, it does not detail authorization requirements, rate limits, or what exactly changes on the ledger.

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 extremely concise at three sentences, immediately stating the purpose and then listing the body fields with their constraints. Every sentence adds value with no redundancy.

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 the complexity (4 optional parameters, no output schema), the description adequately explains the configuration effect. It lacks return value description but hints at ledger adaptation. It covers constraints that schema enums lack, but could mention what happens on success or error.

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 description coverage is 0%, so the description must compensate. It adds meaningful constraints: retention_days range (1..3650), regime is from catalog IDs, export_formats is non-empty subset of explicit list. 'enabled' is only mentioned as optional with no further detail, slightly reducing completeness.

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 clearly states the tool 'set's customizable knobs' for compliance configuration, specifying the three configurable aspects: regulatory regime, retention days, and export formats. It distinguishes from sibling compliance tools (export, ledger, verify) by focusing on configuration rather than data retrieval or verification.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description does not mention prerequisites, use cases, or situations where sibling tools like compliance_export or compliance_verify would be preferred. The body format is given but no contextual cues for selection.

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

compliance_exportAInspect

Generates a signed export bundle of your ledger over an optional time window, mapped to your regime's field names and citation, with a manifest

  • chain-integrity proof + the latest signed checkpoint. Choose the format with ?format= (signed_json | csv | eat | stix; defaults to your profile's first) and override the regime with ?regime=. The response is a downloadable artifact your auditor can verify independently against the spec.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO8601 upper bound.
fromNoISO8601 lower bound.
formatNosigned_json | csv | eat | stix.
regimeNoOverride the profile regime for this export.
Behavior4/5

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

With no annotations, the description explains output nature (downloadable, verifiable) and non-destructive behavior, but does not detail side effects or limitations.

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?

Two sentences, front-loaded purpose, no wasted words.

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?

Covers purpose, parameters, output nature, and use for verification, but lacks mention of sync/async behavior or error cases.

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?

Adds default behavior for format and regime override beyond schema, which only provides types and descriptions.

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

Purpose4/5

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

The description clearly states it generates a signed export bundle with specific components, but does not differentiate from sibling 'audit_export' or other compliance tools.

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

Usage Guidelines3/5

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

Provides parameter guidance (format defaults, regime override) but lacks explicit when-to-use vs alternatives or prerequisites.

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

compliance_ledgerAInspect

Returns your hash-chained decision records — one per verdict-bearing call (/v1/verify, /v1/explain, /v1/preflight, /v1/profile) made while compliance is enabled. Each entry carries its node, verdict, scores, receipt_id, the full decision record, and the chain hashes (prev_hash, entry_hash). Filter with from/to (ISO8601) and page with cursor (a seq) + limit (≤1000).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO8601 upper bound (inclusive).
fromNoISO8601 lower bound (inclusive).
limitNoPage size, max 1000.
cursorNoResume after this seq.
Behavior4/5

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

No annotations provided, so description fully describes the read-only, log-retrieval behavior. It includes return fields and chain hashes, but does not mention auth requirements or what happens if compliance is disabled.

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?

Single, well-structured sentence front-loads the core purpose, then efficiently details return fields and filter parameters. No redundancy.

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 no output schema, description details return fields adequately. Mentions pagination limits. Lacks explanation of behavior when compliance is off or error scenarios.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions. The description reiterates the same filtering and pagination info, adding no new meaning beyond 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 clearly states the tool returns hash-chained decision records for specific verdict-bearing calls, distinguishing it from sibling tools like audit_export or compliance_export.

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 explains filtering (from/to ISO8601) and pagination (cursor + limit), but does not explicitly compare to alternatives or state when not to use.

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

compliance_profileAInspect

Returns your current compliance configuration (regime, retention_days, export_formats, enabled) and the catalog of supported regimes (EU AI Act Art.12, DORA, NYDFS 500, HIPAA, PCI DSS, SOC 2, generic) and export formats (signed_json, csv, eat, stix). Authenticated. The compliance ledger is a tamper-evident, retained record of every verdict you make — configure it once, then it self-maintains.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

With no annotations, the description must carry full behavioral disclosure. It mentions authentication and the tamper-evident nature of the ledger, but omits details like rate limits, idempotency, or whether results are cached. The safe read-only nature is implied but not stated.

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 three sentences, each serving a clear purpose: stating the core function, listing supported values, and adding context about the ledger. No fluff, perfectly concise.

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?

For a parameterless read tool with no output schema, the description fully covers what the agent needs: it specifies the returned configuration fields, the catalog of regimes and formats, and the authentication requirement. Nothing essential 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?

No parameters exist, so the description adds value by detailing what is returned: configuration fields (regime, retention_days, export_formats, enabled) and the catalog of regimes and export formats. This meets the baseline of 4 for 0-parameter tools.

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 clearly states it 'Returns your current compliance configuration' and the catalog of supported regimes and formats. This distinguishes it from sibling tools like compliance_configure (write) and compliance_export (export), making its read-only purpose unambiguous.

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 implies usage for viewing current configuration and available regimes/formats. It notes authentication is required and provides context about the ledger, but does not explicitly state when not to use or name alternatives, though sibling names make it clear.

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

compliance_verifyAInspect

Recomputes your entire hash chain server-side and reports integrity ({ intact, entry_count, chain_head_hash } — plus reason + first_break_seq if a record was altered or deleted), alongside the most recent Ed25519 checkpoint signed with the TunnelMind receipt key. This is the auditor's "prove it" button — and even TunnelMind cannot rewrite history before a signed checkpoint without detection.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

No annotations are provided, so the description carries full responsibility. It discloses that the tool recomputes server-side, reports integrity status with detailed fields, and mentions signed checkpoints and immutability guarantees, providing strong behavioral transparency.

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?

The description is informative but slightly verbose with parenthetical details and a second sentence. It front-loads the main action and is generally well-structured, though could be more concise.

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 no parameters and no output schema, the description fully explains the return values and the tool's behavior. It covers integrity fields, checkpoint signing, and immutability claims, making it complete for an auditor's verification tool.

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?

The tool has zero parameters and 100% schema coverage. The description does not need to add parameter details, and it correctly explains the return fields. Baseline of 4 is appropriate for zero-parameter tools.

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 clearly states the tool recomputes the entire hash chain and reports integrity, with specific return fields. It distinguishes itself from sibling compliance tools by focusing on verification rather than configuration or export.

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 positions the tool as the 'auditor's prove it button', implying use for integrity verification. However, it does not explicitly state when not to use it or contrast with alternatives like compliance_export.

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

cross_lens_lookupAInspect

Returns all three lens views for a single node key without computing a fused verdict. Use this when you want raw transparency — the Tracker catalog presence, Scry attacker observations, and Sigil supply-graph position — and intend to make your own decision. For an opinionated verdict, call cross_lens_verify instead. For an agent-side allow/caution/deny gate plus signed consultation receipt, call preflight_should_i_act.

Coverage block exposes which lenses responded so agents can reason about partial-data verdicts. issued_by carries the OAI of the answering witness so the response is attributable.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYesIPv4/IPv6 address, domain, ASN with optional `AS` prefix, or entity_slug. Type is auto-detected.
Behavior3/5

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

No annotations provided, so description carries full burden. It describes response features (coverage block, issued_by) but does not disclose behavioral traits like mutability, error conditions, rate limits, or whether external calls are made. While it adds some transparency, it lacks comprehensive behavioral disclosure.

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?

The description is structured with the core function first, then usage context, then response details. It is clear and efficient, though slightly verbose. Every sentence adds value, and it is front-loaded.

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?

For a low-complexity tool (1 parameter, 100% coverage, no output schema), the description adequately explains what the tool returns (three lens views, coverage, issued_by) and its purpose. It provides enough context for an agent to decide when to use it, though without output schema, some return details are assumed.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema's parameter description for the 'node' parameter. It mentions the single node key implicitly but provides no extra formatting or constraints.

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 clearly states it returns all three lens views (Tracker, Scry, Sigil) for a single node key without computing a fused verdict. It uses specific verbs and resources, and distinguishes itself from siblings like cross_lens_verify and preflight_should_i_act.

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 says when to use: when you want raw transparency and intend to make your own decision. It also names alternatives: cross_lens_verify for opinionated verdict, preflight_should_i_act for an allow/caution/deny gate. This provides clear when/when-not guidance.

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

cross_lens_verifyAInspect

A2 — the cross-lens join. TunnelMind owns multiple halves of the open-web graph: Scry sees who is on every IP (attacker intelligence, actor class, Augur threat-intel overlap); Sigil sees the supply graph (publishers, SSPs, DSPs, ads.txt + sellers.json + SupplyChain Object); GhostRoute sees routing integrity & sovereignty (RPKI origin validity, BGP prefix, claimed sovereign zone, sanctions, AI-infrastructure ownership, certificate CA). This endpoint fuses them into one verdict on a single node key.

The response contains four blocks:

  • scry — the single-lens Scry view (transparency).

  • sigil — the single-lens Sigil view (transparency).

  • ghostroute — the single-lens GhostRoute view (transparency).

  • cross_lens — the fused verdict (the moat).

Fusion math: weighted-mean over evaluated components plus a co_observation_bonus when both lenses independently flag the node. GhostRoute adds a routing-integrity component with two hard safety floors that cannot be averaged away: an RPKI-INVALID origin (a BGP hijack signal) caps its trust at 0.15, and a sanctions match zeroes it. Weights and thresholds are per-request overridable.

Lens unavailability is reported in-band: each lens fails independently and the cross_lens block reflects degraded confidence when fewer lenses have data (0.55 one lens / 0.80 two / 0.94 three). GhostRoute has no routing surface for a bare entity_slug, so it drops out and the remaining weights re-normalise. Returns 503 only when ALL lenses are unavailable.

v1 lens coverage matrix:

  • IP node — Scry: full; Sigil: not_indexed (v2 will reverse-DNS); GhostRoute: full.

  • Domain node — Scry: deferred; Sigil: full (publisher/ssp/dsp + entity); GhostRoute: full (resolves to IP).

  • entity_slug node — Scry: n/a; Sigil: full (entity + sell/buy presence); GhostRoute: n/a (no routing surface).

  • ASN node — Scry: deferred (v2); Sigil: not_indexed; GhostRoute: origin-AS lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
aitNoOptional ATAP AIT id (`AIT-<uuidv7>`). When present, the verdict is wrapped in a witness-tier `cross_lens:verified` event chained onto the AIT and signed by Sigil (witness OAI-2026-0000201). Independent of the AIT, a short-lived signed `sigil_token` is always issued on a successful verify, and a durable TunnelMind `receipt` (v1.0) commits to the verdict for long-term audit.
nodeYesThe node to verify. Type is auto-detected: IPv4/IPv6 address, domain, ASN with optional `AS` prefix, or entity_slug.
weightsNoPer-component weight overrides
thresholdsNo{ pass, fail } verdict cutoffs (defaults 0.7 / 0.3)
Behavior5/5

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

No annotations are provided, so the description carries full burden. It thoroughly explains fusion math, co-observation bonus, GhostRoute hard safety floors, lens unavailability handling, and the 503 fallback. This is comprehensive and leaves minimal behavioral ambiguity.

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?

The description is long but front-loaded with the main purpose. It is structured with blocks and a coverage matrix. Every sentence adds value, though some verbosity could be trimmed. It remains efficient in conveying a complex 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?

Given the tool's complexity (4 params, nested objects, no output schema), the description is remarkably complete. It explains the response structure, fusion logic, lens unavailability, and edge cases (e.g., GhostRoute dropping out). An AI agent has sufficient information to use this tool correctly.

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%, but the description adds value beyond schema by explaining the AIT optionality and signed token behavior, and how weights/thresholds are used. The schema descriptions for parameters are already detailed, so the description enhances understanding without redundancy.

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 clearly states the tool's purpose: fusing multiple lenses (Scry, Sigil, GhostRoute) into a single verdict for a given node. It uses specific verbs and resources, and distinguishes from siblings like cross_lens_lookup by explaining it produces a fused verdict.

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 clear context on when to use this tool via the lens coverage matrix and mentions that GhostRoute has no routing surface for bare entity_slug, but it does not explicitly state when-not-to-use or name alternatives. It implies usage based on node type and lens availability.

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

explain_verdictAInspect

Call this when you need to ACT ON a verdict and prove why. It returns the exact verdict /v1/verify/{node} computes (same fusion, same weights) PLUS a traced evidence chain: every claim is attributed to where it came from — the attested sensor fleet (with attestation tier), a named Augur threat feed, sellers.json/ads.txt supply-graph presence, the cross-lens co-observation join, the DDG/IAB tracker corpus — and how much each item moved the verdict (weight; null = supplementary, not scored).

The response is committed to by a P38 signed receipt via evidence_digest (a hash of the exact evidence array), so an agent can act on the verdict and leave behind a cryptographically verifiable trail of the reasoning in the same request. Empty/none evidence is the honest "no corpus presence", never a fabricated reason.

node is an IPv4/IPv6, ASN, domain, or entity_slug — the same key space as /v1/verify.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYesIPv4/IPv6, ASN (AS####), domain, or entity_slug.
Behavior4/5

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

Despite no annotations, the description thoroughly discloses behavior: it returns the same verdict as /v1/verify, includes a traced evidence chain with attributions, weights, and a P38 signed receipt via evidence_digest. It also clarifies that null weight means supplementary. Missing details like authentication requirements or rate limits, but the transparency is high for a tool without annotations.

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?

The description is well-structured and front-loaded with an imperative statement. It contains several details but every sentence adds value. Slightly long, but not overly verbose. Could be tightened, but remains effective.

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 the tool's complexity (evidence chain, cryptographic receipt) and the absence of output schema, the description is fairly complete. It explains the nature of evidence, null weights, and the key space. Minor omissions (e.g., how pagination works for large evidence) but sufficient for most use cases.

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?

The input schema has one parameter (node) with concise description. The description adds significant context, explaining that node can be IPv4/IPv6, ASN, domain, or entity_slug and that it uses the same key space as /v1/verify. This goes beyond the schema's description, providing clear semantics.

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 clearly states the tool's purpose: to return a verdict with a traced evidence chain for acting on it. It uses specific verbs ('ACT ON', 'returns') and identifies the resource (verdict). It distinguishes from sibling tools like verify_receipt or cross_lens_verify by emphasizing the evidence chain and cryptographically verifiable receipt.

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 opens with 'Call this when you need to ACT ON a verdict and prove why,' providing clear usage context. It implies when to use but does not explicitly state when not to use or list alternatives. However, the context is sufficient for an agent to differentiate from verification-only tools.

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

generate_receiptAInspect

Looks up each submitted domain in the TunnelMind tracker database, aggregates risk metrics (avg score, max score, fingerprinters, high-risk domains, entity ownership), and issues a signed surveillance receipt. The receipt is stored in the public registry and can be verified at /verify/{receipt_id}.

Use this tool when:

  • You want a verifiable record of which trackers were observed in a context (page, app, session).

  • You need a signed evidence artifact for a privacy audit or compliance report.

  • You want to know the overall surveillance exposure level for a set of domains.

  • You are generating a receipt to share with a user as evidence of tracker presence.

Do NOT use this tool when:

  • You want full tracker details per domain — use get_domain instead.

  • You want to look up an existing receipt — use get_receipt instead.

  • You need live probes (HTTP headers, stack detection) — use /v1/intel/* instead.

Inputs:

  • domains (body, required): Array of 1–50 fully qualified domain names. Duplicates are deduplicated. URLs are stripped to host component.

  • domain (body, alternative): Single domain string (shorthand for domains: [domain]).

Returns:

  • receipt_id: Unique receipt ID (e.g. rcpt_01JXYZ...).

  • receipt: Full receipt document including domains submitted, tracker findings, high-risk domains, fingerprinters, unique entities, and exposure metrics.

  • content_hash: SHA-256 of the canonical receipt JSON.

  • signature: Base64 Ed25519 signature (empty string if signing key not configured).

  • signed: Boolean — true if the receipt is cryptographically signed.

  • verify_url: Path to retrieve this receipt from the public registry.

Exposure levels: minimal / moderate / high / critical Based on average tracker score and proportion of high-risk domains (score ≥ 70).

Cost:

  • Counts as one request against the daily limit regardless of domain count.

Latency:

  • Typical: <100ms (pure D1 lookup, no outbound probing). p99: <300ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoSingle domain shorthand (alternative to `domains`)
domainsNoDomain names to look up (1–50)
Behavior5/5

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

No annotations provided, but the description fully discloses behavior: deduplication, URL stripping, return fields, exposure levels, cost (one request per call), and latency. No contradictions.

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?

Well-structured with clear sections (purpose, usage, inputs, returns, exposure, cost, latency). Every sentence adds value; no redundancy.

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?

Despite lacking an output schema, the description thoroughly documents return fields, exposure metrics, and operational details (cost, latency), fully equipping the agent for correct invocation.

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 coverage is 100% for both parameters. Description adds further context: deduplication, URL stripping, and the alternative domain shorthand, enriching understanding beyond 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 clearly states it looks up domains, aggregates risk metrics, and issues a signed surveillance receipt, distinguishing it from siblings like get_domain and get_receipt.

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?

Explicit 'Use this tool when' and 'Do NOT use this tool when' sections with specific alternatives (get_domain, get_receipt, /v1/intel/*) provide clear guidance.

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

get_analyst_configAInspect

Returns the TunnelMind analyst config bundle. Configures any LLM (Claude, GPT, Gemini, local) to behave as a TunnelMind analyst that knows the data graph, follows the 5-call golden path, and surfaces attestation_tier on every claim.

The bundle is signed inline (Ed25519, key_id from /.well-known/receipt-signing-key.json). Add ?receipt=true to wrap the response in a Receipt v1.0 envelope for end-to-end audit.

Use this tool when:

  • You want to configure a new LLM runtime to act as a TunnelMind analyst

  • You want to verify the system prompt you're running matches what TunnelMind serves

  • You're building a BYOM (bring-your-own-model) deployment and need the canonical config

Do NOT use this tool when:

  • You want to call individual TunnelMind data tools — use the tools directly

  • You want to verify a specific receipt — use check_receipt_revoked or @tunnelmindai/receipt-verify

Inputs (all optional):

  • surface (query): "data" (default, full surface), "scry", or "sigil"

  • version (query): pin a specific bundle version (e.g. "1.0.0" or "1" for latest 1.x.y)

  • receipt (query): "true" to wrap the response in a signed Receipt v1.0 envelope

Content negotiation (via Accept header):

  • application/json (default) — full bundle JSON

  • text/markdown — system prompt only (Anthropic flavor)

  • application/vnd.anthropic.config+json — Anthropic-shaped subset

  • application/vnd.openai.config+json — OpenAI-shaped subset

Returns:

  • version, schema, issuer, surface, surface_label

  • system_prompts.{anthropic,openai,generic} — three encodings of the same semantic prompt

  • tools.surface_subset — array of operationIds for this surface (null = all)

  • response_format — JSON Schema the analyst's verdicts must conform to

  • attestation_tiers — the 4-tier vocabulary (self_asserted → silicon_root)

  • graph_state — live corpus counts at serve time

  • references — URLs to the rest of the open-protocol layer

  • bundle_signature — inline Ed25519 signature for offline verification

  • pin_recommended — stable supply-chain identifier (survives hourly graph_state updates)

Headers: X-Bundle-Version, X-Pin-Recommended, ETag, X-RateLimit-*.

Cost:

  • Free, anonymous-accessible. Rate-limited on a SEPARATE counter from data-API calls (cfg:ip:<ip> identity) so a config refetch loop can't burn your data quota.

Latency:

  • Typical <100ms (cached); cold fetch <500ms (live Supabase counts).

ParametersJSON Schema
NameRequiredDescriptionDefault
receiptNoWhen true, wrap the bundle in a Receipt v1.0 envelope.false
surfaceNodata
versionNoPin a specific bundle version. Omit for latest.
Behavior5/5

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

No annotations are provided, so the description carries full burden. It discloses free anonymous access, separate rate limiting from data API, latency expectations, and the signed nature of the bundle.

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?

The description is thorough but somewhat lengthy; however, every sentence adds meaningful information and the structure is logical (purpose, usage, inputs, outputs). Minor redundancy could be trimmed.

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?

Without an output schema, the description thoroughly documents all return fields, headers, cost, and latency. It covers everything an agent needs to invoke and interpret the tool correctly.

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?

The schema covers the three parameters with enums and defaults. The description adds value by explaining content negotiation via Accept header and detailing the effect of each parameter, though schema coverage is already good.

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 explicitly states 'Returns the TunnelMind analyst config bundle', providing a clear verb+resource. It distinguishes from sibling tools by explaining this is for configuring LLMs, not for data operations or receipt verification.

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?

The description includes explicit 'Use this tool when' and 'Do NOT use this tool when' sections, with specific scenarios and named alternatives like check_receipt_revoked.

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

get_api_keyAInspect

Returns the tier, label, masked owner email, creation date, last-used timestamp, today's request count, and daily request limit for the API key used in this request. Useful for agents that need to monitor their own quota consumption.

Use this tool when:

  • You want to check how many requests your key has used today.

  • You need to know your current tier or daily limit.

  • You want to confirm that your API key is active.

Do NOT use this tool when:

  • You want to manage multiple keys — this endpoint only reflects the calling key.

  • You need tracker data — use the tracker endpoints instead.

Inputs:

  • No body or query parameters. Auth is from the Authorization: Bearer header.

Returns:

  • tier: free, supporter, pro, or enterprise.

  • requests_today: integer count from KV (best-effort; resets at UTC midnight).

  • limit_per_day: null for enterprise (unlimited).

  • last_used: ISO 8601 timestamp, may be null if never used.

Cost:

  • Free. Does not count against the daily request limit.

Latency:

  • Typical: <150ms, p99: <400ms.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

No annotations are provided, so the description carries full burden. It comprehensively discloses behavioral traits: the tool only reflects the calling key, 'requests_today' is best-effort and resets at UTC midnight, 'limit_per_day' is null for enterprise (unlimited), cost is free (does not count against limit), and latency is provided (<150ms typical, p99 <400ms).

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 well-structured with sections for usage guidance, inputs, returns, cost, and latency. Every sentence provides essential information without redundancy. It is concise yet comprehensive.

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 no output schema, the description fully details the return fields (tier, requests_today, limit_per_day, last_used) with types and example values. It covers usage guidelines, behavioral notes, cost, and latency, making it complete for an agent to use correctly.

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?

There are no parameters, so baseline is 4. The description explains that auth is derived from the 'Authorization: Bearer' header, which adds implicit meaning beyond the empty input schema. No further parameter details are needed.

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 clearly states that the tool returns details about the API key used in the request, including tier, label, masked owner email, creation date, last-used timestamp, request count, and daily limit. This specific verb and resource scope distinguishes it from sibling tools like 'revoke_api_key' or 'audit_export'.

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?

The description includes explicit 'Use this tool when' and 'Do NOT use this tool when' sections, providing clear context for appropriate usage and exclusions (e.g., managing multiple keys, needing tracker data). It also suggests alternative tools like tracker endpoints, guiding the agent effectively.

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

get_bgp_eventsAInspect

Returns the routing anomalies the bgp-monitor has observed against TunnelMind's BGP watchlist — the witnessability layer's routing dimension. The monitor polls RIPEstat (RIPE NCC) on a cron, self-baselines each watched prefix's origin set on first sight, then records an event whenever a later poll deviates from that baseline.

Use this to check whether a prefix or ASN you depend on (an SSP's egress, a publisher's network, your own infrastructure) has shown a hijack-shaped routing event. event_type is one of:

  • origin_change — an origin AS not in the baseline is announcing the prefix (severity critical if that announcement also fails RPKI, else high).

  • rpki_invalid — a current announcement fails RPKI ROA validation.

  • withdrawn — a previously-announced prefix is no longer visible.

  • new_more_specific / visibility_drop — reserved for a later monitor pass.

prev_origins is the baseline the event deviated from. count is the full filtered set; events is bounded by limit, newest first. An empty events array means no anomalies in the window — the honest "all clear".

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax events returned (default 100, hard cap 500).
resourceNoFilter to one watched resource — a CIDR prefix (e.g. 45.32.0.0/24) or an ASN (e.g. AS13335). Omit for all.
since_msNoUnix epoch milliseconds lower bound on observed_at.
Behavior4/5

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

Discloses polling mechanism, self-baselining, event types with severities, and empty array meaning all clear. No annotations exist, so description provides adequate behavioral context.

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?

Well-structured with bullet points, front-loaded purpose. Slightly long but each sentence adds value.

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 no output schema, the description explains output fields (event_type, prev_origins, count, events) and filter behaviors. Complete for a query tool.

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?

All parameters have schema descriptions (100% coverage). The description adds semantics: resource filter explanation, limit bounding, and output structure (count vs events).

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 clearly states the tool returns routing anomalies from a BGP monitor against a watchlist. It is specific and distinct from sibling tools like ghostroute_* and audit_export.

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?

Explicitly says to use it to check for hijack-shaped events for prefixes or ASNs. Provides context but does not mention when not to use or list alternatives.

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

get_domainAInspect

Returns the complete surveillance intelligence record for a domain name. If the domain is in TunnelMind's tracker database (80,000+ entries), the response includes tracker category, risk score, fingerprinting data, cookie persistence, IAB TCF purposes, and the owning corporate entity. If the domain is not in the database, a live probe is automatically run: RDAP registration data, DNS records (MX, SPF, TXT verification tokens), HTTP headers, and CSP third-party actors are fetched fresh from the edge and returned.

Use this tool when:

  • You need to know whether a specific domain tracks users, and how aggressively.

  • You are researching who owns a domain and what corporate entity controls it.

  • You want to check HTTP security headers and third-party services embedded in a site.

  • You are building a risk score for a domain before routing traffic through it.

Do NOT use this tool when:

  • You want to search by keyword or category — use search instead.

  • You want all domains for an entity — use get_entity instead.

Inputs:

  • domain (path, required): Domain name. Strip www. prefix — it is removed automatically. Subdomains are resolved to the parent: ads.doubleclick.netdoubleclick.net. Examples: doubleclick.net, google-analytics.com, intercom.io.

Returns:

  • Full DomainRecord. Free tier returns the domain, category, score, prevalence, and entity name. Pro/enterprise additionally return tcf_vendor_id, tcf_purposes, tcf_features, and disconnect_cats.

  • If the domain is not in the tracker database, live_lookup: true is set and RDAP/DNS/HTTP probe results are returned instead of tracker fields.

  • 404 if the domain cannot be found via live probe either (unknown TLD, unreachable).

Cost:

  • Free tier: included in 50 req/day limit. Pro/enterprise: included in plan.

Latency:

  • Database hit: typical <100ms, p99 <300ms.

  • Live probe: typical 2-5s, p99 10s (external DNS/HTTP calls).

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain name to look up (www. prefix stripped automatically)
Behavior5/5

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

With no annotations, the description fully discloses behavior: it attempts a database lookup first, then a live probe if not found. It explains latency differences, cost limits, tier variations, and error responses (404). No contradictions.

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?

The description is well-structured with sections for usage, inputs, returns, cost, latency. It is informative but slightly verbose; could be trimmed without losing value.

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 no output schema, the description thoroughly explains return fields, tier differences, and error handling (404). It covers all necessary context for an agent to use the tool correctly.

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?

The single parameter 'domain' is described in the schema and the description adds valuable context: auto-strip www, subdomain resolution to parent, and examples. This goes beyond the schema's basic description.

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 clearly states the tool returns 'complete surveillance intelligence record for a domain name', listing specific data fields. It distinguishes from siblings like 'search' and 'get_entity' by explicitly stating when to use those alternatives.

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?

Provides explicit 'Use this tool when' and 'Do NOT use this tool when' sections, citing specific scenarios and naming alternative tools (search, get_entity).

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

get_entityAInspect

Returns an entity record for a surveillance company or data broker, including its industry, estimated annual data value per user (in USD), categories of personal data collected, and the full list of domains it controls. Free tier returns 5 domains, paid returns up to 200.

Use this tool when:

  • You want to understand what corporate entity owns or controls a tracker domain.

  • You need to assess the total surveillance footprint of a company (e.g., Alphabet, Meta, Oracle).

  • You are building a corporate surveillance graph and need domain-to-entity mapping.

Do NOT use this tool when:

  • You have a domain and need its category — use get_domain instead.

  • You want to browse entities by industry — use list_entities instead.

  • You are searching for an entity by name — use search instead.

Inputs:

  • slug (path, required): URL-safe entity identifier (lowercase, hyphens). Examples: alphabet, meta, oracle-data-cloud, the-trade-desk.

Returns:

  • Full EntityRecord with data categories, estimated data cost, and associated domains.

  • domains: array of top-scoring domains (5 for free tier, 200 for paid).

  • Pro/enterprise additionally return website and description fields.

Cost:

  • Free tier: included in 50 req/day limit. Pro/enterprise: included in plan.

Latency:

  • Typical: <150ms, p99: <400ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
Behavior5/5

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

Despite no annotations, the description discloses free vs paid tier differences (5 vs 200 domains), additional fields for Pro/enterprise, cost inclusion, and latency (typical <150ms, p99 <400ms). Covers all key behavioral aspects.

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?

Well-structured with sections (overview, use cases, anti-use cases, inputs, returns, cost, latency). Every sentence adds value; no fluff.

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?

Explains return structure (EntityRecord with data categories, data cost, domains) and tier differences. No output schema exists, so description compensates fully.

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?

Only parameter slug is described in detail: URL-safe, lowercase, hyphens, with examples (e.g., alphabet, meta). Adds meaning beyond schema pattern and example.

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 clearly states it returns an entity record for a surveillance company or data broker, detailing fields like industry, data value, categories, and domains. It distinguishes from siblings by naming alternative tools for other use cases.

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 lists when to use (three scenarios) and when not to use (three scenarios with alternative tool names). Provides clear decision criteria for the agent.

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

get_receiptAInspect

Returns metadata for a TunnelMind surveillance receipt — a signed document proving that a specific user's surveillance exposure was observed, measured, and recorded at a specific time. Does NOT return the receipt's signature (anti-phishing protection). To verify a receipt's content integrity, use verify_receipt with the hash and signature from the receipt document itself.

Use this tool when:

  • You have a receipt ID and want to confirm it was genuinely issued by TunnelMind.

  • You need the issuance timestamp and signing key ID for a receipt.

  • You want to check whether a receipt exists before attempting content verification.

Do NOT use this tool when:

  • You have the full receipt document and want to verify it hasn't been tampered with — use verify_receipt instead.

Inputs:

  • receipt_id (path, required): The receipt ID from the receipt document. Alphanumeric with hyphens, max 128 characters.

Returns:

  • status: FOUND if the receipt is in the registry.

  • generated_at: ISO 8601 timestamp of receipt issuance.

  • signing_key_id: identifier of the Ed25519 key used to sign.

  • schema_version: receipt schema version.

  • message: human-readable summary with instructions for content verification.

  • 404 if the receipt ID is not in the registry.

Cost:

  • Free. No API key required.

Latency:

  • Typical: <100ms, p99: <300ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
receipt_idYes
Behavior5/5

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

The description transparently discloses that the tool does not return the signature (anti-phishing protection), specifies the cost as free with no API key required, provides latency expectations, and explains the 404 error case. No annotations are provided, so the description fully covers behavioral traits.

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?

The description is well-structured with sections and front-loaded with the main purpose. It is slightly verbose with latency and cost details that could be inferred from context, but all sentences add value and no information is redundant.

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 the tool's simplicity (one parameter, no output schema), the description covers all necessary aspects: purpose, usage conditions, input details, all return fields including the 404 case, cost, and latency. It also contextualizes against sibling tools like verify_receipt and check_receipt_revoked.

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?

The only parameter receipt_id is fully described with its source, format requirements (alphanumeric with hyphens, max 128 characters), and requirement. The schema has 0% description coverage, but the description adds complete semantic meaning beyond the schema's type/pattern constraints.

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 clearly states that the tool returns metadata for a surveillance receipt, distinguishing it from similar tools like verify_receipt by specifying it does not return the receipt itself or its signature.

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?

Explicit 'Use this tool when' and 'Do NOT use this tool when' sections provide clear guidance on appropriate usage, including a direct reference to the alternative tool verify_receipt for content verification.

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

get_statsAInspect

One public "state of the corpus" readout — the whole graph in a single call. Distinct from the Scry-only sensor stats at api.tunnelmind.ai/v1/stats (which this reuses for the scry block): this spans Scry, Sigil, and Tracker plus the attestation and routing layers.

Use it to cite live coverage — how many publishers / SSPs / DSPs / sell paths / sellers.json seats are in the Sigil supply graph, how many tracker entities and domains Tracker holds, how many ATAP witness events and OAIs the attestation layer carries, and how many BGP watchlist resources and routing events the monitor has recorded.

Every count is independent and null-tolerant: a momentarily-unavailable lens reports null, never a silent zero. Cacheable for ~10 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

With no annotations provided, the description compensates by disclosing that the tool is read-only, returns null instead of silent zeros for unavailable data, and is cacheable for ~10 minutes. This provides sufficient behavioral context for safe invocation.

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?

The description is front-loaded with the key purpose and is structured in clear paragraphs. While it is somewhat lengthy, every sentence adds meaningful information, and there is no redundancy.

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 that the tool has no parameters and no output schema, the description provides a comprehensive overview of the returned data, including null tolerance and caching behavior. It is fully complete for an agent to understand and use the tool.

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?

The tool has no parameters, but the description adds significant value by detailing the structure and content of the returned data, such as coverage counts for publishers, SSPs, DSPs, etc. It satisfies the baseline of 4 for a parameterless tool.

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 clearly defines the tool as a single, public readout of the entire supply graph, spanning multiple layers (Scry, Sigil, Tracker, attestation, routing). It uses specific verbs ('cite', 'spans', 'holds') and distinguishes itself from sibling tools by its scope and content.

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

Usage Guidelines3/5

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

The description implies usage for citing live coverage statistics but does not explicitly state when to use this tool versus alternatives like get_bgp_events or list_domains. It mentions a contrast with Scry-only sensor stats but lacks comprehensive when-to-use guidance.

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

get_taskAInspect

Returns the current status of a task created by an ?async=true intel request. Poll this endpoint until status is one of: complete, failed, cancelled, expired. On complete, the result field contains the same payload the sync endpoint would have returned. On failed, error.message explains the failure.

Use this tool when:

  • You submitted an intel probe with ?async=true and need to retrieve the result.

  • You want to check whether a background task finished without opening an SSE stream.

Do NOT use this tool when:

  • You want real-time event streaming — use stream_task instead.

  • You have no task_id — submit a probe with ?async=true first.

Inputs:

  • task_id (path, required): 26-char ULID returned in the 202 response.

Returns:

  • status: pending | running | complete | failed | cancelled | expired.

  • result: populated when status is complete. Null otherwise.

  • error: populated when status is failed. Null otherwise.

  • expires_at: tasks expire 1 hour after creation.

Cost:

  • Free. Does not count against rate limits.

Latency:

  • Typical: <100ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
Behavior5/5

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

Discloses polling behavior (poll until terminal status), status values and transitions, cost (free, no rate limits), and latency (<100ms). Since no annotations are provided, the description fully covers the tool's behavioral traits, including that tasks expire after 1 hour.

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?

Description is well-structured with clear sections (purpose, use/no-use, inputs, returns, cost, latency). Front-loaded with essential information. Every sentence adds value; no redundancy or wasted words.

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 the tool's simplicity (one param, no output schema), the description comprehensively covers input, return fields (status, result, error, expires_at), cost, and latency. It leaves no ambiguity for an agent to correctly select and invoke the tool.

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?

Input schema has 0% description coverage, so the description must compensate. It clearly explains task_id as '26-char ULID returned in the 202 response', adding origin and format beyond the schema's pattern and example. This is sufficient for an agent to understand what to provide.

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?

Description explicitly states 'Returns the current status of a task created by an ?async=true intel request', specifying the verb (returns), resource (status of task), and context (async intel request). It distinguishes from sibling stream_task by noting it is for polling rather than real-time streaming.

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?

Provides explicit use cases: 'Use this tool when: You submitted an intel probe with ?async=true and need to retrieve the result. You want to check whether a background task finished without opening an SSE stream.' Also includes clear negative guidance and alternative: 'Do NOT use this tool when: You want real-time event streaming — use stream_task instead.'

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

ghostroute_ai_lookupAInspect

Checks whether a domain or ASN belongs to a known AI company's infrastructure and what sovereignty it CLAIMS (program, zone, HQ), the baseline GhostRoute scores routing reality against.

Use this tool when:

  • You want to know "whose AI infrastructure is this, and what does it claim?"

  • You are enriching an endpoint before deciding whether to send it inference.

Inputs:

  • entity (path, required): a domain or ASN (AS####).

Returns:

  • matched, match_basis (domain|asn), ai_company, ai_product, sovereign_ai_program, claimed_sovereign_zone, hq_country, verified_sovereign.

Latency:

  • Typical <300ms (cached corpus read).

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYes
Behavior4/5

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

With no annotations, the description discloses behavioral traits: it checks sovereignty claims, returns specific fields, and mentions low latency (<300ms) from a cached corpus read. It implies non-destructive read-only behavior, but lacks details on authentication requirements or error handling.

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 well-structured with a purpose sentence, a 'Use this tool when:' list, and clear Inputs/Returns/Latency sections. Each sentence adds value without redundancy, making it concise and easy to parse.

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 the tool's simplicity (one parameter, no output schema), the description covers purpose, when to use, inputs, return fields, and latency. It lacks error handling or edge cases, but for a lookup tool this is largely sufficient. Minor gap in explaining the return fields' semantics.

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

Parameters3/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 compensate. It specifies the format 'domain or ASN (AS####)' for the entity parameter, adding meaning beyond the schema's type 'string'. However, it does not define domain format or provide further constraints, so it is adequate but minimal.

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 clearly states the verb 'Checks whether' and specifies the resource: a domain or ASN belonging to an AI company's infrastructure with sovereignty claims. It differentiates from sibling tools like ghostroute_asn_lookup by mentioning sovereignty and return fields, providing a distinct purpose.

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 includes an explicit 'Use this tool when:' section with two clear use cases (identifying AI infrastructure and enriching endpoints before inference). It provides context but does not mention when not to use or alternative tools, missing exclusionary guidance.

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

ghostroute_asn_lookupAInspect

Returns GhostRoute's ownership-graph record for an autonomous system: the registrant/parent organisation, its HQ country and sovereign zone, RIR, and cloud/AI-infrastructure flags. The long-term moat — who actually owns the network a route originates from.

Use this tool when:

  • You have an origin ASN and need its corporate owner + jurisdiction.

  • You are assessing whether an ASN belongs to a cloud front or the real operator.

Inputs:

  • asn (path, required): AS#### or a bare AS number.

Returns:

  • registrant_org, parent_org, parent_org_country, sovereign_zone, rir, is_cloud_provider, is_ai_infrastructure, or {matched:false}.

Latency:

  • Typical <300ms (cached corpus read, RDAP fallback on a miss).

ParametersJSON Schema
NameRequiredDescriptionDefault
asnYes
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses behavior: returns specific fields or {matched:false} if not found, mentions latency (<300ms), caching, and RDAP fallback. This is sufficient for a read-only lookup tool.

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 well-structured with clear sections for inputs, returns, and latency. Every sentence adds value, no wasted words, and it is appropriately concise for the tool's simplicity.

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 the tool has one parameter, no output schema, and is a simple lookup, the description covers all necessary aspects: purpose, input format, return fields, and performance characteristics. It is complete and leaves no ambiguities.

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%, but the description adds full meaning: it specifies the format 'AS#### or a bare AS number' for the `asn` parameter and indicates it is a path parameter. This completely compensates for the lack of schema descriptions.

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 clearly states the tool returns GhostRoute's ownership-graph record for an ASN, including specific fields like registrant/parent org, country, RIR, and cloud/AI flags. It distinguishes itself from sibling tools like ghostroute_ai_lookup by focusing on ASN ownership.

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 explicit when-to-use scenarios: when you have an origin ASN and need its corporate owner/jurisdiction, or when assessing if an ASN belongs to a cloud front. It does not mention when not to use or alternatives, but the context is clear.

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

ghostroute_checkAInspect

GhostRoute is TunnelMind's fourth lens: routing-integrity / sovereignty verification. It answers "is this infrastructure where it claims to be, owned by who it claims, routing where it says — and does that match the sovereign jurisdiction it asserts?" It resolves the originating ASN owner, RPKI validity, the certificate-issuing CA's jurisdiction, and matches the subject against a curated AI-infrastructure corpus to recover any sovereignty CLAIM (e.g. an "EU-sovereign" AI service), then scores reality against claim.

Use this tool when:

  • An agent is about to route data/inference to an endpoint that claims a jurisdiction (e.g. EU data residency, FedRAMP, sovereign-AI).

  • You want to detect a US-fronted (Cloudflare/AWS/GCP) endpoint masquerading as sovereign-EU infrastructure, an RPKI-invalid origin (possible hijack), or a sanctioned operator.

Inputs:

  • entity (path, required): an IPv4/IPv6, domain, ASN (AS####), or cert SHA-1/256.

  • receipt (query, optional): when true, issues a signed, persisted GhostRoute receipt (GR-YYYY-NNNNNNN) instead of an ephemeral verdict.

Returns:

  • sovereign_tier: VERIFIED | PLAUSIBLE | MISMATCH | CRITICAL_MISMATCH (or null if no claim).

  • sovereign_integrity: [0,1] score; origin_as, rpki_status, cert_ca, claimed_sovereign_zone, is_ai_infrastructure, ai_owner, sanctions_match.

  • _meta.caveats / _meta.penalties: what was and wasn't determinable.

Latency:

  • Typical 300-900ms on a cold subject (live BGP/RPKI/cert lookups), faster when cached.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYes
receiptNo
Behavior4/5

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

No annotations are provided, so the description bears full responsibility. It discloses live lookups (BGP, RPKI, cert), caching behavior, typical latency, and the ability to issue receipts. It does not mention side effects, but as a read-only verification tool, this is expected.

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?

The description is well-structured: first a definition, then usage guidelines, then parameter descriptions, then output description, then latency. It is informative without being overly verbose, though the output section could be condensed.

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 the complexity of sovereignty verification and the absence of an output schema, the description covers the key output fields (sovereign_tier, sovereign_integrity, _meta.caveats/penalties). It provides enough context for an AI agent to understand the tool's capabilities, though details on subfield values are lacking.

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 description coverage is 0%, but the description adds substantial meaning. It explains that 'entity' accepts IPv4/IPv6, domain, ASN, or cert SHA hashes, and that 'receipt' (optional) issues a signed receipt with a specific format. This compensates for the schema's lack of descriptions.

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 clearly states the tool's purpose: GhostRoute is a routing-integrity and sovereignty verification lens. It answers specific questions about infrastructure jurisdiction and scores reality against claims. It distinguishes itself from sibling tools like ghostroute_ai_lookup by being a comprehensive sovereignty check.

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 explicit use cases: routing data to claimed-jurisdiction endpoints and detecting masquerading infrastructure. It also mentions latency implications. However, it does not explicitly contrast with other ghostroute tools or state when not to use it.

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

ghostroute_ct_alertsAInspect

Returns the durable, deduplicated ledger of CT equivocation events the GhostRoute witness worker detects and pushes — a tree_size_rewind (an append-only log shrank), a root_fork (one tree_size witnessed with two different Merkle roots = a split-view log), or an sth_signature_invalid (a log's latest Signed Tree Head failed signature verification). Where /v1/ghostroute/witness shows live computed health, this is the immutable first-detection log: each entry's detected_at is when TunnelMind first raised the alarm. A healthy CT ecosystem returns an empty feed — any row here is a serious trust event.

Use this tool when:

  • You want a chronological record of CT trust violations, not live state.

  • You're polling for new equivocation events (check summary.last_detected_at).

Inputs:

  • limit (query, optional): max recent alerts, 1–200, default 50.

Returns:

  • summary: total, undelivered, rewinds, forks, bad_signatures, last_detected_at.

  • alerts[]: each kind, severity, log_url, log_operator, from_tree_size, to_tree_size, distinct_roots, event_observed_at, detected_at, delivered.

Latency:

  • Typical <200ms (KV-cached 1m).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
Behavior5/5

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

No annotations provided, so the description fully shoulders behavioral disclosure. It describes the tool as returning an immutable log, explains the meaning of events, notes that an empty feed indicates a healthy ecosystem, and provides typical latency. All key behaviors are covered.

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 well-organized: core purpose, event definitions, usage guidance, input/output details, and latency. Every sentence adds value without redundancy. It is concise given the complexity of the 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?

Despite no output schema, the description fully details the return structure (`summary` and `alerts[]` with all fields) and explains the context of events. Latency is provided. The description is complete for an agent to use the tool correctly.

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?

The only parameter, `limit`, is described as 'max recent alerts, 1–200, default 50', which matches the schema but adds the phrase 'recent alerts', clarifying its purpose. Since schema description coverage is 0%, the description compensates adequately.

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 clearly states the tool returns a 'durable, deduplicated ledger of CT equivocation events' and distinguishes it from a sibling tool ('Where `/v1/ghostroute/witness` shows live computed health...'). It lists specific event types, making the purpose unambiguous.

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?

Explicit usage guidance is given: 'Use this tool when: - You want a chronological record of CT trust violations, not live state. - You're polling for new equivocation events (check `summary.last_detected_at`).' This clearly tells the agent when to choose this tool over alternatives.

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

ghostroute_ct_proofsAInspect

Returns GhostRoute's per-cert inclusion proofs: each is a cryptographic demonstration that the exact certificate a host serves is included in an append-only CT log whose root TunnelMind signature-verified — upgrading "a monitor said this cert exists" to "proven in a log we witness". Failed attempts are included with a reason; a cert that suddenly cannot be proven is itself a signal.

Use this tool when:

  • You want to know whether a specific AI host's live cert is provably logged (pass domain), or

  • You want the corpus-wide proof rollup across watched hosts (omit domain).

Inputs:

  • domain (query, optional): a hostname to filter to; omit for corpus-wide.

  • limit (query, optional): max recent rows, 1–200, default 50.

Returns:

  • domain (echo, null when corpus-wide).

  • summary: total_attempts, proven, unproven, domains, last_observed_at.

  • recent[]: recent attempts (log_operator, leaf_index, tree_size, sth_root_hash, inclusion_proven, reason, ...).

  • by_domain[]: per-host attempts / proven rollup.

Latency:

  • Typical <300ms (KV-cached 5m).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
domainNo
Behavior5/5

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

Explains failed attempts with reason, that unproven cert is a signal, latency info, and the read-only nature. Fully transparent without annotations.

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?

Well-structured with sections, but slightly verbose. Could tighten wording without losing clarity.

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?

No output schema, but description details return structure (summary, recent[], by_domain[]) and latency, providing a complete picture for agent use.

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 has no descriptions (0% coverage), but the description explains `domain` as filter and `limit` as max rows with range and default, fully compensating.

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?

Description clearly states the tool returns per-cert inclusion proofs for CT logs, and distinguishes itself from sibling tools like ghostroute_verify or ghostroute_ct_witness by focusing on proof retrieval.

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 lists when to use: for a specific domain or corpus-wide rollup. Provides clear scenarios, no ambiguity.

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

ghostroute_ct_witnessAInspect

Returns GhostRoute's first-party Certificate-Transparency witness state: the latest signature-verified Signed Tree Head (STH) for every trusted, non-Google CT log TunnelMind independently witnesses, plus a regression scan over our own append-only history. Proof the platform holds its own signature-checked roots rather than reselling crt.sh/certspotter.

Use this tool when:

  • You want corpus-wide CT witness health, not one cert.

  • You need to know whether any CT log misbehaved (rewound, forked, or served an STH whose signature did not verify) — a serious trust event.

Inputs:

  • none.

Returns:

  • summary: logs_witnessed, verified_logs, unverified_logs, all_verified, total_snapshots, regressions, last_observed_at.

  • logs[]: per-log latest STH (log_url, log_operator, tree_size, sth_timestamp, root_hash, signature_verified, snapshots).

  • regressions[]: detected violations — kind is tree_size_rewind, root_fork, or sth_signature_invalid (empty array = healthy).

Latency:

  • Typical <300ms (KV-cached 5m; the witness worker updates twice a day).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

No annotations are provided, so the description carries full burden. It describes the output structure, explains that the tool returns first-party verified roots (not from third parties), and notes latency and caching behavior. It does not mention authentication or rate limits, but these may be system-wide. Overall, it is fairly transparent about what the tool does and returns.

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 well-structured with distinct sections: what it does, when to use, inputs, returns, and latency. Every sentence adds value, and there is no redundant information.

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 the complexity of CT witness state and no output schema, the description provides a thorough explanation of the return fields (summary, logs, regressions) and their meanings. It is complete enough for an agent to understand the output and act on it.

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?

The input schema has no parameters (100% coverage trivially). The description explicitly states 'Inputs: none', which is clear. Baseline for zero parameters is 4, and the description adds no confusion.

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 clearly states that the tool returns GhostRoute's first-party CT witness state, including signed tree heads and regression scans. It distinguishes this from other tools like ghostroute_ct_proofs by emphasizing that it provides corpus-wide health rather than individual certificate checks.

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?

The description explicitly provides two 'Use this tool when' scenarios: for corpus-wide CT witness health and for detecting CT log misbehavior. It implicitly excludes use cases like checking a single certificate, which would be covered by siblings like ghostroute_ct_proofs.

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

ghostroute_verifyAInspect

Retrieves a previously-issued, signed GhostRoute receipt by its GR-YYYY-NNNNNNN id, for independent audit of a past sovereignty verdict.

Use this tool when:

  • You hold a GhostRoute receipt id and want to confirm its contents/signature.

  • You are reconciling an agent's action log against the attestation layer.

Inputs:

  • receipt_id (path, required): GR-YYYY-NNNNNNN.

Returns:

  • The full persisted receipt row (routing, cert, sovereignty fields + signature).

Latency:

  • Typical <200ms (single indexed read).

ParametersJSON Schema
NameRequiredDescriptionDefault
receipt_idYes
Behavior4/5

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

No annotations provided, but description identifies the action as a retrieval (read), mentions typical latency (<200ms single indexed read), and specifies the return content (full persisted receipt row). Lacks authentication requirements but sufficient for a read 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?

Very concise: one sentence followed by bullet points for use cases, inputs, returns, latency. No redundant information. Well structured.

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?

Covers purpose, parameter format, return value, and latency. Missing error behavior (e.g., if receipt not found) but otherwise complete for a simple retrieval tool.

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?

With 0% schema description coverage, the description compensates by explaining the receipt_id format (GR-YYYY-NNNNNNN) and noting it is a path parameter. Provides precise guidance for the single parameter.

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

Purpose4/5

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

Clearly states 'Retrieves a previously-issued, signed GhostRoute receipt' and gives the purpose (audit). While it doesn't explicitly differentiate from sibling 'verify_receipt', the specific id format and audit context provide enough clarity.

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?

Bullet points list two specific use cases: holding a receipt id for confirmation, and reconciling action logs. Provides good context but does not mention when not to use or alternatives.

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

health_checkAInspect

Returns a minimal status object confirming the API is alive. Use this to verify connectivity before chaining other calls, or as a liveness check in a workflow.

Use this tool when:

  • You need to verify the API is reachable before starting a multi-step investigation.

  • A prior call failed with a 503 or 504 and you want to confirm the service recovered.

  • You are debugging connectivity from a new environment.

Do NOT use this tool when:

  • You want actual tracker data — use get_domain or search instead.

  • You want to check a specific domain — this returns nothing domain-specific.

Inputs:

  • None.

Returns:

  • ok: always true if the API is up.

  • ts: ISO 8601 timestamp of the server's current time.

Cost:

  • Free. No API key required. Not rate-limited.

Latency:

  • Typical: <50ms, p99: <200ms.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: it is free, requires no API key, is not rate-limited, and has typical latency under 50ms with p99 under 200ms. This goes well beyond the minimal required info.

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 with clear sections (when to use, when not, inputs, returns, cost, latency) and is front-loaded with the core purpose. Every sentence adds value without redundancy.

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 the tool's simplicity (no parameters, no output schema, no annotations), the description is thoroughly complete. It explains the return fields (ok, ts), cost, latency, and provides contextual usage guidance.

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?

There are zero parameters, so the baseline is 4. The description correctly notes 'Inputs: None,' adding no additional semantics but confirming the absence of parameters clearly.

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 clearly states it returns a minimal status object confirming the API is alive, with specific verb ('Returns') and resource ('status object'). It distinguishes from sibling tools like 'get_domain' and 'search' by explicitly stating it does not return tracker data or domain-specific info.

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?

The description provides explicit 'Use this tool when' and 'Do NOT use this tool when' sections, detailing contexts like verifying connectivity before a multi-step investigation, after 503/504 failures, or debugging new environments. It also names alternatives ('get_domain' or 'search') for other needs.

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

intel_agentAInspect

Probes a domain for known AI agent integration signals: llms.txt, ai.txt, /.well-known/ai-plugin.json, openapi.json, swagger.json, MCP manifest, MCP SSE endpoint. Returns a score based on the count of signals detected. Use this to assess whether a domain is ready for agent-to-agent interaction.

Use this tool when:

  • You want to know whether a domain exposes an MCP server or OpenAPI spec for agents.

  • You are cataloguing the AI-agent-ready surface of a set of domains.

  • You need to decide whether to attempt programmatic API access to a domain.

Do NOT use this tool when:

  • You need tracker/surveillance data about the domain — use get_domain instead.

  • You need the robots.txt AI crawler policy — use intel_robots instead.

  • You need HTTP security posture — use intel_http instead.

Inputs:

  • domain (query, required): Domain to probe.

Returns:

  • Boolean flags per signal (llms_txt, ai_plugin, openapi, mcp_manifest, mcp_endpoint, mcp_sse).

  • agent_surface_score: integer 0-8, count of signals detected.

Cost:

  • Free. No API key required.

Latency:

  • Typical: 2-5s (parallel probes), p99: 8s.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoWhen true, return a task handle immediately instead of blocking. Poll get_task for the result.
domainYes
Behavior5/5

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

With no annotations, the description fully discloses behavior: probes multiple endpoints, returns boolean flags and integer score, notes cost (free, no API key), and latency (2-5s typical, p99 8s). No contradictions.

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?

Well-structured with clear sections (purpose, signals, when to use/not use, inputs, returns, cost, latency). Every sentence adds value; no redundancy.

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?

No output schema, but description lists all return flags and explains the score range (0-8). Covers cost, latency, and input details. Suffices for an agent to understand and use the tool correctly.

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?

Description explains 'domain' parameter meaning and provides example, but does not mention the 'async' parameter. However, schema already describes 'async' well, so the description adds value for the required parameter while the schema covers the optional one.

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?

Description clearly states the tool probes a domain for AI agent integration signals and returns a score. It uses specific verbs and resources and explicitly distinguishes from sibling tools like intel_robots, intel_http, and get_domain.

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?

Provides explicit 'Use this tool when' and 'Do NOT use this tool when' sections with specific scenarios and alternative tools, leaving no ambiguity about when to use this tool versus siblings.

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

intel_httpAInspect

Makes a live HEAD request to the target domain from the Cloudflare edge, follows up to 5 redirects, and returns the full redirect chain, final HTTP status, key response headers, a security header score, and any third-party surveillance actors referenced in the Content-Security-Policy header.

Use this tool when:

  • You want to verify whether a site enforces HTTPS and HSTS.

  • You need to inspect what third-party scripts a site loads via its CSP header.

  • You are assessing a domain's security posture before trusting it.

  • You want to detect surveillance actors embedded in a site's CSP.

Do NOT use this tool when:

  • You need tracker database data (category, score, entity) — use get_domain instead.

  • You need the technology stack (CMS, framework) — use intel_stack instead.

  • You need robots.txt AI crawler policy — use intel_robots instead.

Inputs:

  • domain (query, required): Domain to probe. Can include or omit https://. Examples: nytimes.com, https://example.com.

Returns:

  • reachable: false if the domain did not respond within 6 seconds.

  • redirect_chain: each hop with URL, status code, and Location header.

  • security_headers.score: 0-100 based on presence of HSTS, CSP, X-Content-Type, X-Frame-Options, Referrer-Policy.

  • security_headers.missing: list of headers absent.

  • csp_actors: known surveillance actors detected in the CSP header.

  • error: set if the connection failed.

Cost:

  • Free. No API key required.

Latency:

  • Typical: 1-3s (outbound fetch), p99: 6s (timeout). Plan for async if chaining calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoWhen true, return a task handle immediately instead of blocking. Poll get_task for the result.
domainYes
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the HEAD request, redirect limit, timeout (6s), security scoring, and CSP actor detection. It mentions latency and cost. A minor gap: the async parameter is not described here (though covered in schema), but the hint 'Plan for async' is present. Overall highly 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 well-structured with clear sections: operation, use cases, inputs, returns, cost, latency. Every sentence adds value, and it is front-loaded with the essential action. No redundancy.

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 no output schema, the description thoroughly explains return values (reachable, redirect_chain, security_headers, csp_actors, error). It covers timeout, redirect limit, and common use cases. The async parameter is covered in schema, so the description is complete for the tool's complexity.

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 50% (domain has example only, async has description). The description adds value by giving domain format examples and explaining output fields in detail. However, it does not elaborate on the async parameter beyond a vague suggestion. Still, it compensates partially for the schema gap.

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 clearly states it makes a live HEAD request, follows up to 5 redirects, and returns specific data like redirect chain, status, headers, security score, and CSP actors. It distinguishes itself from sibling tools like get_domain, intel_stack, and intel_robots by specifying what it does not do.

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 lists when to use (verify HTTPS/HSTS, inspect CSP, assess security) and when not to use (tracker data, tech stack, robots.txt), with named alternatives. This provides clear guidance for an AI agent.

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

intel_injectAInspect

Fetches a domain's homepage and checks for content patterns that could constitute prompt injection attacks against AI agents that visit and ingest the page. Signals include hidden text, invisible divs, <!-- AI: ignore --> style comments, and known injection patterns.

Use this tool when:

  • You are vetting a domain before feeding its content into an LLM context.

  • You want to assess the prompt injection risk of a URL before browsing it with an agent.

  • You are auditing a set of domains for adversarial AI content.

Do NOT use this tool when:

  • You want tracker surveillance data — use get_domain instead.

  • You want AI training opt-out signals — use intel_optout instead.

  • You want the agent surface (MCP/OpenAPI) — use intel_agent instead.

Inputs:

  • domain (query, required): Domain to scan.

Returns:

  • injection_signals: list of signal types detected (e.g., hidden_text, ai_instruction_comment, invisible_div).

  • risk_level: none, low, medium, or high based on signal count and type.

Cost:

  • Free. No API key required.

Latency:

  • Typical: 2-4s (HTML fetch), p99: 7s.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoWhen true, return a task handle immediately instead of blocking. Poll get_task for the result.
domainYes
Behavior5/5

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

No annotations provided, so description fully covers behavioral aspects: fetches HTML, checks for hidden text, invisible divs, AI comments, injection patterns; describes return fields (injection_signals, risk_level); mentions cost (free) and latency (2-4s, p99 7s).

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?

Well-structured with sections (purpose, usage, inputs, returns, cost, latency). Each sentence adds necessary information, though slightly verbose but efficient.

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?

Covers all essential aspects for a security scan tool: input requirements, output fields, cost, latency, async behavior. No output schema needed as return values are described.

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 covers 50% of parameters (async described). Description clarifies domain parameter as 'Domain to scan' and reiterates async behavior. Adds value by confirming usage context for domain.

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?

Clearly states it fetches a domain's homepage and checks for prompt injection patterns. Differentiates from siblings by naming alternatives for other use cases (get_domain, intel_optout, intel_agent).

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?

Provides explicit 'Use when' and 'Do NOT use' sections with specific alternatives, making it easy for the agent to decide when to invoke this tool.

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

intel_optoutAInspect

Checks a domain for all known AI training data opt-out mechanisms beyond robots.txt: TDM (Text and Data Mining) reservation headers, <meta name="ai"> tags, Creative Commons NonCommercial licenses, and other machine-readable opt-out signals.

Use this tool when:

  • You need to determine whether a domain has opted out of AI training data collection.

  • You are checking compliance before using a domain's content in a training dataset.

  • You want a comprehensive opt-out status (robots.txt + TDM + meta tags combined).

Do NOT use this tool when:

  • You only need robots.txt crawler policy — use intel_robots instead (faster).

  • You need tracker data — use get_domain instead.

  • You want injection risk assessment — use intel_inject instead.

Inputs:

  • domain (query, required): Domain to probe.

Returns:

  • tdm_reservation: true if the domain sends a TDM-Reservation: 1 header.

  • noai_meta: true if the HTML contains <meta name="robots" content="noai">.

  • license_detected: string if a CC NonCommercial or similar license is detected, otherwise null.

  • opted_out: true if any opt-out signal is present.

Cost:

  • Free. No API key required.

Latency:

  • Typical: 2-4s, p99: 7s.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoWhen true, return a task handle immediately instead of blocking. Poll get_task for the result.
domainYes
Behavior4/5

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

With no annotations, the description carries the full burden. It details the checks performed, specifies cost (free) and latency (2-4s, p99 7s), and explains the async parameter behavior. It lacks explicit mention of read-only nature but implies it through 'checks' and returns.

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 tightly structured with clear sections (what it does, when to use, inputs, returns, cost, latency). Every sentence adds value without redundancy, making it easy to parse.

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 no output schema, the description explains return fields clearly. It covers inputs, usage context, cost, and latency. Missing error handling or edge cases, but for a domain-probing tool, it is reasonably complete.

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 description coverage is 50% (only async described). The description adds meaning by specifying 'domain (query, required)' and providing return fields, which helps an agent understand the domain parameter's role and the output shape. This compensates for the missing schema description of domain.

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 starts with a clear verb ('Checks') and specific resource ('domain for AI training data opt-out mechanisms'), listing concrete signals (TDM headers, meta tags, CC licenses). It immediately distinguishes from sibling tools by specifying what it covers beyond robots.txt.

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?

The 'Use this tool when' and 'Do NOT use this tool when' sections provide explicit context, including alternatives (intel_robots, get_domain, intel_inject) and the condition 'compliance before using domain's content in training dataset'.

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

intel_robotsAInspect

Retrieves the target domain's robots.txt file and parses it for AI crawler disallow rules. Specifically detects policies for known AI crawlers (GPTBot, ClaudeBot, CCBot, Bytespider, etc.) and returns a structured summary of the crawling policy.

Use this tool when:

  • You need to know whether a domain has opted out of AI training data collection.

  • You want to check if a specific AI crawler is blocked before citing the domain.

  • You are building a dataset of AI-accessible vs AI-blocked domains.

Do NOT use this tool when:

  • You want training opt-out signals beyond robots.txt (TDM reservation, noai meta) — use intel_optout instead.

  • You want the full technology stack — use intel_stack instead.

  • You need tracker database data — use get_domain instead.

Inputs:

  • domain (query, required): Domain to probe.

Returns:

  • robots_txt_found: false if the domain returned 404 or the file is empty.

  • ai_crawlers_blocked: list of AI crawler user-agent names that are disallowed.

  • all_blocked: true if User-agent: * with Disallow: / is present.

  • raw: first 4096 characters of the robots.txt file.

Cost:

  • Free. No API key required.

Latency:

  • Typical: 1-2s, p99: 6s.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoWhen true, return a task handle immediately instead of blocking. Poll get_task for the result.
domainYes
Behavior4/5

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

No annotations provided, so the description bears full responsibility. It explains the tool's read-only nature, return fields, cost, and latency. It does not mention rate limits or error handling, but covers key behavioral aspects thoroughly.

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?

Highly structured with clear sections (purpose, usage, inputs, returns, cost, latency), front-loaded with core functionality. Every sentence adds value, no fluff.

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?

With no output schema, the description explicitly lists all return fields, which is helpful. It covers cost and latency. Missing error scenarios or edge cases, but overall adequate for a simple probing tool.

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 description coverage is 50%: async parameter is well-documented in schema, but domain lacks description there. The tool description adds meaning for domain ('Domain to probe') and states it is required, compensating for the schema gap.

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 clearly states the tool retrieves and parses robots.txt for AI crawler disallow rules. It distinguishes itself from siblings by naming intel_optout, intel_stack, and get_domain, making it easy to select.

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?

Explicit 'Use this tool when' and 'Do NOT use this tool when' sections with concrete scenarios and alternative tool names, providing excellent guidance for correct invocation.

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

intel_stackAInspect

Fetches up to 32KB of the domain's HTML and response headers from the edge, then fingerprints the content for known CMS platforms, JavaScript frameworks, CDN providers, and analytics tools. Detection is based on meta generator tags, script src patterns, response headers, and cookie names.

Use this tool when:

  • You need to know what CMS (WordPress, Drupal, Shopify) a site runs.

  • You are assessing a domain's infrastructure before a security review.

  • You want to identify analytics or marketing tools a site embeds.

Do NOT use this tool when:

  • You want HTTP headers and security posture — use intel_http instead.

  • You want tracker database classification — use get_domain instead.

  • You need robots.txt AI policy — use intel_robots instead.

Inputs:

  • domain (query, required): Domain to fingerprint.

Returns:

  • cms: detected content management system, or null.

  • frameworks: JavaScript/backend frameworks detected.

  • cdn: CDN provider detected, or null.

  • analytics: analytics and tracking tools detected.

  • meta_generators: raw meta generator tag values.

Cost:

  • Free. No API key required.

Latency:

  • Typical: 2-4s (HTML fetch), p99: 7s.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoWhen true, return a task handle immediately instead of blocking. Poll get_task for the result.
domainYes
Behavior5/5

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

Despite no annotations, description discloses behavioral traits: up to 32KB fetch, edge fingerprinting, detection sources, cost, and latency. No contradictions.

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?

Description is well-structured with sections (use cases, inputs, returns, cost, latency) and each sentence adds value. Slightly long but not verbose.

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?

Provides complete context: what it does, when to use, alternatives, input/output details, cost, latency. No output schema, but description explains return fields sufficiently.

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

Parameters3/5

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

Schema coverage is 50% with only async parameter described. Description does not add meaning beyond the schema for parameters; domain has only an example. However, the tool's usage is simple enough that this is minimally adequate.

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?

Description clearly states the tool fetches HTML and fingerprints for CMS, frameworks, CDN, analytics. It distinguishes from siblings like intel_http and get_domain.

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 states when to use and not to use, with specific alternative tools named (intel_http, get_domain, intel_robots).

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

list_domainsAInspect

Returns a paginated list of domains from the tracker database. Results are ordered alphabetically by domain name and support cursor-based pagination for full traversal. Filtering by category and minimum score allows targeted data extraction.

Use this tool when:

  • You want to enumerate all known ad-tech or analytics domains above a risk threshold.

  • You need a dataset of tracker domains for offline analysis.

  • You are paginating through a category to build a block list.

Do NOT use this tool when:

  • You need data for a specific domain — use get_domain instead.

  • You are searching by keyword — use search instead.

  • You want domains belonging to a specific company — use get_entity instead.

Inputs:

  • category (query, optional): Filter by surveillance category. One of: ad_tech, analytics, social, fingerprinting, content, cdn, other.

  • min_score (query, optional): Integer 0-100. Exclude domains scoring below this value.

  • limit (query, optional): Number of results per page. Max 100 (paid), 20 (free). Default 50.

  • cursor (query, optional): Pagination cursor from the previous response's next_cursor field.

Returns:

  • Array of domain list items (domain, category, score, prevalence, entity summary).

  • meta.has_more: true if more pages exist.

  • meta.next_cursor: pass as cursor to get the next page.

  • meta.count: number of results in this page.

Cost:

  • Free tier: up to 20 results/page, 50 req/day. Pro/enterprise: up to 100 results/page.

Latency:

  • Typical: <200ms, p99: <500ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
categoryNo
min_scoreNo
Behavior5/5

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

Discloses pagination behavior, result ordering, filtering capabilities, tier limits (free vs paid), latency expectations, and return structure. No annotations exist, so description fully covers behavioral traits without contradiction.

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?

Well-structured with sections for usage guidance, inputs, returns, cost, and latency. Front-loaded with core purpose, each sentence adds value, no redundancy.

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?

Covers all aspects needed for a list tool with 4 parameters: pagination mechanics, filtering, tier limits, latency, return format without output schema, and proper usage context.

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?

Despite 0% schema description coverage, the description adds comprehensive meaning for all 4 parameters: explains limit tier differences, cursor usage from previous response, category valid values, and min_score semantics, going well beyond the schema's type/constraints.

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?

Clearly states the tool returns a paginated list of domains from the tracker database, specifies alphabetical ordering and pagination method, and distinguishes from siblings by listing alternative tools for specific use cases.

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?

Provides explicit 'Use when' and 'Do NOT use when' sections with specific alternative tool names (get_domain, search, get_entity), giving clear guidance on appropriate contexts.

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

list_entitiesAInspect

Returns a paginated list of corporate entities in the TunnelMind surveillance database. Includes data categories, estimated data value, and industry classification. Useful for enumerating the surveillance ecosystem by sector.

Use this tool when:

  • You want to enumerate all entities in a specific industry (e.g., all ad-tech companies).

  • You need a dataset of surveillance entities for analysis or reporting.

  • You are building a comprehensive surveillance landscape map.

Do NOT use this tool when:

  • You need the full profile of a specific entity — use get_entity instead.

  • You are searching by entity name — use search instead.

  • You need domain-level data — use list_domains instead.

Inputs:

  • industry (query, optional): Filter by industry classification. Examples: ad_tech, analytics, data_broker, social, crm.

  • limit (query, optional): Results per page. Max 100 (paid), 20 (free). Default 50.

  • cursor (query, optional): Pagination cursor from previous response's next_cursor.

Returns:

  • Array of entity list items (slug, name, parent_company, industry, data_categories, data_cost_usd).

  • meta.has_more and meta.next_cursor for pagination.

Cost:

  • Free tier: up to 20 results/page, 50 req/day. Pro/enterprise: up to 100 results/page.

Latency:

  • Typical: <150ms, p99: <400ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
industryNo
Behavior5/5

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

No annotations provided, but description fully discloses pagination, cost tiers, latency, and return structure. No contradictions.

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?

Well-structured with sections for summary, use cases, inputs, returns, cost, latency. Every sentence is informative and earns its place.

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?

Completely covers all necessary context for a list tool: pagination, filtering, return format, performance characteristics. No output schema exists, but return structure is explained.

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?

Input schema has 0% description coverage, but the description explains each parameter in detail: industry examples, limit with tier constraints and default, cursor for pagination. Adds significant value beyond 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 clearly states it returns a paginated list of corporate entities with data categories, value, and industry. It distinguishes itself from siblings by naming alternatives like get_entity, search, and list_domains.

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?

Provides explicit when-to-use scenarios (enumerate by industry, build landscape) and when-not-to-use with specific alternative tools (get_entity, search, list_domains).

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

preflight_should_i_actAInspect

The single call an agent makes before transacting with a destination on the open web. Composes the cross-lens verdict with a bounded Tracker-presence bonus, maps the adjusted trust score to a tri-state decision (allow / caution / deny), and returns a 5-minute signed consultation receipt (sigil_token with sub: preflight:consulted).

The receipt is the load-bearing artifact: the agent attaches it to its action log as cryptographic proof that the destination was consulted before action. The decision itself is commodity-shaped; the receipt of having asked is what accountability requires.

When ait is supplied, the consultation additionally chains a witness-tier preflight:consulted event onto the ATAP AIT, signed by OAI-2026-0000201 — turning the consultation into a hash-chained, replayable artifact.

Tracker presence applies a bounded +0.05 trust bonus before decision mapping (capped at 1.0). Absence is never a penalty — most of the open web is not in the tracker corpus and that's expected.

Defaults: allow >= 0.70, caution >= 0.40, else deny. Thresholds are overridable per request; weights are inherited from cross_lens_verify.

ParametersJSON Schema
NameRequiredDescriptionDefault
aitNoOptional ATAP AIT id. When present, chains a witness-tier `preflight:consulted` event onto the AIT.
nodeYesIPv4/IPv6 address, domain, ASN with optional `AS` prefix, or entity_slug.
intentNoFree-form context — recorded in the receipt, never affects the decision. Validated against /^[A-Za-z0-9._:-]{1,64}$/.
agent_idNoCaller's stable agent identifier, recorded in the receipt. Validated against /^[A-Za-z0-9._:-]{1,128}$/.
thresholdsNoOptional overrides; must satisfy 0 <= caution < allow <= 1.
Behavior4/5

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

No annotations are provided, so the description carries full burden. It transparently explains that the tool returns a tri-state decision and a receipt (sigil_token), details the effect of the `ait` parameter, the bounded tracker-presence bonus, and that the receipt is the load-bearing artifact for accountability. It does not hide any behavioral traits such as side effects or rate limits, but the lack of explicit read-only declaration is a minor gap.

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?

The description is well-structured with key information front-loaded in the first paragraph, explaining the core purpose and output. Subsequent paragraphs add important details about the receipt, AIT chaining, and tracker bonus. While thorough, it is slightly verbose and could be tightened while retaining clarity.

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 the tool's complexity (5 parameters including nested objects, no output schema), the description is remarkably complete. It explains the output format (tri-state decision and sigil_token), the decision logic with default thresholds, the role of the receipt as a cryptographic proof, and the behavior of each parameter including the optional AIT chaining. No additional context seems necessary.

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 coverage is 100% with descriptions for all five parameters, but the tool description adds significant context beyond the schema. For example, it explains that `thresholds` are overridable and must satisfy 0 <= caution < allow <= 1, that `intent` is free-form and never affects the decision, and that `ait` chains a witness event. This enriches semantic understanding beyond what the schema provides.

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 clearly states the tool is 'the single call an agent makes before transacting with a destination on the open web' and explains it composes a cross-lens verdict with a tracker-presence bonus to produce a tri-state decision and a signed receipt. This specific verb-resource-action combination distinguishes it from all sibling tools.

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 explicit context for when to use (before transacting with a destination) and explains key behaviors like the tracker-presence bonus and default thresholds. While it doesn't explicitly list when not to use or name alternative tools, the singular purpose implied by 'the single call' provides sufficient guidance.

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

profile_entityAInspect

Call this before routing traffic, bidding on inventory, or trusting a counterparty. It fuses ALL THREE TunnelMind lenses for one subject — Scry (attacker intelligence + threat feeds + open ports), Sigil (ad-supply-chain position + trust score + ATAP witness count), and Tracker (DDG/IAB catalog + prevalence + categories) — into a single confidence-scored profile plus a signed P38 receipt.

The cross_lens.hits field tells you if the same infrastructure appears in attack data AND supply-chain data — that's your highest-confidence signal, and the one no siloed competitor can give you. cross_lens.flags surfaces the actionable highlights (cross_lens_overlap:scry+sigil, in_threat_intel:..., high_prevalence_tracker, corroborated_by_N_lenses).

Confidence weighting: each lens contributes a base score; a 1.5× multiplier applies when ≥2 lenses corroborate the same subject; and the Scry contribution is weighted by the attestation tier of the sensors that observed it (silicon_root 1.0 → self_asserted 0.5). Bounded [0,1] and carried into the receipt.

Unlike cross_lens_verify (one node → one verdict) and cross_lens_lookup (one node → raw three-lens view), profile_entity takes the SUBJECT as any combination of ip / domain / entity and returns the richest fused detail for a pre-transaction decision. At least one of ip / domain / entity is required.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipNoIPv4 or IPv6 address of the subject (Scry lens).
domainNoDomain of the subject (Sigil + Tracker lenses).
entityNoentity_slug of the subject (Sigil + Tracker lenses).
Behavior5/5

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

With no annotations provided, the description fully carries the burden of behavioral transparency. It explains that the tool fuses all three TunnelMind lenses, returns a confidence-scored profile and a signed P38 receipt, and details the cross_lens.hits and cross_lens.flags fields. It also describes the confidence weighting mechanism (1.5× multiplier for corroboration, Scry weighting by attestation tier) and bounds [0,1].

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?

The description is detailed and well-structured, with the primary use case front-loaded. However, it is somewhat lengthy and could be slightly more concise without losing essential information. Each sentence contributes value, but minor trimming could improve readability.

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 the tool's complexity (three lenses, confidence scoring, cross-lens signals, and receipt generation), the description covers all key aspects: input requirements, output fields (cross_lens.hits, cross_lens.flags), confidence weighting, and differentiation from siblings. It also explains the output format (signed P38 receipt) despite no output schema being provided.

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 coverage is 100%, but the description adds meaning beyond the schema by explaining which lens each parameter targets (ip for Scry, domain for Sigil+Tracker, entity for Sigil+Tracker) and noting that at least one is required. This provides context for how parameters affect the analysis.

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 clearly states the tool's purpose: 'Call this before routing traffic, bidding on inventory, or trusting a counterparty.' It specifies the verb 'profile', the resource 'entity' (a combination of ip/domain/entity), and distinguishes itself from siblings like cross_lens_verify and cross_lens_lookup by explaining what makes profile_entity unique (richest fused detail for pre-transaction decision).

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?

The description explicitly states when to use the tool ('before routing traffic, bidding on inventory, or trusting a counterparty') and differentiates from alternatives by stating 'Unlike cross_lens_verify (one node → one verdict) and cross_lens_lookup (one node → raw three-lens view), profile_entity takes the SUBJECT...'. It also specifies parameter requirements: 'At least one of ip / domain / entity is required.'

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

revoke_api_keyAInspect

Permanently deactivates the API key used to make this request. This action is irreversible. After revocation, the key will return 401 on all subsequent calls. If you have an active Stripe subscription, you must separately cancel it at stripe.com — revoking the key does not cancel billing.

Use this tool when:

  • You want to rotate your API key (revoke old, then provision a new one).

  • You believe your key has been compromised.

Do NOT use this tool when:

  • You want to check quota — use get_api_key instead.

  • You intend to keep using the API — this is permanent.

Inputs:

  • No body or query parameters. Auth is from the Authorization: Bearer header.

Returns:

  • revoked: true.

  • note: reminder about Stripe subscription cancellation.

Cost:

  • Free. Does not count against the daily request limit.

Latency:

  • Typical: <150ms, p99: <400ms.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

No annotations provided, but description fully covers behavioral traits: irreversibility, 401 response after revocation, billing note, free cost, and latency. No contradictions.

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?

Well-structured with clear sections (use, inputs, returns, cost, latency). Front-loaded with key information, no wasted words.

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?

Despite no output schema, description specifies return fields (revoked, note). All relevant aspects covered for a simple 0-param tool.

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?

No parameters in schema, description explains auth is from header and no body/query. Baseline 4 for zero-param tool; adds value by clarifying input mechanism.

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?

Description clearly states it permanently deactivates the API key used for the request. Specific verb 'revoke' and resource 'API key' are distinct from sibling tools like get_api_key.

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?

Provides explicit when-to-use scenarios (rotate, compromised) and when-not-to (check quota, intend to keep using). Names alternative tool get_api_key.

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

sigil_ads_txt_historyAInspect

Returns a publisher's ads.txt change log — one entry per crawl in which its authorized-seller set changed. A publisher quietly adding a reseller line is a real fraud signal; this is how a buyer audits supply over time.

Inputs:

  • domain (path, required): publisher domain.

  • since (query, optional): ISO date / date-time lower bound on observed_at.

  • limit (query, optional): max entries — default 50, max 200.

Returns changes[], newest first — each with observed_at, added_count, removed_count, additions, removals, directive_changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo
domainYes
Behavior4/5

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

With no annotations, the description carries full burden. It explains return fields (newest first, changes array) and notes limit defaults/max. Could mention read-only nature, but sufficient.

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?

Well-structured with paragraph and bullet-like input list. Every sentence adds value, no fluff. Front-loaded with purpose.

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?

No output schema, but description lists return fields (changes[], observed_at, added_count, etc.) and explains their meaning. Complete for a history tool.

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 coverage is 0%, but description compensates fully: explains domain as path required, since as ISO date optional, limit with default and max. Adds meaning beyond 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 clearly states it returns a publisher's ads.txt change log, with specific verb and resource. It distinguishes from sibling verification tools like sigil_verify_ads_txt.

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?

Provides a real-world use case (fraud signal detection) and how buyers audit supply. Implicitly suggests when to use, but lacks explicit 'when not to use' or alternatives.

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

sigil_atap_ait_statusCInspect

Returns an AIT's status, chain head hash, event count, pending-event count, per-tier event counts, and the anchored-bid coverage ratio.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
Behavior2/5

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

The description lists return values but lacks disclosure of behavioral traits such as side effects, idempotency, or authentication requirements. Since no annotations exist, the description bears full responsibility for transparency.

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 a single, well-structured sentence that lists the output clearly. It is front-loaded with the verb 'Returns' and contains no unnecessary words.

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

Completeness3/5

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

The tool is simple with one parameter, but the description lacks parameter explanation and usage context. It does cover the return fields, which is good given no output schema.

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

Parameters1/5

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

The schema has 0% description coverage, and the description does not explain the 'id' parameter, leaving the agent with no additional meaning. The description must compensate but fails to do so.

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

Purpose4/5

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

The description clearly states the tool returns an AIT's status and lists specific data fields, distinguishing it from siblings like sigil_atap_register_ait and sigil_atap_witness. However, it could be more explicit about what an AIT is.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus other AIT-related tools. There is no mention of prerequisites, alternatives, or when not to use it.

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

sigil_atap_register_aitBInspect

Registers an ATAP v0.1 AIT for a media-buying agent under the sigil:media_buyer:v1 profile. Sigil validates the capability set and constraints against the published profile, signs the AIT as the witness (OAI-2026-0000201), stores it, and returns the signed token.

Sigil is the ATAP witness — there is no kernel observer. See https://github.com/TunnelMind/atap-profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYes
operatorYesThe agent operator's canonical OAI.
agent_typeNomedia-buyer
expires_atYes
constraintsYes
capabilitiesYes
attestation_policyYes
Behavior3/5

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

Discloses validation, signing, storage, and witness role, but lacks detail on side effects, failure modes, or idempotency. Since annotations are absent, the description carries the full burden and is adequate but not thorough.

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?

Two paragraphs, front-loaded with the main purpose. No redundant information, but the second paragraph could be integrated more concisely.

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

Completeness2/5

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

Lacks details on parameter formats, return values, error handling, and edge cases. References external URL but does not sufficiently equip the agent for autonomous use given the tool's complexity.

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

Parameters2/5

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

Schema description coverage is only 14%, and the description does not explain individual parameters (e.g., capabilities, constraints format). The description mentions 'capability set and constraints' but provides no parameter-level semantics.

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 clearly states the action (register), resource (ATAP v0.1 AIT), and profile (sigil:media_buyer:v1). It distinguishes from siblings like sigil_atap_ait_status by focusing on registration vs. status checks.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance. Does not contrast with other ATAP tools, leaving the agent to infer contexts.

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

sigil_atap_roll_blockBInspect

Rolls every not-yet-blocked Witness Event for an AIT into one signed ATAP Attestation Block with a profile period_summary, chained onto the prior block.

ParametersJSON Schema
NameRequiredDescriptionDefault
aitYes
Behavior3/5

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

The description discloses key behaviors: it processes pending events, signs the block, chains it to the prior block, and uses a specific profile ('period_summary'). However, with no annotations, it lacks details on permissions, idempotency, or failure modes, leaving gaps for an agent.

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?

The description is a single sentence that conveys the core action without unnecessary words. It is front-loaded with the verb and object, making it easy to parse. Minor reduction possible by removing 'every not-yet-blocked' but overall efficient.

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

Completeness3/5

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

Given one parameter and no output schema, the description explains the tool's primary function. However, it omits return value details, error conditions, and prerequisites (e.g., AIT registration status). An agent may need additional context to use it confidently.

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

Parameters2/5

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

The schema has one required parameter 'ait' with no description (0% coverage). The description mentions 'for an AIT' but does not explain the format or semantics of the 'ait' string, such as what constitutes a valid AIT identifier or where to obtain it.

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 uses a specific verb 'Rolls' and clearly identifies the resource: 'not-yet-blocked Witness Event for an AIT' to create a signed ATAP Attestation Block. It differentiates from siblings like sigil_atap_witness and sigil_atap_register_ait by describing a distinct aggregation step.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It does not mention prerequisites like needing registered AITs or pending witness events, nor does it advise against using it in certain contexts.

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

sigil_atap_witnessAInspect

Ingests one agent-reported event (bid:submitted, bid:won, bid:lost, budget:decremented) into an AIT's hash-chained attestation log. Sigil validates the payload (rejecting any PII per ATAP §7.6), classifies the evidence tier — anchored if a bid:submitted cites a valid Sigil token issued for this AIT and matching the bid's supply path, otherwise asserted — derives any constraint:violated events, then chains and signs each event.

supply:verified / supply:rejected are witness-emitted by sigil_verify_supply_path, never accepted here — that is what makes the witnessed tier non-bypassable.

ParametersJSON Schema
NameRequiredDescriptionDefault
aitYes
payloadYes
event_typeYes
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: payload validation, PII rejection, evidence tier classification (anchored vs asserted), derivation of constraint:violated events, and chaining/signing. It also highlights the non-bypassability of the witnessed tier, adding critical context for safe use.

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 densely informative with no redundant sentences. It front-loads the core action, then systematically details validation, classification, and sibling differentiation. Each sentence earns its place, achieving conciseness without sacrificing completeness.

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 the tool has 3 parameters, no output schema, and no annotations, the description is remarkably complete. It covers input semantics, processing logic, and usage boundaries. The agent can confidently invoke the tool based on this description alone.

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 description coverage is 0%, so the description must compensate. It adds meaning by explaining the event_type values and their implications (e.g., bid:submitted leads to anchored if valid token), and describes payload validation rules. However, it does not detail the structure of the `payload` object or `ait` string, leaving some gaps. Still, it provides significant additional semantics beyond 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 clearly states the verb 'ingests' and the resource 'agent-reported events into an AIT's hash-chained attestation log'. It lists the specific event types accepted and distinguishes this tool from its sibling `sigil_verify_supply_path` by noting that supply events are not accepted here, ensuring no confusion.

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?

The description explicitly states when to use this tool (for ingesting bid:* and budget:decremented events) and when not to use it (supply:verified/rejected events are handled by a different tool). It also explains the validation and classification logic, providing clear context for appropriate invocation.

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

sigil_receipt_generateAInspect

Assembles the ATAP v0.1 §7.5 Receipt ZIP for an AIT — the signed Receipt (manifest.json), the AIT, the Attestation Block chain, the witness public key, a tier-graded summary.json, the bundled verify.sh reference verifier, and the witness events + sigil_tokens as profile artifacts. Any pending events are rolled into a final block first.

The ZIP verifies offline — unpack it and run verify.sh; keys are at https://tunnelmind.ai/atap/keys. The summary grades every event as witnessed, anchored, or asserted and reports the anchored-bid coverage ratio.

ParametersJSON Schema
NameRequiredDescriptionDefault
aitYes
formatNofull
Behavior4/5

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

Despite no annotations, the description discloses behavioral details: pending events are rolled into a final block, the ZIP verifies offline, and the summary grades events. This adds transparency, though rate limits or side effects are not mentioned.

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?

The description is somewhat lengthy but each sentence adds value, detailing contents and verification. It is front-loaded with the main purpose. Minor redundancy could be trimmed, but overall it is structured and informative.

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

Completeness3/5

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

Given no output schema and annotations, the description covers many aspects but leaves gaps: it does not explain what an AIT is, the return format (file or buffer), or how the output is delivered. It adequately explains content but not handling details.

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

Parameters2/5

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

With 0% schema coverage, the description must explain parameters. It mentions 'AIT' but does not clarify the 'ait' parameter format or that 'format' controls whether output is 'full' or 'summary'. The description misses key parameter semantics.

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 clearly states the tool assembles a Receipt ZIP for an AIT, listing its contents and verification steps. It distinguishes from siblings by referencing ATAP v0.1 §7.5 and specific artifacts.

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

Usage Guidelines3/5

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

The description implies usage for generating a receipt package but does not provide explicit guidance on when to use this tool versus alternatives like 'generate_receipt' or 'verify_receipt'. No when-not or alternative comparisons.

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

sigil_score_batchAInspect

Scores up to 200 entities in one round-trip — built for agents evaluating many supply sources during campaign setup. Per-item parse failures are returned inline; the batch never fails as a whole.

An optional weights object re-weights every entity in the call.

ParametersJSON Schema
NameRequiredDescriptionDefault
weightsNoOptional custom weights: an object of `{ type: { component: weight } }`.
entity_idsYes
Behavior3/5

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

With no annotations, the description must fully disclose behavior. It does mention that per-item parse failures are returned inline and the batch never fails as a whole, which is critical. However, it lacks details on return format, authentication requirements, or rate limits, leaving gaps.

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 highly concise: three sentences total, front-loaded with core purpose, then key behavioral trait, then optional parameter. Every sentence adds value with no redundancy or fluff.

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

Completeness3/5

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

The tool has no output schema, so the description should explain return values; it only implies inline error handling. It lacks details on what 'scores' means, response structure, and prerequisites. While it covers the main purpose and key behavior, it is not fully complete for an unannotated tool.

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

Parameters3/5

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

Schema description coverage is 50% (weights has a description, entity_ids does not). The description adds the cap of 200 for entity_ids and explains that weights re-weights every entity, adding value beyond the schema. Yet, for a low-coverage scenario, it does not fully compensate by describing both parameters in detail.

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 clearly states the tool scores up to 200 entities in one round-trip, specifying the verb 'scores' and the resource 'entities'. It also provides context ('built for agents evaluating many supply sources during campaign setup'), distinguishing it from sibling tools like sigil_score_entity which handle single entities.

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 clear usage context ('evaluating many supply sources during campaign setup') and implies efficiency with 'one round-trip'. However, it does not explicitly contrast with singular alternatives or specify when not to use this batch tool, though the context is sufficient for appropriate selection.

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

sigil_score_entityAInspect

Returns the pre-computed 0.0–1.0 trust score for one entity, its component breakdown, and the 14-day trend. Scores are refreshed daily by a database job — this endpoint never recomputes from raw data, so it is fast and deterministic.

entity_id is {entity_type}:{key} — e.g. publisher:nytimes.com or ssp:pubmatic.com. Entity types: publisher, ssp, dsp, app_bundle (publishers and SSPs are scored today).

v1 evaluates structural components only (ads_txt_health, supply_chain_directness, historical_stability for publishers; supply_reach, directness for SSPs). The not_evaluated list names spec components without an enrichment path yet.

Optional weights query param (URL-encoded JSON) re-weights the stored components for this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
weightsNoURL-encoded JSON: an object of `{ type: { component: weight } }`.
entity_idYes
Behavior5/5

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

With no annotations provided, the description carries full burden. It discloses: returns score, breakdown, trend; scores are refreshed daily; fast and deterministic; never recomputes; entity format; v1 components; not_evaluated list; optional weights. This is highly transparent about behavior and limitations.

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?

The description is around 150 words, well-structured with front-loaded purpose, then entity_id format, v1 details, and optional weights. Every sentence adds value with minimal redundancy. Could be slightly tighter but is consistently focused.

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?

Despite no output schema, the description covers the tool's behavior comprehensively: pre-computed scores, daily refresh, entity format, v1 components, not_evaluated list, and optional weights. An agent can fully understand what to expect from the tool's response.

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?

Only 50% of parameters have schema descriptions, but the description adds significant meaning: it explains entity_id format with examples and entity types, and defines weights as URL-encoded JSON for re-weighting. This compensates for the schema gap and provides clarity beyond 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 clearly states the tool 'Returns the pre-computed 0.0–1.0 trust score for one entity, its component breakdown, and the 14-day trend.' This is a specific verb and resource, and distinguishes from siblings like sigil_score_batch and sigil_score_weights. It also explains that scores are pre-computed and refreshed daily, setting clear expectations.

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 context on when to use the tool (e.g., fast and deterministic, never recomputes) and explains the entity_id format and accepted types. While it doesn't explicitly say 'use for single entity instead of batch', the context signals and sibling names imply the appropriate use case. It lacks an explicit exclusion of alternatives.

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

sigil_score_weightsAInspect

Returns the active, versioned default weights used to combine an entity's trust-score components, plus the list of spec components that are not yet evaluated. Pass a custom weights object to sigil_score_batch to re-weight without changing the defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the operation returns data without modification ('without changing the defaults'). However, it does not explicitly state that it is a read-only operation or mention any required permissions, but the non-destructive nature is implied.

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 two sentences, front-loading the main functionality in the first sentence and providing context in the second. Every sentence adds value, no redundancy.

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 the tool has no parameters and no output schema, the description adequately covers what it returns (default weights and unevaluated components) and how to use a sibling for customization. It lacks specific details about the return format but is sufficient for a straightforward read tool.

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?

There are no parameters, so schema coverage is 100% by default. The description adds no parameter information because none exist, which is appropriate. Baseline for zero parameters is 4.

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 clearly states the tool 'returns the active, versioned default weights' and 'the list of spec components that are not yet evaluated.' It uses a specific verb and resource, distinguishing itself from siblings like sigil_score_batch which accepts custom weights.

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?

The description explains when to use this tool (to get default weights) and explicitly suggests an alternative: 'Pass a custom weights object to sigil_score_batch to re-weight without changing the defaults.' This provides clear usage guidance.

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

sigil_traverseAInspect

Reconstructs the supply paths for a publisher domain from Sigil's own crawl and returns them ITEMIZED — distinct from sigil_verify_supply_chain (which verifies a schain the caller brings) and from signal_dark_pool_risk (which returns only aggregate counts). Every SSP the publisher declares it sells through is joined to that SSP's identity and classified two-sided against the SSP's sellers.json: corroborated (seat present), contradicted (SSP crawled but seller_id absent — real risk), unchecked (SSP not yet crawled — not risk). Each returned path also carries resells_to, one level of downstream reseller expansion.

The list is ordered riskiest-first (contradicted, then reseller) so a truncated page is still the most useful; the supply_paths counts are always over the FULL set. in_supply_graph:false when the domain is not a known publisher.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax paths returned (default 200, hard cap 500).
domainYesPublisher hostname to traverse.
Behavior5/5

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

With no annotations provided, the description fully carries the burden of disclosure. It details the risk-classification logic (corroborated, contradicted, unchecked), ordering riskiest-first, reseller expansion, and the in_supply_graph flag. This is comprehensive for a query tool.

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?

The description is information-dense and well-structured, starting with the main function and distinction, then classification details, then ordering. While a bit lengthy, every sentence adds value. Could be slightly tighter but still effective.

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 no output schema, the description adequately explains the output structure (itemized paths, classification, resells_to, in_supply_graph flag) and ordering. It also covers the edge case of domain not being a known publisher. Missing error handling details but sufficient for a query tool.

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?

The input schema has 100% coverage with descriptions for both parameters. The description adds value by explaining how the limit parameter interacts with ordering (riskiest-first truncation) and that counts are over the full set, going beyond the schema's simple bounds description.

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 clearly states the tool reconstructs supply paths for a domain and returns them itemized. It explicitly distinguishes from two siblings: sigil_verify_supply_chain (verifies a given schain) and signal_dark_pool_risk (aggregate counts), leaving no ambiguity about its unique purpose.

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 clear context for when to use this tool versus alternatives by naming specific sibling tools and their different functions. However, it does not exhaustively compare with all relevant siblings (e.g., sigil_verify_supply_path), and lacks explicit 'when not to use' guidance, though the context is sufficient.

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

sigil_verify_adscertAInspect

Reports whether a domain publishes ads.cert (IAB Tech Lab Authenticated Connections) DNS records — a readiness signal showing the domain supports cryptographically authenticated ad-tech connections. This is not signature verification: ads.cert is pairwise, so verifying a signed bid request requires Sigil to be a delegated participant (a future build). DNS-only and stateless.

Inputs:

  • domain (query, required): Domain to check.

Returns:

  • adscert_ready: true | false | null (DNS lookup failed).

  • adscert_records: TXT values at _adscert.{domain}.

  • delegation_records: TXT values at _delegated._adscert.{domain}.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
Behavior4/5

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

With no annotations, the description fully discloses behavior: stateless, DNS-only, and not signature verification. It also details return fields, aiding agent understanding.

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?

The description is well-structured with clear sections but could be slightly more concise. It front-loads the core purpose and provides necessary details without excess.

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 no output schema, the description includes return fields and explains limitations (e.g., delegation requirement). It is complete for a simple DNS-checking tool.

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?

The description explicitly defines the single parameter 'domain' with its type, requirement, and purpose ('Domain to check'), adding value beyond the schema's minimal 'string' definition.

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 clearly states the tool's purpose: reporting whether a domain publishes ads.cert DNS records. It distinguishes itself from 'signature verification' and is unique among siblings like sigil_verify_ads_txt.

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 explains it is 'DNS-only and stateless' and clarifies that signature verification requires a future build. It implies use for readiness checks but does not explicitly contrast with all sibling tools.

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

sigil_verify_ads_txtAInspect

Confirms whether an SSP/exchange is authorized to sell a publisher's inventory according to that publisher's ads.txt. This is a cache lookup against ads.txt files crawled daily across the top 10,000 publisher domains — it does NOT fetch the publisher's ads.txt live, so it is fast and adds no latency to a real-time bidding decision.

Use this tool when:

  • You are an ad-buying agent and want to confirm, pre-bid, that a supply path (publisher → exchange → seller_id) is legitimate.

  • You are detecting domain spoofing or unauthorized resale in a bid stream.

  • You want to check whether a seller is listed DIRECT or RESELLER.

Do NOT use this tool when:

  • You want a full supply-path trust score — that endpoint is Sigil P31.

  • You want surveillance tracker data for the domain — use get_domain.

Inputs:

  • publisher_domain (body, required): Publisher domain, e.g. nytimes.com. A www. prefix and scheme/path are stripped automatically.

  • exchange_domain (body, required): The exchange/SSP domain as it appears in ads.txt, e.g. google.com, amazon-adsystem.com.

  • seller_id (body, required): The publisher's seller/account ID at that exchange, e.g. pub-4177862836555934. Matched exactly.

  • seller_type (body, optional): DIRECT or RESELLER. When supplied it is checked against the ads.txt entry; a mismatch is reported as a warning.

  • resolve_chain (body, optional): When true, a matched RESELLER entry is cross-checked against the exchange's sellers.json (one authoritative hop).

Returns:

  • verified: true (entry found), false (confidently not listed), or null (ads.txt could not be retrieved — indeterminate).

  • confidence: high | degraded | low | unknown.

  • seller_entry: the matched ads.txt line (line number, raw text, parsed fields) when verified is true; otherwise null.

  • ads_txt_parse_status, ads_txt_last_parsed, stale: provenance of the cached crawl this answer is derived from.

  • reseller_chain: empty unless resolve_chain: true and the matched entry is RESELLER — then it carries the sellers.json cross-check for the seller.

  • warnings: actionable flags, e.g. publisher_not_in_corpus, publisher_has_no_ads_txt, seller_type_mismatch, ads_txt_cache_stale.

Cost:

  • Counts as one request against the daily rate limit.

Latency:

  • Typical: <50ms (single cache lookup, no outbound fetch). p99: <120ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
seller_idYesPublisher's seller/account ID at the exchange
seller_typeNoOptional — checked against the ads.txt entry
resolve_chainNoWhen true, a matched RESELLER entry is cross-checked against the exchange's sellers.json
exchange_domainYesExchange/SSP domain as listed in ads.txt
publisher_domainYesPublisher domain (www. prefix and scheme stripped)
Behavior5/5

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

No annotations provided, but description thoroughly covers behavioral traits: cache-based lookup (not live fetch), no added latency, daily rate limit, typical latency, and non-destructive nature. No contradictions.

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?

Well-structured and front-loaded, but slightly verbose. Every section adds value, but some details (e.g., cost, latency) could be more concise. Still excellent.

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?

With no output schema, description provides detailed return fields, edge cases, warnings, and provenance information. Covers all necessary aspects for an agent to use the tool correctly.

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 coverage is 100%, but description adds significant context: automatic URL stripping, exact matching, behavior of optional parameters like resolve_chain, and clarification of seller_type matching.

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 clearly states the tool confirms SSP/exchange authorization via ads.txt cache lookup. It distinguishes itself from siblings like sigil_verify_ads_txt_batch and related tools such as get_domain.

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 lists when to use (pre-bid verification, spoofing detection, checking seller type) and when not to use (full supply-path trust score, surveillance tracker data) with alternative tool mentions.

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

sigil_verify_ads_txt_batchAInspect

Runs up to 100 ads.txt verifications in a single call — the endpoint an ad-buying agent uses for pre-bid checks across a whole campaign's supply. Each item is the same shape as sigil_verify_ads_txt. Per-item validation failures are reported inline; the batch never fails as a whole. Publisher records are fetched once per unique domain.

Use this tool when:

  • You are evaluating many supply paths at once (campaign setup, SPO sweep).

  • You want one round-trip instead of N calls to sigil_verify_ads_txt.

Inputs:

  • items (body, required): Array of 1–100 verification requests, each { publisher_domain, exchange_domain, seller_id, seller_type? }.

  • resolve_chain (body, optional): Applies to every item — when true, a matched RESELLER entry is cross-checked against the exchange's sellers.json.

Returns:

  • count: number of result entries (matches items length, in order).

  • verified_count: how many resolved to verified: true.

  • results: array aligned to items. Each entry is either a verification result with ok: true and input_index, or { ok: false, input_index, error, message } for an invalid item.

Cost:

  • Counts as one request against the daily rate limit.

Latency:

  • Typical: <150ms. With resolve_chain: true, add one sellers.json fetch per unique exchange (edge-cached 12h after the first fetch).

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes1–100 verification requests
resolve_chainNoResolve reseller chains for every RESELLER item
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: per-item validation failures are reported inline, the batch never fails as a whole, publisher records are fetched once per unique domain, and latency details are provided for with/without resolve_chain. Cost and rate limit impact are also stated.

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 well-organized into sections for purpose, usage, inputs, returns, cost, and latency. Every sentence adds value, and the front-loaded purpose immediately clarifies the tool's role. No redundancy or filler.

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?

The description covers all essential aspects: inputs (including optional parameter), outputs (array structure with alignment), error handling (inline per-item errors), cost (counts as one request), and latency (with/without resolve_chain). No output schema exists, but the return format is fully explained.

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?

Despite 100% schema coverage, the description adds significant meaning: it explains the items array shape (same as single-verify tool), the resolve_chain cross-checking behavior, and the return structure (count, verified_count, results array with ok/error entries). This contextualizes parameters beyond 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 clearly states the verb (runs verifications), resource (ads.txt), and scope (batch of up to 100). It explicitly distinguishes from the sibling `sigil_verify_ads_txt` by mentioning it serves as a batch counterpart for pre-bid checks across a campaign's supply.

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?

The description provides explicit 'Use this tool when' guidelines, specifying two scenarios: evaluating many supply paths at once and wanting a single round-trip instead of multiple calls. This clearly differentiates when to use this batch tool versus the single-item sibling.

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

sigil_verify_app_bundleAInspect

Verifies that a mobile or CTV app bundle ID actually exists in the relevant app store — used to detect bundle spoofing in bid requests.

Platform support (v1):

  • ios: verified live via Apple's iTunes Lookup API.

  • android: verified live via the Google Play store listing page.

  • ctv_* / web: no public store API — returns verified=null.

Inputs:

  • bundle_id (body, required): e.g. com.nytimes.NYTimes.

  • platform (body, required): ios | android | ctv_roku | ctv_fire | ctv_samsung | ctv_lg | ctv_vizio | web.

  • claimed_developer (body, optional): checked against the store listing.

Returns:

  • verified: true | false | null (not checkable on this platform).

  • store_listing: name, developer, developer_match, store_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYes
bundle_idYes
claimed_developerNo
Behavior4/5

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

With no annotations, the description fully details behavior: APIs used per platform, return values, and limitations (null for ctv/web). It does not mention read-only nature but implies it via verification verb. Reasonably 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 well-structured with clear sections (purpose, platform support, inputs, returns). Uses bullet points for readability. Every sentence adds value, no redundancy.

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 no output schema, the description covers return values with field descriptions. All parameters and platform behaviors are explained. Complete for the tool's scope.

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 coverage is 0%, so description must explain parameters. It does so thoroughly: describes bundle_id format, platform enum with examples, and claimed_developer usage. Adds context beyond schema, such as platform mappings and store-listing checks.

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 clearly states the tool's purpose: verifying app bundle IDs to detect spoofing. It distinguishes from sibling tools by specifying the 'app bundle' context and listing supported platforms, which differentiates it from other sigil_verify_* tools.

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 clear usage context by listing platform support and explaining when verification returns null. It lacks explicit when-not-to-use guidance or alternatives among siblings, but the supported platforms are clearly delineated.

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

sigil_verify_domainAInspect

Confirms a publisher controls a domain by checking for a DNS TXT record the owner publishes under _tunnelmind.{domain}. A DNS record can only be set by whoever controls the zone, so its presence proves control — a stronger signal than ads.txt, which is just a file anything in the request path can serve.

Use this tool when:

  • You want proof a publisher actually owns the domain it claims.

  • You are distinguishing publishers who have opted into Sigil verification.

Inputs:

  • domain (query, required): Publisher domain. www. and scheme stripped.

Returns:

  • verified: true (record found), false (absent), or null (DNS lookup failed).

  • expected: the exact TXT record the owner must publish to verify.

  • found_records: TXT values currently present at _tunnelmind.{domain}.

  • checked_at: ISO 8601 timestamp of the live DNS lookup.

Cost:

  • Counts as one request against the daily rate limit.

Latency:

  • Typical: <300ms (one DNS-over-HTTPS lookup).

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
Behavior5/5

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

No annotations provided, but the description compensates fully. It details the mechanism (DNS lookup), return values, cost (daily rate limit), and latency (<300ms). No contradictions.

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?

Well-organized with sections (description, when to use, inputs, returns, cost, latency). Every sentence adds value; no fluff. Front-loaded with purpose.

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?

Despite no output schema, the description fully explains all return fields. It also covers cost and latency, enabling the agent to set expectations. Complete for a verification tool.

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 coverage is 0% (only type string), but the description adds critical detail: the domain is stripped of 'www.' and scheme, and explains its purpose. This far exceeds 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 clearly states the tool confirms domain ownership via DNS TXT record, with a strong verb ('Confirms') and resource ('domain'). It distinguishes from the sibling sigil_verify_ads_txt by highlighting that DNS proof is stronger than ads.txt.

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?

Explicit 'Use this tool when' section lists two specific scenarios. It directly contrasts with alternative verification methods, providing clear guidance on when to use this tool versus others.

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

sigil_verify_ip_typeAInspect

Classifies an IPv4 or IPv6 address by network type — the high-value ad-fraud signal being datacenter traffic posing as residential or living-room (CTV) devices. IP→ASN resolution uses Team Cymru's public service; the ASN is then classified by its registered organization name.

PRIVACY: the IP is used for lookup only — never logged, never stored.

Inputs:

  • ip (query, required): IPv4 or IPv6 address.

Returns:

  • ip_type: datacenter | residential | mobile | unknown.

  • confidence: high | medium | low.

  • asn, asn_name: the resolved autonomous system.

  • scry_signals: reserved for Scry corpus cross-reference (empty in v1).

Latency:

  • Typical: 100-250ms (two live DNS lookups).

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes
Behavior5/5

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

No annotations, so description fully covers behavior: uses Team Cymru service, privacy (IP never logged/stored), latency (100-250ms), and classification method. Provides complete transparency without contradictions.

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?

Well-structured into purpose, privacy, inputs, returns, latency. Front-loaded with main purpose. Every sentence is informative and necessary.

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 single parameter and no output schema, description lists all return fields and behavior. Complete and self-contained for the tool's complexity.

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 coverage is 0%, but description adds essential meaning: specifies ip is a required query parameter for IPv4 or IPv6 addresses. Adds format and location info not in 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?

Description clearly states verb 'classifies' and resource 'IPv4 or IPv6 address', with explicit ad-fraud use case. Distinguishes from siblings like sigil_verify_domain by focusing on network type classification.

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

Usage Guidelines3/5

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

Describes use case (ad-fraud) and return values, but lacks explicit guidance on when to use versus alternatives (e.g., ghostroute_asn_lookup). No when-not or alternative tool mentions.

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

sigil_verify_supply_chainAInspect

The bid-time contract. Pass the SupplyChain object from an OpenRTB bid request (source.ext.schain) verbatim, plus the originating site domain or app bundle. Sigil verifies, per node and in aggregate:

  • origin ads.txt — the publisher's ads.txt authorizes node[0] (asi + sid).

  • per node — the node's asi sellers.json declares the node's sid.

  • owner-domain — node[0]'s sellers.json seller domain matches the publisher's ads.txt OWNERDOMAIN / MANAGERDOMAIN (spec §3.5.1).

  • schain.complete — an incomplete chain caps the verdict at warn.

OpenRTB field mapping: site.domainsite_domain; app.bundleapp_bundle; source.ext.schainschain. An app_bundle origin's ads.txt check is not_evaluated pending app-ads.txt resolution.

Returns a per-node result array, an aggregate verdict (pass/warn/fail/unknown), recommendations, and a signed sigil_token.

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerNoOptional. When present and the verdict is not `fail`, Sigil opportunistically records a `buys_through` edge linking the buyer entity to the resolved DSP. Side-effect persistence only — never affects the verdict or response shape, silent on every failure path. Requires `entity_slug` plus one of `dsp_domain` / `dsp_id`.
schainYes
app_bundleNo
site_domainNo
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: the verification logic per node and aggregate, the handling of schain.complete, and the side-effect of the optional buyer parameter (records a buys_through edge without affecting verdict). It also notes the limitation for app_bundle origins, providing transparency beyond the schema.

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?

The description is moderately long but well-organized, starting with a clear purpose statement followed by bullet-pointed verification steps. Each sentence contributes to understanding. It could be slightly more concise, but the structure aids readability.

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 the tool's complexity and lack of output schema, the description thoroughly explains the return values (per-node result array, aggregate verdict, recommendations, sigil_token) and the verification logic. It covers all necessary aspects for an agent to understand the tool's behavior and output.

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 description coverage is low (25%), but the description compensates by explaining the role of schain, site_domain, and app_bundle in the verification process. For the buyer parameter, it details the side-effect behavior. While the schain structure is in the schema, the description adds context on how it is used together, adding significant value.

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 clearly defines the tool's purpose: verifying the supply chain from an OpenRTB bid request using the SupplyChain (schain) object and site domain or app bundle. It lists specific checks (origin ads.txt, per node, owner-domain, schain.complete) and distinguishes it from sibling tools like sigil_verify_ads_txt or sigil_verify_domain, which have different scopes.

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 explains when to use the tool: pass the SupplyChain object from an OpenRTB bid request along with site_domain or app_bundle. It provides context on field mapping and notes that app_bundle ads.txt checks are not_evaluated. However, it does not explicitly state when not to use it or suggest alternative tools, but the context is sufficient for correct selection.

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

sigil_verify_supply_pathAInspect

The core Sigil pre-bid call. Submit a supply path; Sigil composes its individual checks into one trust verdict and returns a signed sigil_token the agent can attach to its bid as proof of verification.

Checks composed:

  • ads_txt — exchange authorized in the publisher's ads.txt.

  • datacenter_ip — is the IP a datacenter posing as a real user.

  • fraud_signals — is the IP in Scry's attacker-intelligence corpus.

  • bundle_verified — does the app bundle exist in its store.

  • domain_authenticity / entity_reputation — reserved, not evaluated in v1.

Each evaluated check yields pass/warn/fail; trust_score is their weighted mean (override weights per request); verdict is pass/warn/fail/unknown (override thresholds).

PRIVACY: ip_address is used for lookup only — never logged, never stored, never placed in the sigil_token. geo is accepted but unused.

Returns: trust_score (0-1 or null), verdict, checks, recommendations, sigil_token (signed, 5-minute lifetime).

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerNoOptional. When present and the verdict is not `fail`, Sigil opportunistically records a `buys_through` edge linking the buyer entity to the resolved DSP. Side-effect persistence only — never affects the verdict or response shape, silent on every failure path. Requires `entity_slug` plus one of `dsp_domain` / `dsp_id`.
weightsNoPer-check weight overrides
thresholdsNo{ pass, fail } verdict cutoffs
supply_pathYes
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: it explains the checks composed, the weighted trust_score, privacy policy on ip_address, side-effect persistence for buyer recording, and return structure. There are no contradictions.

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?

The description is well-structured, starting with the core purpose, then listing checks, privacy, and return. It is somewhat lengthy but every section adds value. Slight room for tightening.

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 the complexity (nested objects, multiple checks, privacy, side-effects) and no output schema, the description thoroughly covers the tool's behavior, return fields, and edge cases (e.g., silent failures, privacy). An agent can confidently invoke this tool.

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 description coverage is 75%, so baseline is 3. The description adds value by explaining the context of parameters (e.g., the checks, weights, thresholds). However, it does not elaborate on each parameter beyond what the schema already provides, so a 4 is appropriate.

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 clearly identifies the tool as the core Sigil pre-bid call that submits a supply path and returns a signed sigil_token with a composited trust verdict. It distinguishes itself from sibling tools that perform individual checks (e.g., sigil_verify_ads_txt) by explaining it composes multiple checks into one verdict.

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 states the tool is for submitting a supply path to get a composited trust verdict, implying it should be used when a full supply path verification is needed. However, it does not explicitly state when not to use it or provide direct guidance on choosing this over individual check tools, which slightly lowers the score.

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

sigil_verify_tokenAInspect

Verifies the authenticity and expiry of a sigil_token returned by sigil_verify_supply_path. Anyone can call this — no key needed; Sigil verifies the Ed25519 signature server-side. Tokens live 5 minutes.

Returns valid (boolean), reason (when invalid: malformed / expired / bad_signature / unsigned), and the decoded payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYes
Behavior5/5

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

With no annotations, the description fully discloses behavior: no authentication needed, server-side Ed25519 signature verification, token expiry, and return structure including valid boolean, reason (with specific failure types), and decoded payload. This is comprehensive.

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 three sentences, each serving a distinct purpose: purpose/context, access/permissions, and output details. No fluff, front-loaded with the core action.

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?

The tool is simple with one parameter and no output schema. The description explains input requirements, processing, output structure, and failure modes, making it self-contained and complete for an agent to use correctly.

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?

The single parameter 'token' has no description in the schema (0% coverage). The description adds critical meaning by explaining it is a sigil_token from sigil_verify_supply_path and describing the verification process. This fully compensates for the schema gap.

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 clearly states the tool verifies the authenticity and expiry of a sigil_token, specifying the token's origin from sigil_verify_supply_path. This differentiates it from sibling tools like sigil_verify_adscert or sigil_verify_domain.

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 notes that anyone can call this without a key, implying public access. It mentions token lifetime (5 minutes) but does not explicitly state when not to use or suggest alternatives. However, referencing the token source provides context.

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

signal_dark_pool_riskAInspect

Reconciles every sell path a publisher declares (sells_through) against each SSP's own sellers.json (exchange_seat) and keeps three classes strictly separate: corroborated (seat present), contradicted (SSP crawled but seller_id absent — real risk), and unchecked (SSP not yet crawled — excluded from risk, lowers confidence). Combined with publisher-side ads.txt opacity. Two-sided corroboration is the cross-lens moat — it catches unauthorized resale a one-sided ads.txt read cannot.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesPublisher hostname.
Behavior4/5

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

Without annotations, the description discloses the internal logic (three risk classes, combined with ads.txt opacity) and the implication that unchecked sellers lower confidence. However, it does not specify whether the tool modifies state, requires authentication, or has rate limits. The behavioral insight is substantial but not exhaustive.

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?

The description is a single dense paragraph that efficiently conveys the core logic. It front-loads the main verb 'reconciles' and immediately defines the output classes. While compact, it could be slightly restructured for readability, but it earns its keep.

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

Completeness2/5

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

Given the lack of an output schema, the description should describe the return format or structure; it only mentions the three classification classes but not how they are presented (e.g., list, object, risk score). The agent cannot fully anticipate the tool's output without additional context.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description reiterates that the parameter is 'domain' (publisher hostname) without adding new semantics beyond the schema. No additional constraints or formatting details are provided.

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 clearly states the tool's function: reconciling publisher sell paths against SSP sellers.json to identify dark pool risk. It specifies three outcome classes (corroborated, contradicted, unchecked) and mentions the two-sided corroboration approach, making the purpose distinct and actionable.

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

Usage Guidelines3/5

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

The description provides a clear use case (detecting unauthorized resale via dark pools) but does not explicitly state when to prefer this tool over siblings like cross_lens_lookup or sigil_verify_ads_txt. No guidance on when not to use it or prerequisites is given.

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

signal_halo_scoreAInspect

Scores an entity by the trust character of its neighbours — the SSPs its publishers sell through and the DSPs it buys through. Reports neighbour counts, mean/min neighbour trust, and how many neighbours are adversary-classified (P46). derived.halo_score (0–100, or null when no neighbour has a computed trust) is mean neighbour trust dragged down by adversary-neighbour share. Evidence about an entity's company, not a persisted verdict — no profile poisoning.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_slugYesStable kebab-case entity identifier.
Behavior4/5

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

With no annotations, description fully discloses computation details: mean trust dragged down by adversary share, that it's evidence about company not persisted verdict, and no profile poisoning. Could mention required permissions or rate limits, but current coverage is comprehensive.

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?

Description is concise at ~80 words, front-loading main purpose then details. Could break into bullet points for easier parsing, but no unnecessary words.

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?

For a single-parameter tool with no output schema, description fully explains inputs, outputs, computation, and limitations (not persisted verdict). Covers all necessary context for an agent to use correctly.

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

Parameters3/5

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

Only one parameter with full schema description (100% coverage). Description adds context about entity role but doesn't significantly expand beyond 'stable kebab-case identifier'. Baseline 3 appropriate as schema does most of the work.

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?

Description uses specific verb 'scores' and resource 'entity by trust character of its neighbours'. Clearly separates from sibling tools like 'sigil_score_entity' by focusing on network relationships and providing detailed output metrics (neighbour counts, mean/min trust, adversary count, halo score).

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

Usage Guidelines3/5

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

Description implies usage for assessing trust based on network ties, but lacks explicit guidance on when to use over alternatives like 'sigil_score_entity' or 'signal_dark_pool_risk'. No exclusions or conditions provided.

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

signal_team_signalAInspect

Surfaces other entities that operate as a coordinated team with this one: they share a NARROWLY-held direct seller account (2–8 entities — network house accounts shared by hundreds are separated into house_accounts_excluded, not counted) or co-own an exchange seat. derived.team_signal (0–100) is a coordination magnitude over teammate count, shared-account breadth, and co-owned seats.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_slugYesStable kebab-case entity identifier.
Behavior3/5

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

With no annotations provided, the description must disclose behavior. It explains that the output includes a derived.team_signal (0–100) and that large house accounts are excluded. However, it does not mention read-only nature, permissions, rate limits, or side effects. The description adds value but misses some behavioral context expected for a tool with no annotations.

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 two concise sentences with no redundancy. The first sentence defines the core function, and the second explains the output signal. Every word adds value, making it highly efficient and well-structured.

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 the tool has one parameter, no output schema, and no annotations, the description covers the purpose and the nature of the return value (derived.team_signal). It could be slightly more explicit about the output structure (e.g., whether it returns a list of entities or just a score), but it is fairly complete for a simple signal tool.

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

Parameters3/5

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

Schema coverage is 100% as the single parameter entity_slug is described. The description does not add parameter-specific details beyond the schema, such as format or constraints. Baseline 3 is appropriate since the schema already documents the parameter adequately.

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 clearly states the tool's function: it 'surfaces other entities that operate as a coordinated team' based on shared accounts or exchange seat co-ownership. The verb 'surfaces' is specific, and the distinction from network house accounts differentiates it from potential confusion. It stands apart from sibling signal tools by focusing on team coordination.

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

Usage Guidelines3/5

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

The description implies usage for identifying coordinated teams but provides no explicit guidance on when to use this tool versus alternatives like signal_dark_pool_risk or signal_halo_score. There are no stated conditions, prerequisites, or exclusions, leaving the agent to infer context from the purpose alone.

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

signal_tracker_densityBInspect

Observed component counts first, a labelled derived roll-up second. The components — data_categories, supply-surface counts (ssp + publisher + dsp + owns_seat + buys_through), and corroborating sources — are facts. derived.tracker_density (0–100) is a weighted blend of those counts, not a measurement; data_cost_usd is deliberately excluded (non-zero only for a curated seed, so weighting by it would fabricate precision). Anchors the surveillance_bigtech adversary class for the cross-lens classifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_slugYesStable kebab-case entity identifier ([a-z0-9-], 1–255 chars).
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the tool returns component counts and a derived density, and explicitly notes what is excluded (data_cost_usd) and that the density is a weighted blend, not a measurement. However, it does not mention side effects, authorization requirements, or rate limits.

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

Conciseness3/5

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

The description is a single paragraph of moderate length. It contains technical jargon that may reduce clarity, and the structure could be improved with bullet points or clearer separation of output components.

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 the simple input (one parameter) and no output schema, the description adequately explains what the tool returns—component counts and a derived density—and its relevance to the cross-lens classifier. It is nearly complete, though it could mention the return format or pagination if applicable.

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

Parameters3/5

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

The input schema already covers the single parameter (entity_slug) with a description of its format and constraints. The tool description adds no additional meaning beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

The description clearly states that the tool returns observed component counts and a derived tracker density roll-up, and it mentions its role in anchoring a specific adversary class for the cross-lens classifier. However, it lacks an explicit verb like 'get' or 'compute' to indicate the action, and it does not differentiate from sibling tools.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like signal_dark_pool_risk or signal_halo_score. It explains internal details but does not state the intended use case or context for invocation.

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

stream_taskAInspect

Opens a persistent SSE connection that emits events as the task progresses. The stream closes automatically when the task reaches a terminal state or after ~90 seconds (timeout). Heartbeat comments are sent every ~15 seconds to keep the connection alive through proxies.

Event types:

  • status — emitted when status changes (pending → running → complete/failed)

  • result — emitted on complete with the full result payload

  • error — emitted on failed, cancelled, or expired with error info

  • SSE comment (: heartbeat) — keepalive, no data

Use this tool when:

  • You want real-time progress without polling.

  • You are in an environment that supports SSE (EventSource API).

Do NOT use this tool when:

  • You want a simple one-shot status check — use get_task instead.

  • Your HTTP client doesn't support streaming responses.

Inputs:

  • task_id (path, required): 26-char ULID.

Returns:

  • SSE stream (text/event-stream). Each event is event: <type>\\ndata: <json>\\n\\n.

Cost:

  • Free. Counts as one request against rate limits when the stream opens.

Latency:

  • First event: <200ms. Stream duration: up to 90s.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
Behavior5/5

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

With no annotations, the description fully discloses behavior: stream auto-closes on terminal state or ~90s timeout, heartbeats every ~15s, event types (status, result, error, heartbeat), cost (free, counts as one request), and latency (<200ms first event, up to 90s duration).

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?

Well-structured with sections: purpose, event types, usage guidelines, inputs, returns, cost, latency. Every sentence is informative and front-loaded with the core purpose.

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 no annotations, no output schema, and 0% schema coverage, the description is remarkably complete: covers real-time behavior, event types, parameter, return format, cost, and latency. An agent can fully understand the tool.

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 0%, so description compensates by adding meaning: task_id is a path parameter, required, 26-char ULID. This adds location context not in schema, though the pattern defines the format.

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 clearly states it opens a persistent SSE connection that emits events as the task progresses. It distinguishes itself from sibling tools like get_task, which is a one-shot status check, by focusing on real-time streaming.

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 states when to use (real-time progress without polling) and when not to use (simple one-shot check, unsupported HTTP client). Names alternative: get_task.

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

verify_receiptAInspect

Tamper-detection verification for TunnelMind surveillance receipts. Submit the receipt ID, the SHA-256 content hash, and the Ed25519 signature from the receipt document. The registry compares these against what was recorded at issuance time. Returns VALID if both match exactly, INVALID with a specific mismatch reason otherwise.

Use this tool when:

  • You received a surveillance receipt document and want to verify it hasn't been altered.

  • You are programmatically checking receipt authenticity in an agent workflow.

  • You want to prove to a third party that a receipt is genuine.

Do NOT use this tool when:

  • You only want to check existence — use get_receipt instead (no body required).

Inputs:

  • receipt_id (body, required): The receipt's ID field from the document.

  • content_hash (body, required): SHA-256 hex hash of the receipt JSON. Max 256 chars.

  • signature (body, required): Ed25519 signature from the receipt document. Max 512 chars.

Returns:

  • valid: boolean. True only if both hash and signature match exactly.

  • status: VALID or INVALID.

  • message: human-readable explanation. On INVALID, specifies whether the hash mismatched, the signature mismatched, or both.

Cost:

  • Free. No API key required.

Latency:

  • Typical: <100ms, p99: <300ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
signatureYesEd25519 signature from the receipt document
receipt_idYes
content_hashYesSHA-256 hex hash of the receipt JSON content
Behavior5/5

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

No annotations exist, so the description carries full burden. It details the comparison process, return values (VALID/INVALID with specific reason), cost (free), and latency (<100ms typical). Contradictions: none.

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 well-structured with sections, bullet points, and clear formatting. Every sentence adds value; no fluff.

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?

Despite lacking an output schema, the description fully documents return fields (valid, status, message) and interprets them. Combined with usage guidelines and parameter details, the tool is completely specified.

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 coverage is 67%, but the description adds meaningful context beyond schema descriptions, e.g., 'The receipt's ID field from the document' for receipt_id, and max lengths. It also explains how inputs relate to verification.

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 clearly states it's for tamper-detection verification of surveillance receipts, specifying the inputs and output. It explicitly distinguishes from the sibling tool 'get_receipt' by noting that tool checks existence only.

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?

Provides explicit 'Use this tool when' and 'Do NOT use this tool when' sections, including a clear alternative ('get_receipt'). This gives the agent unambiguous decision criteria.

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

x402_echoAInspect

Validates an agent's x402 v1 client implementation against a TunnelMind surface end-to-end. Two operating modes:

  • mode: "demo" — HMAC over a nonce against a publicly-published secret. Does not move USDC. Smoke proves the WIRE works, not money movement.

  • mode: "x402" — real Coinbase facilitator dispatch (gated on operator wallet provisioning; currently returns "facilitator not configured").

Without an X-PAYMENT header, the endpoint returns HTTP 402 with a standards- compliant accepts[] array (USDC on Base, $0.001).

With a valid X-PAYMENT header (base64-encoded payment payload), echoes the request body and returns an X-PAYMENT-RESPONSE settlement header.

Use this tool when:

  • You are validating your agent's x402 v1 client implementation against a real public endpoint.

  • You want to demonstrate the full 402 → retry → settle wire end-to-end.

Do NOT use this tool when:

  • You need a real paid operation — no TunnelMind production endpoint is gated behind x402 yet.

Inputs:

  • X-PAYMENT (header, optional): base64(JSON) per the x402 v1 spec. Without it, a 402 challenge is returned.

  • Request body (optional): any JSON object to be echoed back on successful payment.

Returns:

  • On no header: HTTP 402 + { x402Version, accepts: [...] }.

  • On valid payment: HTTP 200 + { ok: true, data: { echoed, paid_micro_usdc, x402 } } and an X-PAYMENT-RESPONSE header carrying the settlement record.

  • On invalid payment: HTTP 402 + { error: "invalid payment", reason }.

Discovery:

  • https://tunnelmind.ai/.well-known/x402.json carries the public demo secret and the HMAC construction recipe.

Cost:

  • Free in demo mode (no USDC moved). $0.001 USDC in real-mode (when activated).

Latency:

  • Typical <100ms (demo mode); real mode is bounded by facilitator latency.

ParametersJSON Schema
NameRequiredDescriptionDefault
X-PAYMENTNobase64(JSON) payment payload per the x402 v1 spec. Absent → 402 challenge.
Behavior5/5

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

No annotations provided, so description carries full burden. It fully discloses two operating modes, header handling, response formats, discovery URL, cost, and latency. All behavioral traits are covered without contradiction.

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?

Well-structured with clear sections (modes, usage, inputs, returns, discovery, cost, latency). Front-loaded purpose. Slightly long but each sentence earns place; no redundancy.

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 tool complexity (protocol validation), description is comprehensive: covers parameters, modes, return values, discovery URL, cost, latency. No output schema, but return types are described in detail.

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% (one parameter well described in schema), but description adds significant context: explains optionality triggers 402, request body echoes on success, and protocol behavior. Adds value beyond 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 explicitly states the tool validates an agent's x402 v1 client implementation end-to-end. It distinguishes itself from all siblings by focusing on x402 protocol testing, and provides specific verbs and resources.

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?

Clear when-to-use (validating client, demonstrating full wire) and when-not-to-use (need real paid operation). Includes explicit alternatives and context, such as 'no TunnelMind production endpoint is gated behind x402 yet'.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources