Skip to main content
Glama

endpoint_spot_check

Decision-shaped 402xAgent check of a public URL (private, loopback and link-local addresses blocked on every redirect hop) for an x402 PAYMENT-REQUIRED / 402 challenge. Every answer has reason_code (stable code) and confidence (high|medium|low); rules: https://402xagent.com/rules.json. History: stable_for_days, last_changed, drift. Free: verdict (pay|skip|recheck), a plain-words reason, payment_terms_sha256 (hash of the approved payment), and access. Paid: verdict, reason code, quoted/claimed price, pay_to, network, asset, and payment = the exact {network, asset, amount_atomic, amount_usd, pay_to} a router may sign (verdict pay only), plus access with the settlement tx. No 402 terms is skip/no_paywall (recheck/free_trial_active when the target sends x-free-trial headers); recheck only for timeouts, 5xx and network errors; wrong or unsupported network, non-canonical USDC or a pay_to that differs from the listing is skip. The same normalized URL + method reuses one probe for 5 min, so consecutive calls agree. mode=dry-run: free dry run (nothing signed or paid, stored as a public receipt, no approval hash, 50/caller/day). Never pays the target (probe GET only). 5 free checks per client per UTC day (at most 25 per network) (client=vc-mcp), then $0.02 USDC a check on Base via x402. Unpaid after free quota: payment instructions. Forward PAYMENT-SIGNATURE for a paid check.

Input Schema

NameRequiredDescriptionDefault
refNooptional attribution tag stored on the receipt (dry-run-<caller> sets mode=dry-run)
urlYespublic http(s) URL to probe
modeNooptional: dry-run = free dry run: one unpaid probe, nothing signed or paid, always stored as a public receipt (check_type dry-run). Returns the free-tier shape with payment_terms_sha256 null (never an approval). 50 per caller (ref, else client, else IP) per UTC day. ref=dry-run-<caller> also sets it
taskNooptional task label (ignored in decision output)
methodNooptional: probe the target with POST (empty JSON body) for POST-only endpoints
pay_toNooptional: the wallet you expect to pay (from your listing)
networkNooptional: the CAIP-2 network you expect, e.g. eip155:8453
claimed_priceNooptional claimed USD price to compare vs quoted

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / mode
      Added value: +{
      +  "description": "optional: dry-run = free dry run: one unpaid probe, nothing signed or paid, always stored as a public receipt (check_type dry-run). Returns the free-tier shape with payment_terms_sha256 null (never an approval). 50 per caller (ref, else client, else IP) per UTC day. ref=dry-run-<caller> also sets it",
      +  "enum": [
      +    "live",
      +    "dry-run"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / ref
      Added value: +{
      +  "description": "optional attribution tag stored on the receipt (dry-run-<caller> sets mode=dry-run)",
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / method
      Added value: +{
      +  "description": "optional: probe the target with POST (empty JSON body) for POST-only endpoints",
      +  "enum": [
      +    "GET",
      +    "POST"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / network
      Added value: +{
      +  "description": "optional: the CAIP-2 network you expect, e.g. eip155:8453",
      +  "type": "string"
      +}
    • addedInput schema / properties / pay_to
      Added value: +{
      +  "description": "optional: the wallet you expect to pay (from your listing)",
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / claimed_price / description
      Previous value: -"optional claimed USD price to compare"New value: +"optional claimed USD price to compare vs quoted"
    • changedInput schema / properties / task / description
      Previous value: -"optional task label"New value: +"optional task label (ignored in decision output)"
  4. Added

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it states the target is never paid (probe GET only), that results are cached per normalized URL+method for 5 minutes, that dry-run creates a public receipt with no approval hash, and it gives exact rate limits (5 free/client/day, 25/network, 50/caller/day dry-run) and price ($0.02 USDC on Base). Blocked address classes and the free-vs-paid response shapes are disclosed too.

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

Conciseness3/5

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

A single dense paragraph of ~200 words with no line breaks, mixing purpose, verdict taxonomy, output fields, caching, pricing and quota. Every element is useful, but the verdict-rules and payment mechanics crowd the core 'what this does', so it is informative rather than front-loaded.

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

Completeness5/5

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

There is no output schema, and the description compensates fully by enumerating the free-tier return (verdict, plain-words reason, payment_terms_sha256, access) and the paid return (price, pay_to, network, asset, signable payment object, settlement tx). For an 8-parameter, no-annotation tool, an agent has everything needed to call it and interpret the reply.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description reinforces a few parameters (mode=dry-run behavior, ref as attribution tag, the pay_to-vs-listing skip rule) but adds no syntax or format detail that the schema does not already provide for the remaining params (task, method, network, claimed_price).

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

Purpose4/5

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

The first clause names a specific verb and resource: a check of a public URL for an x402 PAYMENT-REQUIRED / 402 challenge, with the probe scope (blocked private/loopback/link-local, redirect-hop checks) spelled out. That is far more specific than the sibling names discover or lookup imply, but the description never explicitly contrasts itself with endpoint_report or get_receipt, so sibling differentiation is left to inference.

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

Usage Guidelines4/5

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

Usage conditions are unusually concrete: recheck only for timeouts/5xx/network errors, skip for wrong network or non-canonical USDC, mode=dry-run for a free unpaid probe, forward PAYMENT-SIGNATURE for a paid check. What is missing is tool-level routing – nothing says when to prefer this over endpoint_report or x402_hygiene.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.