Straelo Relay
Server Details
MCP tools for agents: web research, content extraction, email, DNS, and blockchain intelligence.
- Status
- Healthy
- Uptime
- 96.3% over 39 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 15 tools
Most tools have clearly distinct purposes, reinforced by explicit DO NOT USE cross-references. Minor overlap risks remain between adjacent security/decision tools such as domain_risk_trust_decision vs domain_agent_discovery_check and token_security_decision vs defi_route_decision, but descriptions provide useful boundaries.
All tool names use consistent snake_case and follow a readable domain/resource/action pattern. The terminal action words vary (decision, lookup, check, detection) but predictably correspond to return types rather than reflecting inconsistent naming.
Fifteen tools is well-scoped for a multi-domain relay covering vendor intelligence, domain trust, EVM read-only lookups, DeFi routing, token security, and x402 preflight. Each tool appears to earn its place without excessive surface area.
The surface covers CRUD-like lifecycle needs for vendor-customer intelligence and provides coherent read-only decision and lookup coverage across domains. Some adjacent operations are intentionally absent, such as transaction broadcasting or deeper protocol validation, but they are explicitly out of scope rather than accidental gaps.
Available Tools
15 toolscustomer_vendor_detectionCustomer Vendor DetectionAInspect
Scan a customer domain to detect vendors and technologies currently present using deterministic fingerprints; returns detected technologies with supporting evidence and observation details. Results are point-in-time observations; eligible CSI observations may be persisted best-effort. An empty detection means no supported fingerprint was observed in that scan — it does not prove the domain uses no technology. Side effect: eligible CSI observations may be persisted best-effort to maintain customer-vendor evidence. USE WHEN: an agent needs to determine which supported vendors or technologies are currently detected on a specific customer domain. DO NOT USE WHEN: the agent needs confirmed customer base of a vendor (use vendor-customer-confirmed-lookup), historical adoption/removal events (use vendor-customer-adoption-change-lookup), or customer transition signals (use vendor-customer-transition-signal-lookup). Parameter semantics: domain is the customer domain to inspect, not a vendor domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Bare public hostname (e.g., example.com). No protocol, path, query, or fragment. Localhost and IP literals rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| domain | Yes | Normalized public domain scanned. |
| product | Yes | Product identifier. |
| observed_at | Yes | UTC timestamp of the scan. |
| technologies | Yes | Deterministically detected technologies ordered by canonical key ascending. |
| technology_count | Yes | Number of technologies detected as PRESENT. |
| response_validity | Yes | Scanner response validity classification. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as non-read-only, non-idempotent, and open-world, and the description justifies all three: it discloses that eligible CSI observations may be persisted best-effort, that results are point-in-time, and that an empty result is not proof of absence. That is real value beyond the annotations, though the persistence side effect is stated twice rather than expanded (e.g. failure handling).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then caveats, then routing rules — good ordering. It loses a point for redundancy: the "eligible CSI observations may be persisted best-effort" sentence is repeated almost verbatim, and the bold section labels add visual noise without information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't detail return fields, and it instead covers the things structured data cannot: point-in-time semantics, the false-negative risk of empty results, and the persistence side effect. An agent has everything needed to call this correctly and interpret the result honestly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already constrains the single domain parameter precisely (bare hostname, no protocol/path, localhost and IPs rejected). The description adds a genuinely non-obvious disambiguation: domain is the customer domain to inspect, not a vendor domain — a distinction the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Scan a customer domain to detect vendors and technologies") plus the mechanism (deterministic fingerprints) and the return content (technologies with supporting evidence). It is clearly distinguishable from the vendor-customer lookup siblings, which answer different questions about the same entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit USE WHEN and DO NOT USE WHEN blocks name three alternative tools and the exact condition that routes to each (confirmed customer base, historical adoption/removal events, transition signals). Nothing about tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
defi_route_decisionDeFi Route DecisionARead-onlyInspect
Compare read-only Base swap quotes obtained from 1inch and KyberSwap, evaluating output, minimum output, fees/gas, price impact, consensus, and divergence to return a deterministic economic route decision (EXECUTE_BEST, WAIT, or INSUFFICIENT_DATA). The product consults external providers during the request; quotes reflect the market state observed at that moment and identical calls can produce different results. Provider unavailability or failure can yield a partial result or insufficient data. The product does not execute, submit, sign, or authorize a swap or transaction. USE WHEN: an agent needs to compare available swap routes on Base and determine whether to execute the best route, wait, or treat the available market data as insufficient. DO NOT USE WHEN: the agent needs to execute or submit a swap, sign a transaction, or perform a transaction-safety authorization.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Base Mainnet only in this quote-only MVP. | |
| token_in | Yes | Input Base asset symbol. | |
| amount_in | Yes | Positive decimal input amount, converted exactly to raw token units. | |
| token_out | Yes | Output Base asset symbol; must differ from token_in. | |
| slippage_bps | Yes | Slippage tolerance in basis points; it is not treated as a cost. | |
| baseline_provider | No | Optional provider used only for a direct economic comparison. |
Output Schema
| Name | Required | Description |
|---|---|---|
| usage | Yes | Per-provider call success, latency, and configured cost-estimate availability. |
| quotes | Yes | Normalized provider quote evidence in raw token units. |
| status | Yes | Outcome of the quote comparison: COMPARISON_AVAILABLE when at least two valid quotes exist, PARTIAL when some but not all providers succeeded, UPSTREAM_UNAVAILABLE when no provider returned a valid quote. |
| partial | Yes | True when one or more providers did not yield a valid quote. |
| decision | Yes | Deterministic economic decision: which swap quote the agent should choose right now. Not a safety authorization and does not execute a swap. |
| consensus | Yes | Comparable-output median and comparison basis when two provider quotes are valid. |
| economics | Yes | Known or unknown estimated provider COGS; unknown is never represented as zero. |
| confidence | Yes | Deterministic quote-comparison confidence; two providers never produce HIGH in this MVP. |
| observed_at | Yes | UTC timestamp when the latest provider quote was observed during this request. |
| best_provider | Yes | Best comparable provider only when at least two valid quotes are available. |
| decision_reason | Yes | Human-readable deterministic reason for the decision. |
| decision_signals | Yes | Objective signals used for the decision. |
| evidence_quality | Yes | Per-provider reported, calculated, estimated, or unavailable field quality. |
| provider_failures | Yes | Providers that failed to return a valid quote, with provider name and failure category. |
| economic_advantage | Yes | Best quote versus declared baseline or next available quote; never ROI. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=true and openWorldHint=true, but the description adds non-obvious traits: it consults external providers live, identical calls can return different results (consistent with idempotentHint=false), and provider failure can yield partial or insufficient-data results. It also explicitly disclaims any execution/signing authority, closing the main safety question.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior and its external/non-deterministic nature are front-loaded, and the USE/DO NOT USE structure is easy to scan. The first sentence is dense with evaluative dimensions that could be trimmed slightly, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full schema coverage, and rich annotations, the description supplies exactly the missing pieces: live-provider behavior, result variability, partial-failure outcomes, and absence of execution capability. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented, including the optional baseline_provider caveat in the schema itself. The description references the evaluated dimensions (output, fees/gas, price impact, divergence) but adds no per-parameter syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Compare read-only Base swap quotes obtained from 1inch and KyberSwap') and states the concrete output taxonomy (EXECUTE_BEST, WAIT, INSUFFICIENT_DATA). It also distinguishes itself from the execution sibling ('does not execute, submit, sign, or authorize a swap').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit USE WHEN and DO NOT USE WHEN sections define the exact condition for selection and name the alternative scenario (executing/submitting/signing a swap). The routing decision is unambiguous without opening the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_agent_discovery_checkDomain & Agent Discovery CheckARead-onlyInspect
Inspect a public domain across DNS, HTTP/HTTPS/TLS, email posture and AI-agent discovery surfaces, including robots.txt, llms.txt, OpenAPI, MCP, x402 and Agent Card availability.
USE WHEN: an agent needs a single-call observational check of a domain's surfaces or wants to compare with a previous state.
DO NOT USE WHEN: protocol validation, Agent Card/A2A validation, MCP compliance validation, security certification, or a consumption guarantee. USE domain_risk_trust_decision FOR: merchant/domain trust.
Operational behavior: no tool-specific auth or rate limit; remote surfaces may throttle requests.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Bare public domain for consolidated domain health, DNS, TLS, and email-posture inspection; no protocol or path; localhost and IP literals are rejected. | |
| previous_state | No | Optional prior `new_state` returned by this product. Supplied statelessly by the caller; when provided, it is compared against the current observation to populate `changes`. Omit it for a baseline inspection with no change detection. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dns | Yes | Observed DNS records and diagnostics. |
| domain | Yes | Validated public domain. |
| health | Yes | Observed domain health: DNS, HTTP, HTTPS, redirects, TLS, and latency. |
| issues | Yes | Detected issues from the inspection: unresolved DNS, unavailable HTTPS, missing SPF/DMARC, TLS expiring soon, or unavailable agent-discovery signals. Each item includes a code, severity, message, and evidence references. Empty when no issues are found. Not a safety or security verdict. |
| actions | Yes | Recommended remediation actions derived from detected issues. Each item includes a code and a human-readable action. The tool does not execute these actions; they are recommendations only. |
| changes | Yes | Material field-level differences between `previous_state` and the current observation. Each item names a changed field with its previous and current values. Empty when `previous_state` is omitted or no field differs. Requires `previous_state` to produce non-empty results. |
| evidence | Yes | Observed evidence from DNS, HTTP/HTTPS, and agent-discovery checks. Each item names a source, the observation timestamp, the observed value, and freshness. Contains live remote observations; does not guarantee proof or validation. |
| new_state | Yes | Current observation state, structured identically to `current_state`. Can be supplied as `previous_state` in a subsequent call to enable change detection. Not persisted server-side; the caller stores and passes it back. |
| observed_at | Yes | UTC timestamp when the inspection observation was generated, in ISO 8601 format with Z suffix. Reflects the local observation time, not a provider timestamp. |
| data_quality | Yes | Observation quality summary: checks requested, completed, and failed, plus coverage (complete or partial). Reflects partial failures and missing surfaces. Not a score or verdict. |
| current_state | Yes | Structured snapshot of the current observation: domain, DNS, health, email posture, and agent readiness. Identical to `new_state`. Compared against `previous_state` to produce `changes` when supplied. Not persisted server-side. |
| email_posture | Yes | Observed email posture including MX, SPF, and DMARC. |
| agent_readiness | Yes | Observed agent discovery signals. |
| security_posture | Yes | Observed HTTPS/TLS security posture; not a safety verdict. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true, destructiveHint=false), and the description adds genuinely new operational context: no tool-specific auth or rate limit, but remote surfaces may throttle. It also implies observations can differ between calls, consistent with idempotentHint=false. Minor gap: it does not say what happens when a surface is unreachable, though the output schema covers return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose sentence first, then clearly delimited USE WHEN / DO NOT USE WHEN / alternative / operational notes. Every line carries routing or constraint value; the enumeration of surfaces is long but load-bearing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the remaining burden: scope, exclusions, the sibling alternative, auth/rate-limit posture, and the fact that throttling can occur. Nothing an agent needs in order to call this correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema (domain constraints, previous_state semantics). The description only reinforces that this is a public-domain, observation-only check and that comparison requires a prior state; it adds no format or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Inspect a public domain') and enumerates exactly which surfaces are covered (DNS, HTTP/TLS, email posture, robots.txt, llms.txt, OpenAPI, MCP, x402, Agent Card). This is clearly distinguished from the trust-oriented sibling domain_risk_trust_decision, which is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit USE WHEN (single-call observational check, or comparison against a previous state) and DO NOT USE WHEN (protocol/Agent Card/MCP validation, security certification, consumption guarantee) sections, plus a pointed redirect to domain_risk_trust_decision for merchant/domain trust. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_risk_trust_decisionDomain Risk & Trust DecisionARead-onlyInspect
Deterministic domain risk and trust evaluation returning ALLOW / REVIEW / BLOCK. Decision for observed evidence; external evidence may change between calls. Uses DNS, RDAP, TLS, HTTP/redirect, URLhaus threat reputation, local indicators. Read-only: external read queries only, no action on domain, no persistence, limited cache. USE WHEN: decide whether domain is safe enough for interaction, onboarding, outreach, or payment. DO NOT USE WHEN: consolidated domain health/operational inspection (use domain_agent_discovery_check) or email validation (use email_suitability_decision). Example: domain='example.com'.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Bare public hostname (e.g., example.com). No protocol, path, query, or fragment. Localhost and IP literals rejected. |
Output Schema
| Name | Required | Description |
|---|---|---|
| a | Yes | Observed DNS A (IPv4) records. |
| mx | Yes | Observed DNS MX records. |
| ns | Yes | Observed DNS NS records. |
| spf | Yes | SPF records derived from observed DNS TXT records (v=spf1). |
| txt | Yes | Observed DNS TXT records. |
| aaaa | Yes | Observed DNS AAAA (IPv6) records. |
| dmarc | Yes | DMARC records derived from observed DNS TXT records (v=dmarc1). |
| domain | Yes | Validated public domain. |
| signals | Yes | Evidence source states (DNS, RDAP, TLS, HTTP, threat intel). |
| decision | Yes | Trust decision for the domain. |
| confidence | Yes | Confidence in the decision from 0 to 100. |
| indicators | Yes | Observed risk indicators. |
| risk_level | Yes | Risk level derived from observed signals. |
| risk_score | Yes | Risk score from 0 to 100. |
| diagnostics | Yes | Deterministic missing-record diagnostics. |
| evidence_complete | Yes | Whether all evidence sources were available. |
| recommended_action | Yes | Suggested action for the agent. |
| structured_reasons | Yes | Human-readable explanation for the decision. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the external data sources queried, the read-only/no-action/no-persistence posture, and limited caching. It also resolves the apparent tension between 'deterministic' and idempotentHint=false by explaining that external evidence may change between calls — context the annotation alone would leave confusing, though the response shape is left to the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the decision outcome and behavior, then labeled USE WHEN / DO NOT USE WHEN sections and a concrete example. Dense but every clause contributes routing or behavioral information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter decision tool with a full output schema and rich annotations, the description covers purpose, exclusions, data provenance, side-effect profile, and volatility caveat. Nothing an agent needs to select or call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself already spells out the bare-hostname constraint, rejection of localhost/IP literals, and length cap. The description adds only a worked example ('domain=example.com'), which is marginal value over the schema — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('domain risk and trust evaluation'), states the decision vocabulary (ALLOW / REVIEW / BLOCK), and enumerates the evidence sources used (DNS, RDAP, TLS, HTTP/redirect, URLhaus, local indicators). An agent can distinguish it from siblings like domain_agent_discovery_check without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit USE WHEN (interaction, onboarding, outreach, payment) and DO NOT USE WHEN clauses that name the correct alternative tool for each excluded case (domain_agent_discovery_check for health inspection, email_suitability_decision for email validation). Routing is fully determined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_suitability_decisionEmail Suitability DecisionARead-onlyInspect
Evaluate whether an email address is suitable for a specified use case using syntax, MX, SPF, DMARC, disposable-domain, and role-account signals. Decision for observed evidence; external DNS evidence may change between calls. Returns an ALLOW, REVIEW, or REJECT decision with deliverability score, risk level, confidence, checks, and reasons. Does not send email, probe the mailbox via SMTP, verify that the mailbox exists or is owned by a specific person, or guarantee delivery. Read-only DNS lookups may affect latency or availability; no tool-specific rate limit. USE WHEN: an agent needs to decide whether an email address is suitable for outbound sales, account signup, transactional email, CRM import, lead qualification, or another supported use case. DO NOT USE WHEN: the agent needs domain-level risk and trust assessment or proof that a mailbox exists. USE domain_risk_trust_decision FOR: domain-level risk and trust assessment.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address for suitability decision. | ||
| use_case | No | Intended sending context; when provided, the decision accounts for context-specific risk. Omitted for a baseline decision without contextual adjustments. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Yes | Validated email address (domain-lowercased). | |
| valid | Yes | Backward-compatible validity summary based on deliverability score >= 60. Does not prove mailbox existence or delivery. |
| checks | Yes | Per-signal check results keyed by check name: syntax, domain, mx, spf, dmarc, disposable, role_account. Each value is a machine-readable result string (e.g. 'syntax:valid', 'mx:found', 'spf:pass', 'disposable:no'). Partial when a DNS lookup is unavailable. |
| domain | Yes | Lowercased domain part. |
| reasons | Yes | Machine-readable reason codes explaining the decision and corresponding to observed checks. |
| decision | Yes | Context-aware suitability decision for the given use case. |
| mx_found | No | Backward-compatible MX result; null means lookup unavailable. |
| use_case | No | The validated use case echoed from the input; null when omitted. Affects contextual decision adjustments such as role-account tolerance and SPF/DMARC weighting. |
| confidence | Yes | Confidence in the decision from 0 to 100. |
| risk_level | Yes | Risk level derived from observed signals. |
| deliverability_score | Yes | Deliverability score from 0 to 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/non-destructive/open-world, and the description adds substantial context beyond them: no SMTP probing, no mailbox-existence proof, no delivery guarantee, DNS evidence drift between calls (explaining the non-idempotent hint), latency/availability impact, and no tool-specific rate limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads mechanics and return shape before the bolded routing headers, and each block is scannable. Slight redundancy between the negative-capability sentence and the DO NOT USE WHEN clause (mailbox existence is stated twice) keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only decision tool with an output schema, the description covers scope, exclusions, return structure, operational caveats, and sibling routing. An agent has everything needed to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the use_case enum plus its default-null semantics are already documented in the schema, so the description adds nothing about parameters beyond restating 'specified use case'. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
First sentence states a specific verb+resource (evaluate an email address's suitability) plus the exact signal set used (syntax, MX, SPF, DMARC, disposable-domain, role-account) and the decision output (ALLOW/REVIEW/REJECT). It explicitly separates itself from domain_risk_trust_decision, the nearest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit USE WHEN list with concrete scenarios (outbound sales, signup, transactional, CRM import, lead qualification), a DO NOT USE WHEN clause covering domain-level assessment and mailbox proof, and names the alternative tool to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evm_gas_price_lookupEVM Gas Price LookupARead-onlyInspect
Retrieve the current gas price for Ethereum or Base for transaction planning. Returns wei and gwei from a single eth_gasPrice JSON-RPC call; live network result may change between calls and does not estimate total transaction cost, submit a transaction, or provide execution authorization. USE WHEN: an agent needs the current EVM gas price before estimating fees or preparing a transaction. DO NOT USE WHEN: the agent needs to inspect an existing transaction by hash (use evm_transaction_hash_lookup) or retrieve a wallet balance (use evm_wallet_balance_lookup).
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | EVM network to query for the current gas price. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | EVM network queried. |
| observed_at | Yes | UTC observation time. |
| gas_price_wei | Yes | Current gas price in wei (atomic units). |
| gas_price_gwei | Yes | Current gas price in gwei. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, and non-idempotent behavior, but the description adds meaningful context beyond them: it specifies a single `eth_gasPrice` JSON-RPC call, explains that live results may change between calls (justifying non-idempotency), and explicitly states it does not estimate total cost, submit transactions, or authorize execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and well-organized into USE WHEN / DO NOT USE WHEN blocks. There is minor redundancy between 'for transaction planning' and the later 'before estimating fees or preparing a transaction,' but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with an output schema and rich annotations, the description covers purpose, usage boundaries, alternatives, and behavioral limits. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single `chain` parameter has a clear enum and description. The tool description mentions 'Ethereum or Base' but adds no syntax or format details beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve the current gas price for Ethereum or Base') and explicitly scopes it to transaction planning. It clearly distinguishes itself from the named sibling tools for transaction inspection and wallet balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 named alternatives (`evm_transaction_hash_lookup`, `evm_wallet_balance_lookup`) and the conditions that select each. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evm_latest_block_lookupEVM Latest Block LookupARead-onlyInspect
Retrieve the latest block number for Ethereum or Base using a single eth_blockNumber JSON-RPC call; live chain state may change between calls. USE WHEN: an agent needs the current chain height for Ethereum or Base as a synchronization, sequencing, or transaction-context reference. DO NOT USE WHEN: the agent needs block contents, transactions, wallet balances, gas prices, historical blocks, confirmations, or finality. Parameter semantics: chain accepts exactly ethereum or base and is case-sensitive. Returns chain, block_number as a decimal integer, and observed_at as a UTC timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | EVM network to query for the latest block number. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | EVM network queried. |
| observed_at | Yes | UTC timestamp of the query. |
| block_number | Yes | Latest block number as a decimal integer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, openWorld=true, idempotent=false; the description adds the reason behind non-idempotency ('live chain state may change between calls') and the single-RPC cost profile, which is real added context. It stops short of disclosing rate limits, error/failure behavior, or authentication requirements, so it is strong 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then cleanly segmented into USE WHEN / DO NOT USE WHEN / parameter semantics, so an agent can scan it quickly. The closing sentence restating chain, block_number, and observed_at duplicates the existing output schema and is the one piece that does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full annotation coverage and an output schema, the description supplies everything else an agent needs: scope, exclusions, case sensitivity, volatility of the returned value. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum is already constrained, so the baseline is 3; the description goes further by stating the values are case-sensitive, a constraint the schema does not express. The only gap is that it does not say what happens on a case mismatch or invalid value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve the latest block number') plus the exact mechanism ('single eth_blockNumber JSON-RPC call') and the supported chains. It is clearly distinguishable from siblings like evm_gas_price_lookup, evm_wallet_balance_lookup, and evm_transaction_hash_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit USE WHEN clause (synchronization, sequencing, transaction-context reference) and an explicit DO NOT USE WHEN clause enumerating the alternatives' territory: block contents, transactions, balances, gas prices, historical blocks, confirmations, finality. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evm_transaction_execution_decisionEVM Transaction Execution DecisionARead-onlyInspect
Evaluate an intended EVM transaction before submission using deterministic RPC simulation signals and return a machine-readable STRAELO execution decision. The decision engine is deterministic for the same observed RPC evidence; live chain state may change between calls. USE WHEN: an agent needs to evaluate an EVM transaction before deciding whether to submit it. DO NOT USE WHEN: the transaction has already been submitted and the agent needs to look it up by transaction hash; use evm_transaction_hash_lookup instead. This product does not broadcast transactions and does not guarantee that an allowed transaction will execute successfully when later submitted. from_address is the sender whose execution context is simulated; to_address/data/value together form the intended transaction form. INCOMPLETE means simulation/provider evidence was insufficient for a conclusive execution decision and must not be treated as ALLOW. Returns ALLOW, WARN, BLOCK, or INCOMPLETE with the simulation evidence and execution signals produced by the current decision engine.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | EVM calldata hex for contract interaction. Must start with 0x. Empty calldata is represented as "0x". | |
| chain | Yes | EVM network where the transaction would be executed. | |
| value | No | Native value in hex wei (atomic units, 10^18 wei = 1 ETH). Zero means no native value transfer. | |
| to_address | No | Intended recipient address or contract target for the transaction. | |
| from_address | Yes | Actual EVM sender address whose execution context should be simulated. Required because contract behavior may depend on msg.sender, balances, permissions, ownership, or allowlists. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | Selected EVM network. |
| reasons | Yes | Human-readable reasons for the decision. |
| decision | Yes | Pre-execution decision: ALLOW means simulation succeeded with no blocking signals; WARN means simulation succeeded with cautionary findings (e.g., approvals); BLOCK means deterministic simulation indicates execution would revert; INCOMPLETE means a technical/provider error prevented a conclusive decision. |
| findings | Yes | Deterministic factual findings. |
| provider | Yes | RPC provider identifier. |
| latency_ms | Yes | Observed RPC latency in milliseconds. |
| counterparty | Yes | Recipient / counterparty address. |
| native_value | Yes | Native value in decimal wei. |
| estimated_gas | No | Estimated gas from eth_estimateGas. |
| decoded_action | No | Decoded ERC20/ERC1155 action when recognized. |
| method_selector | Yes | First 4 bytes of calldata. |
| interaction_type | Yes | Recognized interaction type. |
| simulation_status | Yes | RPC simulation outcome. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It adds real context beyond the annotations: the engine is deterministic for identical RPC evidence, but live chain state may change between calls (which explains idempotentHint=false), and the tool never broadcasts. It also warns that ALLOW is not a guarantee of successful execution and that INCOMPLETE must not be read as ALLOW. The only gap is that it does not describe latency, rate limits, or provider failure behavior, which matter for an openWorldHint tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, followed by clearly labelled use/don't-use blocks and caveats, so an agent can scan it quickly. It runs long and the parameter-roles sentence restates ground already covered by the schema descriptions, which trims a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a decision tool with an output schema, the description covers everything the schema cannot: the meaning and risk asymmetry of ALLOW/WARN/BLOCK/INCOMPLETE, determinism versus live-state drift, and the no-broadcast/no-guarantee boundary. An agent can call it and interpret results correctly without further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point by explaining the compositional relationship — that from_address defines the simulated msg.sender context while to_address/data/value jointly form the intended transaction. Most per-field detail (hex wei units, calldata format, address patterns) is already in the schema, so no more credit is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource — 'Evaluate an intended EVM transaction before submission' — and states the output form (a machine-readable STRAELO execution decision). It is immediately distinguishable from evm_transaction_hash_lookup, which it explicitly names as the post-submission lookup path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit 'USE WHEN' and 'DO NOT USE WHEN' sections, and the exclusion names the alternative tool (evm_transaction_hash_lookup) plus the condition that selects it (transaction already submitted, lookup by hash). The pre-submission gating context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evm_transaction_hash_lookupEVM Transaction Hash LookupARead-onlyInspect
Look up an EVM transaction by transaction hash and return normalized transaction facts, including status, block number, sender, recipient, value, gas usage, and contract method selector. This is a factual post-transaction lookup on Ethereum or Base; live chain state may change between calls and does not simulate, send, sign, or evaluate whether the transaction was safe or appropriate to execute. USE WHEN: an agent already has an EVM transaction hash and needs to inspect the corresponding on-chain transaction. DO NOT USE WHEN: the agent needs a pre-execution transaction decision, a gas-price lookup, a wallet-balance lookup, or the latest block. A syntactically valid hash that is not found on the selected network returns NOT_FOUND as a factual result rather than a validation error.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | EVM network to query. | |
| tx_hash | Yes | Transaction hash (0x + exactly 64 hex chars). |
Output Schema
| Name | Required | Description |
|---|---|---|
| gas | Yes | Gas usage and fee details of the transaction. |
| chain | Yes | EVM network queried. |
| status | Yes | Transaction execution status. |
| tx_hash | Yes | Transaction hash that was queried. |
| contract | Yes | Contract interaction details detected from calldata. |
| value_wei | Yes | Transaction value in wei. |
| to_address | Yes | Transaction recipient address (null for contract creation). |
| observed_at | Yes | UTC observation timestamp in ISO-8601 format with Z suffix. |
| block_number | Yes | Block number where the transaction was included. |
| from_address | Yes | Transaction sender address. |
| value_native | Yes | Transaction value in native units (ETH). |
| transaction_type | Yes | Type of transaction. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that live chain state may change between calls, that it does not simulate, send, sign, or assess safety, and that NOT_FOUND is a factual result. These details add meaningful behavioral context for an open-world read-only lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then cleanly separates scope, usage conditions, exclusions, and error semantics. Despite its length, each sentence contributes useful selection or behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two fully documented parameters, existing annotations, and an output schema, the description supplies everything needed for correct selection and invocation. It also covers the key edge case of a valid but absent hash.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents the chain enum and the tx_hash pattern. The description reinforces that chain selects Ethereum or Base and that lookup is scoped to the selected network, but it does not add much parameter-level detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: look up an EVM transaction by hash and return normalized transaction facts. It explicitly distinguishes this tool from sibling decision, gas-price, balance, and latest-block tools by describing it as a factual post-transaction lookup and listing 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit USE WHEN and DO NOT USE WHEN sections, naming the conditions that select this tool and the conditions that should route to alternatives. It also clarifies that a syntactically valid but missing hash returns NOT_FOUND rather than a validation error.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evm_wallet_balance_lookupEVM Wallet Balance LookupARead-onlyInspect
Retrieve the current native ETH balance of a wallet on Ethereum or Base and, optionally, balances for up to 20 specified ERC-20 token contracts. Results are point-in-time observations of live chain state and may change between calls. Does not evaluate wallet ownership, solvency, transaction safety, or whether a transaction should be executed. USE WHEN: an agent needs the current ETH balance or balances of specific ERC-20 tokens for an EVM address. DO NOT USE WHEN: the agent needs transaction details (evm_transaction_hash_lookup), current gas price (evm_gas_price_lookup), historical balances, or a transaction execution decision.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | EVM network containing the wallet. | |
| tokens | No | Up to 20 ERC-20 token contract addresses to query balances for. | |
| address | Yes | One EVM wallet address to inspect. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | EVM network queried. |
| address | Yes | EVM wallet address inspected. |
| observed_at | Yes | UTC observation time. |
| native_balance | Yes | Current native ETH balance observed at request time. |
| token_balances | Yes | Balances for each requested ERC-20 token contract address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that results are point-in-time observations of live chain state that may change between calls, which explains the idempotentHint=false setting, and it enumerates negative capability boundaries (no solvency, ownership, or transaction-safety judgment). This is exactly the extra context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, then usage routing and exclusions; every sentence carries distinct information with no filler. The do-not-use list adds the historical-balance exclusion that the schema cannot express.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, three-parameter lookup with a full output schema and complete annotation coverage, nothing an agent needs to call it correctly is missing. Response format is intentionally left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the 20-item cap, address pattern, and chain enum, so the schema carries the parameter burden. The description adds only the semantic distinction that ETH is always returned while the token list is optional, which is marginal beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource (retrieve native ETH balance for an EVM wallet), states the supported chains, and clarifies the optional expansion to up to 20 ERC-20 contracts. It also explicitly bounds the scope (no ownership, solvency, or safety evaluation), which separates it from the decision-oriented siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 and names the sibling tools to route to instead (evm_transaction_hash_lookup, evm_gas_price_lookup) plus the excluded cases of historical balances and execution decisions. An agent can select or reject this tool without any inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_security_decisionToken Security DecisionARead-onlyInspect
Evaluate a crypto token for agent interaction using security evidence from GoPlus (primary) and Honeypot.is (complementary, EVM chains only) and return a STRAELO decision that is deterministic for the same observed provider evidence; provider evidence can change between calls and external provider calls may affect latency and availability. There is no tool-specific rate limit. USE WHEN: an agent needs a machine-readable security decision before interacting with a token on Base, Ethereum, BSC, or Solana. DO NOT USE WHEN: the agent needs a guarantee that a token is safe, legitimate, scam-free, or risk-free; provider evidence may be unavailable or incomplete. Returns ALLOW, REVIEW, AVOID, or INCOMPLETE with supporting evidence. Missing or insufficient provider evidence fails closed and never produces ALLOW.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Blockchain containing the token. Accepts base, ethereum, bsc, or solana. Input is normalized to lowercase. | |
| token_address | Yes | Token identifier to evaluate. For base, ethereum, or bsc, provide an EVM contract address (0x followed by 40 hexadecimal characters). For solana, provide the token mint address as a base58 public key. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chain | Yes | Blockchain network queried. |
| product | Yes | Product identifier. |
| reasons | Yes | Short, objective, machine-readable reasons supporting the decision. |
| decision | Yes | Token security decision: ALLOW, REVIEW, AVOID or INCOMPLETE. |
| evidence | Yes | Provider evidence that supported the decision. |
| confidence | Yes | Confidence in the decision. |
| risk_score | Yes | Risk score from 0 to 100. |
| observed_at | Yes | UTC timestamp of the decision. |
| token_address | Yes | Token address/mint inspected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: declares the decision is deterministic for identical evidence, that evidence can change between calls (consistent with idempotentHint=false), that external provider latency/availability is a factor, that there is no tool-specific rate limit, and that insufficient evidence fails closed and never yields ALLOW. That failure-mode disclosure is exactly the context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but purposeful, with usage and exclusion blocks clearly labeled. Slight cost: the opening sentence carries nested parentheticals, and the closing 'fails closed / never produces ALLOW' partially restates the earlier evidence-availability warning, so it is a sentence longer than strictly needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, open-world decision tool with an output schema, the description supplies the missing pieces: provider provenance, determinism semantics, chain coverage, failure behavior, and explicit non-guarantees. An agent can decide whether to call it and how to interpret INCOMPLETE without further context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents chain normalization and the address format per chain, so the code-level semantics are covered. The description adds only a provider-level nuance (Honeypot.is is EVM-only, GoPlus primary), without per-parameter format or constraint detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Evaluate a crypto token for agent interaction'), names the evidence providers, the supported chains, and the exact output vocabulary (ALLOW/REVIEW/AVOID/INCOMPLETE). This clearly separates it from sibling tools, which are all *other* decision types (domain_risk_trust_decision, x402_payment_preflight_decision, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'USE WHEN' names the triggering condition and the four chains; explicit 'DO NOT USE WHEN' excludes safety/legitimacy guarantees and warns about unavailable or incomplete evidence. That is the full when/when-not pair an agent needs to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vendor_customer_adoption_change_lookupVendor Customer Adoption Change LookupARead-onlyInspect
Retrieve confirmed customer adoption changes for a specified vendor within a UTC time window, returning customer domains with ADDED or REMOVED events, supporting evidence, and timestamps. ADDED represents a confirmed ABSENT -> PRESENT transition and REMOVED represents a confirmed PRESENT -> ABSENT transition in STRAELO CSI observations; REMOVED does not by itself prove a vendor switch or contract cancellation. USE WHEN: an agent needs historical evidence of customers adopting or removing a specific vendor during a period. DO NOT USE WHEN: the agent needs customers currently confirmed as using a vendor (vendor_customer_confirmed_lookup), vendors currently detected on a specific customer domain (customer_vendor_detection), or potential vendor replacement signals (vendor_customer_transition_signal_lookup). Results reflect persisted CSI history and may change as new transitions are recorded; the tool does not perform live scans or modify state.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | Exclusive UTC end boundary (ISO-8601, timezone-aware); must be later than start. | |
| limit | No | Maximum confirmed changes to return (1-100; default 100). No pagination; change_count reflects the number returned after this limit. | |
| start | Yes | Inclusive UTC start boundary (ISO-8601, timezone-aware). | |
| vendor | Yes | Technology/vendor to query; canonical names are accepted, with judge.me normalized to judgeme. |
Output Schema
| Name | Required | Description |
|---|---|---|
| end | Yes | Exclusive UTC end boundary queried. |
| start | Yes | Inclusive UTC start boundary queried. |
| vendor | Yes | Normalized vendor/technology key queried. |
| changes | Yes | Confirmed ADDED/REMOVED changes ordered by changed_at DESC, domain ASC. |
| product | Yes | Product identifier. |
| observed_at | Yes | UTC timestamp of the query response generation. |
| change_count | Yes | Number of confirmed changes returned after applying the limit. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true, idempotentHint=false), and the description adds genuinely non-obvious behavior: results come from persisted CSI history and may change as new transitions are recorded, no live scans are performed, and no state is modified — which also explains the non-idempotent hint. It further guards against misreading `REMOVED` as proof of a vendor switch or cancellation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then the event definitions, then clearly delineated USE WHEN / DO NOT USE WHEN blocks, then freshness caveats. Every sentence carries distinct information; the enumerated siblings are dense but each is necessary for routing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with a full output schema, rich annotations, and 100% schema coverage, the description supplies everything else an agent needs: what counts as an event, what it does not prove, when to prefer a sibling tool, and the data-freshness caveat. No material gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: start/end boundaries, the 1-100 limit with default 100 and no pagination, and vendor normalization (judge.me -> judgeme) are all documented in the schema itself. The description only restates the UTC time-window framing, so baseline 3 applies — it adds no parameter detail beyond structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve) and resource (confirmed customer adoption changes for a vendor in a UTC window) and then defines the two event types with precise domain semantics (`ADDED` = `ABSENT -> PRESENT`, `REMOVED` = `PRESENT -> ABSENT` in STRAELO CSI observations). It also explicitly rules out the two most confusable siblings, so the agent can distinguish this from vendor_customer_confirmed_lookup and vendor_customer_transition_signal_lookup without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Contains an explicit USE WHEN clause (historical evidence of adoption/removal during a period) and a DO NOT USE WHEN clause naming three concrete alternative tools with the condition that selects each. Nothing about tool choice is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vendor_customer_confirmed_lookupVendor Customer Confirmed LookupARead-onlyInspect
Retrieve confirmed customer domains currently using a specified vendor from STRAELO's persisted CSI coverage. Returns only confirmed PRESENT customer-vendor relationships with supporting evidence and confirmation timestamps, normalized and deduplicated. Results represent STRAELO's currently confirmed coverage, not the vendor's complete global customer base; an empty result means no confirmed customers are available within STRAELO coverage for that vendor, not that the vendor has no customers. USE WHEN: an agent needs to identify which customers are currently confirmed as using a specific vendor. DO NOT USE WHEN: scanning a specific customer domain for detectable vendors (customer_vendor_detection), retrieving historical adoption/removal events (vendor_customer_adoption_change_lookup), or identifying customer transition signals (vendor_customer_transition_signal_lookup).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum confirmed customers to return (1-100; default 100). No pagination; limits customers and returned_count, not confirmed_customer_count. | |
| vendor | Yes | Technology/vendor to query; canonical names are accepted, with judge.me normalized to judgeme. |
Output Schema
| Name | Required | Description |
|---|---|---|
| vendor | Yes | Normalized vendor/technology key queried. |
| product | Yes | Product identifier. |
| customers | Yes | Confirmed customer relationships, ordered by confirmation freshness. |
| returned_count | Yes | Number of customers returned in this response (bounded by limit). |
| confirmed_customer_count | Yes | Total confirmed PRESENT customers for the vendor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds non-obvious interpretive context: results are confined to STRAELO's confirmed coverage rather than the vendor's global customer base, and an empty result must not be read as the vendor having no customers. It also discloses returned evidence/confirmation timestamps and normalization/deduplication behavior, which materially affects how the agent should trust and present results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation, then the coverage caveat, then bolded routing blocks — well structured and mostly earn-your-place. Some repetition of 'currently confirmed' and 'STRAELO coverage' across sentences costs a point but doesn't obscure anything.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema (so return shape needn't be described), full schema coverage, and strong annotations, the description supplies exactly what structured fields cannot: coverage limits, empty-result semantics, and sibling routing. Nothing an agent needs to call and interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the limit and vendor parameters fully documented in the schema (max 100, no pagination, canonical name normalization). The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve confirmed customer domains currently using a specified vendor') plus the data source (STRAELO's persisted CSI coverage). It explicitly bounds the result set (only confirmed PRESENT relationships, normalized and deduplicated), which distinguishes it from the detection and history siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 blocks, naming three concrete alternatives (customer_vendor_detection, vendor_customer_adoption_change_lookup, vendor_customer_transition_signal_lookup) with the condition that selects each. The direction of the lookup — vendor to customers, not customer to vendors — is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vendor_customer_transition_signal_lookupVendor Customer Transition Signal LookupAInspect
Find customer domains with observed technology transition signals involving a specified vendor and return prioritized signals with supporting evidence. USE WHEN: an agent needs to identify customer-level technology transition signals related to a vendor for prospecting or change analysis. DO NOT USE WHEN: the agent needs confirmed proof that a customer switched from one vendor to another (vendor_customer_confirmed_lookup), historical ADDED/REMOVED adoption events (vendor_customer_adoption_change_lookup), or vendors currently detected on a specific customer domain (customer_vendor_detection); POSSIBLE_REPLACEMENT is a correlated signal, not a confirmed switch. Side effect: unsupported-vendor requests may persist aggregated demand telemetry. Results reflect CSI snapshots and may change between calls.
| Name | Required | Description | Default |
|---|---|---|---|
| vendor | Yes | Vendor whose customer technology transition signals should be evaluated. Supported values: yotpo, judge.me. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error type name on pipeline/discovery error, otherwise null. |
| leads | Yes | Prioritized transition signals when available. |
| demand | No | Demand telemetry for unsupported vendors. |
| reason | No | Human-readable reason for the status, when applicable. |
| status | Yes | Machine-readable outcome status for the request. |
| vendor | Yes | Normalized vendor/technology key queried. |
| charged | Yes | Whether payment was settled for this chargeable CSI delivery; false for unsupported or non-chargeable outcomes. |
| targets | Yes | Validated target domains scanned. |
| supported | Yes | Whether the queried vendor is supported by this capability. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds important behavior beyond the annotations: unsupported vendors may persist aggregated demand telemetry, results reflect CSI snapshots, and outputs may change between calls. These details are consistent with the non-read-only, non-idempotent annotations and help an agent understand side effects and result volatility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then layers usage rules, exclusions, side effects, and snapshot caveats without wasted prose. Every sentence contributes distinct operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single fully documented parameter, an existing output schema, and clear sibling differentiation, the description provides everything needed to select and invoke the tool correctly. It also covers the side-effect and non-determinism concerns that annotations alone would not fully explain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single vendor parameter, including its enum values, so the schema carries the detailed semantics. The description only adds "specified vendor" context and does not provide additional syntax, defaults, or constraints beyond what the schema already states, which is the expected baseline when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: find customer domains with observed technology transition signals involving a specified vendor, returning prioritized signals with evidence. It also names sibling tools and explains how this tool differs from them, so an agent can distinguish it without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit USE WHEN and DO NOT USE WHEN guidance, naming the exact alternative tools for confirmed switches, adoption events, and current vendor detection. The POSSIBLE_REPLACEMENT caveat further clarifies the boundary between correlated signals and confirmed switches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x402_payment_preflight_decisionx402 Payment Preflight DecisionARead-onlyIdempotentInspect
Check an x402 payment request before signing or paying and return a deterministic PAY, REVIEW or DO_NOT_PAY decision. USE WHEN: agent needs deterministic verification of a payment requirement before deciding whether to pay. DO NOT USE WHEN: agent expects this tool to execute the payment. Offline/read-only preflight: no network calls, signing, settlement, or payment execution. Decision derives from comparing declared intent against the supplied x402 v2 PAYMENT-REQUIRED; mismatches yield DO_NOT_PAY, material snapshot changes yield REVIEW, consistency yields PAY.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | Buyer-declared payment policy: expected seller label, service, resource URL, and optional payment constraints (asset, network, destination, amount, tolerance) used to evaluate consistency against the observed x402 challenge. | |
| payment_required | Yes | Observed x402 v2 PAYMENT-REQUIRED challenge decoded as JSON. | |
| previous_snapshot | No | Optional prior snapshot for stateless material-change detection against a prior result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| changes | Yes | Material changes between current result and previous_snapshot; any change drives REVIEW when no mismatch exists. |
| matched | Yes | Intent fields that matched the observed x402 payment requirement. |
| coverage | Yes | Scope of the offline comparison: what is and is not evaluated by this preflight. |
| decision | Yes | Deterministic preflight payment decision: PAY when intent matches the observed requirement and no material change; REVIEW when consistent but materially changed from previous_snapshot; DO_NOT_PAY when any intent field mismatches the observed requirement. |
| evidence | Yes | Derived solely from the supplied intent and payment_required; contains the parsed payment requirement, seller label, and resource domain. |
| snapshot | Yes | Reusable stateless comparison state for detecting material changes on a subsequent call. |
| assessment | Yes | Consistency decision only; never a safety rating. |
| mismatched | Yes | Intent fields that mismatched the observed x402 payment requirement; any mismatch drives DO_NOT_PAY. |
| reason_codes | Yes | Machine-readable codes explaining the decision; mismatch codes when DO_NOT_PAY, change codes when REVIEW. |
| checks_skipped | Yes | Checks skipped because the corresponding expected field was not declared in intent. |
| external_calls | Yes | Always empty in this offline MVP. |
| checks_performed | Yes | Consistency checks actually executed for this request. |
| payment_fingerprint | Yes | SHA-256 of canonical material payment fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotency, yet the description adds what the annotations cannot: no network calls, no signing, no settlement, and the decision derivation rule (mismatch to DO_NOT_PAY, material snapshot change to REVIEW, consistency to PAY). Determinism and offline semantics are exactly the behavioral context an agent needs before trusting the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose in the first sentence, then structured USE WHEN / DO NOT USE WHEN / behavior blocks. Dense but every sentence carries distinct information; only the final derivation sentence is slightly compressed rather than wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need no explanation, and the decision enum semantics are still spelled out. Nested intent parameters, the snapshot mechanism, and the offline safety profile are all covered, leaving nothing an agent needs in order to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and nested fields are thoroughly documented, so the baseline is 3. The description earns an increment by explaining the relationship between inputs: the declared intent is compared against the supplied x402 v2 PAYMENT-REQUIRED, and previous_snapshot drives stateless material-change detection, which clarifies the third optional parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check an x402 payment request before signing or paying') and names the concrete output (deterministic PAY, REVIEW or DO_NOT_PAY decision). The DO_NOT_USE_WHEN line separates it from execution/payment siblings such as evm_transaction_execution_decision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit USE WHEN and DO NOT USE WHEN clauses give both the trigger condition and the exclusion, so an agent knows this is a verification gate, not a payment action. The boundary against execution is stated outright rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
vendor_customer_adoption_change_lookup2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum confirmed changes to return (1-100)."New value: +"Maximum confirmed changes to return (1-100; default 100). No pagination; change_count reflects the number returned after this limit." - changed
Input schema / properties / vendor / descriptionPrevious value: -"Technology/vendor to query confirmed changes for (e.g., klaviyo, yotpo, judge.me); canonical vendor names and supported aliases are accepted."New value: +"Technology/vendor to query; canonical names are accepted, with judge.me normalized to judgeme."
- Changed
vendor_customer_confirmed_lookup2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum confirmed customers to return (1-100)."New value: +"Maximum confirmed customers to return (1-100; default 100). No pagination; limits customers and returned_count, not confirmed_customer_count." - changed
Input schema / properties / vendor / descriptionPrevious value: -"Technology/vendor to query confirmed customers for (e.g., klaviyo, yotpo, judge.me); canonical vendor names and supported aliases are accepted."New value: +"Technology/vendor to query; canonical names are accepted, with judge.me normalized to judgeme."
6 tool updates
- Changed
defi_route_decision3 fields changed- added
Output schema / properties / observed_at / descriptionAdded value: +"UTC timestamp when the latest provider quote was observed during this request." - added
Output schema / properties / provider_failures / descriptionAdded value: +"Providers that failed to return a valid quote, with provider name and failure category." - added
Output schema / properties / status / descriptionAdded value: +"Outcome of the quote comparison: COMPARISON_AVAILABLE when at least two valid quotes exist, PARTIAL when some but not all providers succeeded, UPSTREAM_UNAVAILABLE when no provider returned a valid quote."
- Changed
domain_agent_discovery_check9 fields changed- changed
Input schema / properties / previous_state / descriptionPrevious value: -"Optional prior new_state returned by this product for stateless change detection."New value: +"Optional prior `new_state` returned by this product. Supplied statelessly by the caller; when provided, it is compared against the current observation to populate `changes`. Omit it for a baseline inspection with no change detection." - added
Output schema / properties / actions / descriptionAdded value: +"Recommended remediation actions derived from detected issues. Each item includes a code and a human-readable action. The tool does not execute these actions; they are recommendations only." - added
Output schema / properties / changes / descriptionAdded value: +"Material field-level differences between `previous_state` and the current observation. Each item names a changed field with its previous and current values. Empty when `previous_state` is omitted or no field differs. Requires `previous_state` to produce non-empty results." - added
Output schema / properties / current_state / descriptionAdded value: +"Structured snapshot of the current observation: domain, DNS, health, email posture, and agent readiness. Identical to `new_state`. Compared against `previous_state` to produce `changes` when supplied. Not persisted server-side." - added
Output schema / properties / data_quality / descriptionAdded value: +"Observation quality summary: checks requested, completed, and failed, plus coverage (complete or partial). Reflects partial failures and missing surfaces. Not a score or verdict." - added
Output schema / properties / evidence / descriptionAdded value: +"Observed evidence from DNS, HTTP/HTTPS, and agent-discovery checks. Each item names a source, the observation timestamp, the observed value, and freshness. Contains live remote observations; does not guarantee proof or validation." - added
Output schema / properties / issues / descriptionAdded value: +"Detected issues from the inspection: unresolved DNS, unavailable HTTPS, missing SPF/DMARC, TLS expiring soon, or unavailable agent-discovery signals. Each item includes a code, severity, message, and evidence references. Empty when no issues are found. Not a safety or security verdict." - added
Output schema / properties / new_state / descriptionAdded value: +"Current observation state, structured identically to `current_state`. Can be supplied as `previous_state` in a subsequent call to enable change detection. Not persisted server-side; the caller stores and passes it back." - added
Output schema / properties / observed_at / descriptionAdded value: +"UTC timestamp when the inspection observation was generated, in ISO 8601 format with Z suffix. Reflects the local observation time, not a provider timestamp."
- Changed
domain_risk_trust_decision7 fields changed- added
Output schema / properties / a / descriptionAdded value: +"Observed DNS A (IPv4) records." - added
Output schema / properties / aaaa / descriptionAdded value: +"Observed DNS AAAA (IPv6) records." - added
Output schema / properties / dmarc / descriptionAdded value: +"DMARC records derived from observed DNS TXT records (v=dmarc1)." - added
Output schema / properties / mx / descriptionAdded value: +"Observed DNS MX records." - added
Output schema / properties / ns / descriptionAdded value: +"Observed DNS NS records." - added
Output schema / properties / spf / descriptionAdded value: +"SPF records derived from observed DNS TXT records (v=spf1)." - added
Output schema / properties / txt / descriptionAdded value: +"Observed DNS TXT records."
- Changed
email_suitability_decision4 fields changed- changed
Input schema / properties / use_case / descriptionPrevious value: -"Intended sending context; when provided, the decision accounts for context-specific risk."New value: +"Intended sending context; when provided, the decision accounts for context-specific risk. Omitted for a baseline decision without contextual adjustments." - added
Output schema / properties / checks / descriptionAdded value: +"Per-signal check results keyed by check name: syntax, domain, mx, spf, dmarc, disposable, role_account. Each value is a machine-readable result string (e.g. 'syntax:valid', 'mx:found', 'spf:pass', 'disposable:no'). Partial when a DNS lookup is unavailable." - added
Output schema / properties / reasons / descriptionAdded value: +"Machine-readable reason codes explaining the decision and corresponding to observed checks." - added
Output schema / properties / use_case / descriptionAdded value: +"The validated use case echoed from the input; null when omitted. Affects contextual decision adjustments such as role-account tolerance and SPF/DMARC weighting."
- Changed
evm_transaction_hash_lookup1 field changed- changed
Output schema / properties / observed_at / descriptionPrevious value: -"UTC observation timestamp (milliseconds since epoch)."New value: +"UTC observation timestamp in ISO-8601 format with Z suffix."
- Changed
x402_payment_preflight_decision12 fields changed- added
Input schema / properties / intent / descriptionAdded value: +"Buyer-declared payment policy: expected seller label, service, resource URL, and optional payment constraints (asset, network, destination, amount, tolerance) used to evaluate consistency against the observed x402 challenge." - changed
Input schema / properties / previous_snapshot / descriptionPrevious value: -"Optional prior snapshot for stateless material-change detection."New value: +"Optional prior snapshot for stateless material-change detection against a prior result." - added
Output schema / properties / changes / descriptionAdded value: +"Material changes between current result and previous_snapshot; any change drives REVIEW when no mismatch exists." - added
Output schema / properties / checks_performed / descriptionAdded value: +"Consistency checks actually executed for this request." - added
Output schema / properties / checks_skipped / descriptionAdded value: +"Checks skipped because the corresponding expected field was not declared in intent." - added
Output schema / properties / coverage / descriptionAdded value: +"Scope of the offline comparison: what is and is not evaluated by this preflight." - changed
Output schema / properties / decision / descriptionPrevious value: -"Deterministic preflight payment decision."New value: +"Deterministic preflight payment decision: PAY when intent matches the observed requirement and no material change; REVIEW when consistent but materially changed from previous_snapshot; DO_NOT_PAY when any intent field mismatches the observed requirement." - added
Output schema / properties / evidence / descriptionAdded value: +"Derived solely from the supplied intent and payment_required; contains the parsed payment requirement, seller label, and resource domain." - added
Output schema / properties / matched / descriptionAdded value: +"Intent fields that matched the observed x402 payment requirement." - added
Output schema / properties / mismatched / descriptionAdded value: +"Intent fields that mismatched the observed x402 payment requirement; any mismatch drives DO_NOT_PAY." - added
Output schema / properties / reason_codes / descriptionAdded value: +"Machine-readable codes explaining the decision; mismatch codes when DO_NOT_PAY, change codes when REVIEW." - changed
Output schema / properties / snapshot / descriptionPrevious value: -"Reusable stateless comparison state."New value: +"Reusable stateless comparison state for detecting material changes on a subsequent call."
2 tool updates
- Changed
vendor_customer_confirmed_lookup1 field changed- changed
Input schema / properties / vendor / descriptionPrevious value: -"Technology/vendor to query confirmed customers for (e.g., klaviyo, yotpo, judge.me)."New value: +"Technology/vendor to query confirmed customers for (e.g., klaviyo, yotpo, judge.me); canonical vendor names and supported aliases are accepted."
- Changed
vendor_customer_transition_signal_lookup8 fields changed- changed
Input schema / properties / vendor / descriptionPrevious value: -"Vendor whose customer technology transition signals should be evaluated."New value: +"Vendor whose customer technology transition signals should be evaluated. Supported values: yotpo, judge.me." - added
Output schema / properties / charged / descriptionAdded value: +"Whether payment was settled for this chargeable CSI delivery; false for unsupported or non-chargeable outcomes." - added
Output schema / properties / error / descriptionAdded value: +"Error type name on pipeline/discovery error, otherwise null." - added
Output schema / properties / reason / descriptionAdded value: +"Human-readable reason for the status, when applicable." - added
Output schema / properties / status / descriptionAdded value: +"Machine-readable outcome status for the request." - changed
Output schema / properties / status / enumPrevious value: -[ - "OK", - "UNSUPPORTED_VENDOR", - "NO_TARGETS_FOUND", - "PIPELINE_ERROR", - "INVALID_INPUT" -]New value: +[ + "OK", + "UNSUPPORTED_VENDOR", + "NO_TARGETS_FOUND", + "PIPELINE_ERROR", + "INVALID_INPUT", + "UNKNOWN_PAYMENT_STATE", + "REFRESH_REQUIRED", + "DISCOVERY_REQUIRED", + "DISCOVERY_COOLDOWN" +] - added
Output schema / properties / supported / descriptionAdded value: +"Whether the queried vendor is supported by this capability." - added
Output schema / properties / vendor / descriptionAdded value: +"Normalized vendor/technology key queried."
3 tool updates
- Changed
evm_transaction_hash_lookup2 fields changed- added
Output schema / properties / contract / descriptionAdded value: +"Contract interaction details detected from calldata." - added
Output schema / properties / gas / descriptionAdded value: +"Gas usage and fee details of the transaction."
- Changed
evm_wallet_balance_lookup2 fields changed- added
Output schema / properties / native_balance / descriptionAdded value: +"Current native ETH balance observed at request time." - added
Output schema / properties / token_balances / descriptionAdded value: +"Balances for each requested ERC-20 token contract address."
- Changed
vendor_customer_adoption_change_lookup3 fields changed- changed
Input schema / properties / end / descriptionPrevious value: -"Exclusive UTC end boundary (ISO-8601, timezone-aware)."New value: +"Exclusive UTC end boundary (ISO-8601, timezone-aware); must be later than start." - changed
Input schema / properties / vendor / descriptionPrevious value: -"Technology/vendor to query confirmed changes for (e.g., klaviyo, yotpo, judge.me)."New value: +"Technology/vendor to query confirmed changes for (e.g., klaviyo, yotpo, judge.me); canonical vendor names and supported aliases are accepted." - changed
Output schema / properties / change_count / descriptionPrevious value: -"Total confirmed changes for the vendor in the window."New value: +"Number of confirmed changes returned after applying the limit."
13 tool updates
- Removed
change_intelligence - Removed
competitor_switch_intelligence - Added
domain_agent_discovery_check - Removed
domain_agent_readiness_check - Added
email_suitability_decision - Removed
email_validator_basic - Added
evm_latest_block_lookup - Added
evm_transaction_execution_decision - Removed
latest_block_number - Changed
token_security_decision2 fields changed- changed
Input schema / properties / chain / descriptionPrevious value: -"Blockchain network where the token is deployed."New value: +"Blockchain containing the token. Accepts base, ethereum, bsc, or solana. Input is normalized to lowercase." - changed
Input schema / properties / token_address / descriptionPrevious value: -"Token contract address (EVM) or token mint address (Solana)."New value: +"Token identifier to evaluate. For base, ethereum, or bsc, provide an EVM contract address (0x followed by 40 hexadecimal characters). For solana, provide the token mint address as a base58 public key."
- Removed
transaction_intelligence - Added
vendor_customer_adoption_change_lookup - Added
vendor_customer_transition_signal_lookup
1 tool update
- Changed
customer_vendor_detection1 field changed- changed
Input schema / properties / domain / descriptionPrevious value: -"Public domain to scan for detectable technologies; localhost and IP literals are rejected."New value: +"Bare public hostname (e.g., example.com). No protocol, path, query, or fragment. Localhost and IP literals rejected."
2 tool updates
- Removed
dns_intelligence - Added
domain_risk_trust_decision
2 tool updates
- Removed
defi_execution_snapshot - Added
defi_route_decision
2 tool updates
- Removed
installed_base_intelligence - Added
vendor_customer_confirmed_lookup
2 tool updates
- Added
customer_vendor_detection - Removed
technology_intelligence
1 tool update
- Added
evm_transaction_hash_lookup
1 tool update
- Added
evm_gas_price_lookup
1 tool update
- Added
token_security_decision
10 tool updates
- Removed
blockchain_intelligence - Changed
defi_execution_snapshot4 fields changed- added
Output schema / properties / decisionAdded value: +{ + "description": "Deterministic economic decision: which swap quote the agent should choose right now. Not a safety authorization and does not execute a swap.", + "enum": [ + "EXECUTE_BEST", + "WAIT", + "INSUFFICIENT_DATA" + ], + "type": "string" +} - added
Output schema / properties / decision_reasonAdded value: +{ + "description": "Human-readable deterministic reason for the decision.", + "type": "string" +} - added
Output schema / properties / decision_signalsAdded value: +{ + "description": "Objective signals used for the decision.", + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "status", - "best_provider", - "confidence", - "quotes", - "consensus", - "economic_advantage", - "partial", - "provider_failures", - "evidence_quality", - "usage", - "economics", - "observed_at" -]New value: +[ + "status", + "best_provider", + "confidence", + "quotes", + "consensus", + "economic_advantage", + "partial", + "provider_failures", + "evidence_quality", + "usage", + "economics", + "decision", + "decision_reason", + "decision_signals", + "observed_at" +]
- Added
domain_agent_readiness_check - Removed
domain_intelligence - Added
evm_wallet_balance_lookup - Added
latest_block_number - Removed
pay_decision_snapshot - Changed
transaction_intelligence11 fields changed- added
Input schema / properties / chain / defaultAdded value: +null - added
Input schema / properties / dataAdded value: +{ + "default": null, + "description": "Calldata hex for contract calls.", + "pattern": "^0x(?:[a-fA-F0-9]{2})*$", + "title": "Data", + "type": "string" +} - added
Input schema / properties / from_addressAdded value: +{ + "default": null, + "description": "Sender address for pre-execution simulation.", + "pattern": "^0x[a-fA-F0-9]{40}$", + "title": "From Address", + "type": "string" +} - added
Input schema / properties / to_addressAdded value: +{ + "default": null, + "description": "Recipient/target address for pre-execution simulation.", + "pattern": "^0x[a-fA-F0-9]{40}$", + "title": "To Address", + "type": "string" +} - added
Input schema / properties / tx_hash / defaultAdded value: +null - changed
Input schema / properties / tx_hash / descriptionPrevious value: -"32-byte EVM transaction hash."New value: +"32-byte EVM transaction hash (legacy post-execution mode)." - added
Input schema / properties / valueAdded value: +{ + "default": null, + "description": "Native value in hex wei.", + "pattern": "^0x[0-9a-fA-F]*$", + "title": "Value", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "chain", - "tx_hash" -] - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "analysis": { + "description": "Deterministic execution, classification, selector, value, gas, fee, logs, and creation analysis.", + "type": "object" + }, + "chain": { + "description": "Selected EVM network.", + "type": "string" + }, + "latency_ms": { + "description": "Observed RPC latency in milliseconds.", + "type": "integer" + }, + "provider": { + "description": "RPC provider identifier.", + "type": "string" + }, + "receipt": { + "description": "Raw RPC receipt, or null when pending or unavailable.", + "type": [ + "object", + "null" + ] + }, + "transaction": { + "description": "Raw RPC transaction, or null when unavailable.", + "type": [ + "object", + "null" + ] + }, + "tx_hash": { + "description": "Requested transaction hash.", + "type": "string" + } + }, + "required": [ + "chain", + "tx_hash", + "analysis", + "transaction", + "receipt", + "provider", + "latency_ms" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "chain": { + "description": "Selected EVM network.", + "type": "string" + }, + "counterparty": { + "description": "Recipient / counterparty address.", + "type": [ + "string", + "null" + ] + }, + "decision": { + "description": "Pre-execution decision.", + "enum": [ + "ALLOW", + "WARN", + "BLOCK", + "INCOMPLETE" + ], + "type": "string" + }, + "decoded_action": { + "description": "Decoded ERC20/ERC1155 action when recognized.", + "type": [ + "object", + "null" + ] + }, + "estimated_gas": { + "description": "Estimated gas from eth_estimateGas.", + "type": [ + "string", + "null" + ] + }, + "findings": { + "description": "Deterministic factual findings.", + "items": { + "type": "string" + }, + "type": "array" + }, + "interaction_type": { + "description": "Recognized interaction type.", + "type": "string" + }, + "latency_ms": { + "description": "Observed RPC latency in milliseconds.", + "type": "integer" + }, + "method_selector": { + "description": "First 4 bytes of calldata.", + "type": [ + "string", + "null" + ] + }, + "native_value": { + "description": "Native value in decimal wei.", + "type": [ + "string", + "null" + ] + }, + "provider": { + "description": "RPC provider identifier.", + "type": "string" + }, + "reasons": { + "description": "Human-readable reasons for the decision.", + "items": { + "type": "string" + }, + "type": "array" + }, + "simulation_status": { + "description": "RPC simulation outcome.", + "type": "string" + } + }, + "required": [ + "chain", + "decision", + "simulation_status", + "method_selector", + "interaction_type", + "counterparty", + "native_value", + "findings", + "reasons", + "provider", + "latency_ms" + ], + "type": "object" + } +] - removed
Output schema / propertiesRemoved value: -{ - "analysis": { - "description": "Deterministic execution, classification, selector, value, gas, fee, logs, and creation analysis.", - "type": "object" - }, - "chain": { - "description": "Selected EVM network.", - "type": "string" - }, - "latency_ms": { - "description": "Observed RPC latency in milliseconds.", - "type": "integer" - }, - "provider": { - "description": "RPC provider identifier.", - "type": "string" - }, - "receipt": { - "description": "Raw RPC receipt, or null when pending or unavailable.", - "type": [ - "object", - "null" - ] - }, - "transaction": { - "description": "Raw RPC transaction, or null when unavailable.", - "type": [ - "object", - "null" - ] - }, - "tx_hash": { - "description": "Requested transaction hash.", - "type": "string" - } -} - removed
Output schema / requiredRemoved value: -[ - "chain", - "tx_hash", - "analysis", - "transaction", - "receipt", - "provider", - "latency_ms" -]
- Removed
web_intelligence - Added
x402_payment_preflight_decision
4 tool updates
- Removed
chain_contract_call - Added
dns_intelligence - Added
transaction_intelligence - Removed
url_clean_content
1 tool update
- Changed
email_validator_basic13 fields changed- changed
Input schema / properties / email / descriptionPrevious value: -"Email address for syntax, domain and MX validation."New value: +"Email address for deliverability validation." - added
Input schema / properties / use_caseAdded value: +{ + "default": null, + "description": "Intended sending context; when provided, the decision accounts for context-specific risk.", + "enum": [ + "outbound_sales", + "account_signup", + "transactional_email", + "crm_import", + "lead_qualification" + ], + "title": "Use Case", + "type": "string" +} - added
Output schema / properties / checksAdded value: +{ + "properties": { + "disposable": { + "type": "string" + }, + "dmarc": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "mx": { + "type": "string" + }, + "role_account": { + "type": "string" + }, + "spf": { + "type": "string" + }, + "syntax": { + "type": "string" + } + }, + "type": "object" +} - added
Output schema / properties / confidenceAdded value: +{ + "description": "Confidence in the decision from 0 to 100.", + "type": "integer" +} - added
Output schema / properties / decisionAdded value: +{ + "description": "Context-aware send decision for the given use case.", + "enum": [ + "ALLOW", + "REVIEW", + "REJECT" + ], + "type": "string" +} - added
Output schema / properties / deliverability_scoreAdded value: +{ + "description": "Deliverability score from 0 to 100.", + "type": "integer" +} - added
Output schema / properties / domain / descriptionAdded value: +"Lowercased domain part." - added
Output schema / properties / emailAdded value: +{ + "description": "Validated email address (domain-lowercased).", + "type": "string" +} - added
Output schema / properties / mx_found / descriptionAdded value: +"Backward-compatible MX result; null means lookup unavailable." - added
Output schema / properties / risk_levelAdded value: +{ + "description": "Risk level derived from observed signals.", + "enum": [ + "LOW", + "MEDIUM", + "HIGH" + ], + "type": "string" +} - added
Output schema / properties / use_caseAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / valid / descriptionAdded value: +"Backward-compatible validity summary." - changed
Output schema / requiredPrevious value: -[ - "valid", - "domain", - "mx_found", - "reasons" -]New value: +[ + "valid", + "email", + "domain", + "deliverability_score", + "risk_level", + "decision", + "confidence", + "checks", + "reasons" +]
1 tool update
- Added
competitor_switch_intelligence
Publisher details
- Operator
- STRAELO · Publisher source
- Operator website
- https://straelo.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Trust center
- Not available
- Restrictions
- Some tools require x402 pay-per-use payment. No subscription or admin approval is required. · Publisher source
Related MCP Connectors
Agent MCP: 65 tools — 5-chain verification, risk, prediction & crypto trends, 17 web tools.
Agent MCP: 65 tools — 5-chain verification, risk, prediction & crypto trends, 17 web tools.
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
All 26 AgentX paid services as MCP tools — site checks, markets, crypto, email DNS, AI text work.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables AI agents to perform general-purpose open-source intelligence lookups across domains, infrastructure, identity, social media, and threat/breach sources through a unified MCP interface, with most tools free and no API keys required.32MIT
- AlicenseAqualityCmaintenanceWeb intelligence MCP server for AI agents. 7 tools for SERP analysis, competitor research, market trends, content gap analysis, keyword insights, audience discovery, and citation tracking.717 PyPI2AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables agents and analysts to gather public web information through seven MCP tools, including compliant search across 360/Bing/Sogou, reading pages and documents as Markdown, mapping sitemaps, scholarly lookups, and resumable link-by-link browsing with robots checks and rate limiting.1MIT
- AlicenseBqualityCmaintenanceEnables AI coding agents and LLMs to scrape web pages into clean Markdown, audit email deliverability and authentication records, and verify email signup fraud risk through MCP tools.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.