Skip to main content
Glama
NullClear — Web3 Security & Tx Decoder

NullClear — Web3 Security & Tx Decoder

Official

nullclear_escrow_x402_call

Execute x402-gated API calls through deferred schema escrow so payment settles only when upstream data satisfies your JSON Schema, invariants, and spend limits.

Instructions

Execute an x402-gated HTTP API call through NullClear deferred schema escrow. The arbiter guarantees payment is only settled if upstream returns valid data matching your schema contract. Works out-of-the-box with 10 free daily trial calls before requiring NULLCLEAR_PRIVATE_KEY.

Input Schema

NameRequiredDescriptionDefault
methodNoGET
fallbacksNoOrdered fallback candidates for autonomous multi-seller failover routing (max 3)
targetUrlYesUpstream API endpoint demanding x402 payment
invariantsNoDeep value invariants (numeric bounds, regex, forbidden substrings, timestamp freshness)
jsonSchemaNoJSON Schema draft-07 contract that response must strictly satisfy
spendPolicyNoOutbound spend firewall limits (maxPerCallAtomic, maxDailyWalletAtomic)
minTrustScoreNoMinimum acceptable trust score for seller (0-100, default 50)
sellerAgentIdNoSeller's agent ID for reputation check and Sybil wash-trade gating
rejectRefusalsNoReject canonical LLM refusal strings (default: true)
requiredFieldsNoDot-notation field paths that must exist in response (e.g. ['data.price'])
buyerPrivateKeyNoOptional buyer private key (defaults to Sponsored Free Tier, then NULLCLEAR_PRIVATE_KEY)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv1.3.2
    • changedInput schema / properties / buyerPrivateKey / description
      Previous value: -"Optional buyer private key (defaults to BUYER_PRIVATE_KEY environment variable)"New value: +"Optional buyer private key (defaults to Sponsored Free Tier, then NULLCLEAR_PRIVATE_KEY)"
    • addedInput schema / properties / fallbacks
      Added value: +{
      +  "description": "Ordered fallback candidates for autonomous multi-seller failover routing (max 3)",
      +  "items": {
      +    "properties": {
      +      "headers": {
      +        "type": "object"
      +      },
      +      "paymentSignatureHeader": {
      +        "type": "string"
      +      },
      +      "sellerAgentId": {
      +        "type": "string"
      +      },
      +      "targetUrl": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "targetUrl",
      +      "paymentSignatureHeader"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / invariants
      Added value: +{
      +  "description": "Deep value invariants (numeric bounds, regex, forbidden substrings, timestamp freshness)",
      +  "items": {
      +    "properties": {
      +      "eq": {},
      +      "gt": {
      +        "type": "number"
      +      },
      +      "gte": {
      +        "type": "number"
      +      },
      +      "lt": {
      +        "type": "number"
      +      },
      +      "lte": {
      +        "type": "number"
      +      },
      +      "maxLength": {
      +        "type": "number"
      +      },
      +      "maxStalenessSeconds": {
      +        "type": "number"
      +      },
      +      "minLength": {
      +        "type": "number"
      +      },
      +      "neq": {},
      +      "notContains": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "path": {
      +        "description": "Dot-notation property path",
      +        "type": "string"
      +      },
      +      "pattern": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "path"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / rejectRefusals
      Added value: +{
      +  "default": true,
      +  "description": "Reject canonical LLM refusal strings (default: true)",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / spendPolicy
      Added value: +{
      +  "description": "Outbound spend firewall limits (maxPerCallAtomic, maxDailyWalletAtomic)",
      +  "properties": {
      +    "maxDailyWalletAtomic": {
      +      "description": "Max rolling daily atomic USDC spend allowed",
      +      "type": "string"
      +    },
      +    "maxPerCallAtomic": {
      +      "description": "Max atomic USDC spend allowed per call",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-idempotent, non-destructive, open-world behavior, so the bar is lower. The description adds meaningful semantics beyond that: payment is only settled if upstream returns data matching the schema contract, plus the free-tier/auth fallback chain (Sponsored Free Tier -> NULLCLEAR_PRIVATE_KEY). It omits what happens on invariant failure (refund? error shape?), which is the biggest remaining behavioral question.

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

Conciseness5/5

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

Three tight sentences with the core action first, the guarantee second, and the operational precondition last. No filler and nothing redundant with the schema.

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

Completeness3/5

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

For an 11-parameter, nested-object, open-world payment tool with no output schema, the description covers the money-safety guarantee but says nothing about the return payload (success/failure shape, settlement receipt, validation error details) or the multi-seller fallback behavior. Adequate to start, thin for an agent that must interpret results and handle failures.

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

Parameters3/5

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

Schema description coverage is 91%, so the schema already documents nearly every parameter including nested invariants and spendPolicy fields. The description adds only the abstract notion of a 'schema contract' and says nothing about fallbacks, invariants, trust score, or spend limits beyond what the schema states. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource: executing an x402-gated HTTP call via deferred schema escrow, with the settlement guarantee spelled out. It distinguishes itself conceptually from plain fetch tools by naming the payment/escrow mechanism, but never explicitly contrasts with siblings like nullclear_safe_fetch or read_url_clean_markdown.

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

Usage Guidelines3/5

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

Provides the key precondition that 10 free daily trial calls are allowed before NULLCLEAR_PRIVATE_KEY is required, which is real usage context. However, it gives no guidance on when to choose this over nullclear_safe_fetch or nullclear_discover_verified_x402_apis, nor when to use fallbacks vs. a single target.

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