Skip to main content
Glama

What vet402 saw when it paid this x402 URL

check_x402_seller
Read-onlyIdempotent

check_x402_seller shows what happened when vet402 paid an x402 URL: whether the payment settled, whether content came back, and the transaction where vet402 recorded one. For WARN or BLOCK, read reason_codes. verified_terms holds the payTo, amount and network of the last purchase where content came back, so they can be set against the terms of a 402 response. Its amount is in 6-decimal ledger units: multiply it by 10^12 on BNB Chain and by 10 on Stellar before comparing it with a 402. When method is left out, GET is looked up first and then POST. A URL that vet402 has no record of comes back with not_in_catalog set to true, up to five other listings on the same host, and the catalogs vet402 reads.

Input Schema

NameRequiredDescriptionDefault
urlYesThe x402 URL, as an absolute https URL of up to 2048 characters.
methodNoThe HTTP method of the listing, such as GET or POST. Leave it out to look up GET first and then POST.

Output Schema

NameRequiredDescriptionDefault
noteYes
as_ofYes
methodYes
deliveryYes
freshnessYes
l0_statusYes
truncatedYes
method_urlYes
record_urlYes
l1_purchasesYes
reason_codesYes
canonical_urlYes
not_in_catalogYes
recommendationYes
verified_termsYes
listing_sourcesYes
spending_haltedYes
same_host_listingsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / verified_terms / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "amount": {
      -        "type": "string"
      -      },
      -      "asset": {
      -        "type": "string"
      -      },
      -      "decimals": {
      -        "const": 6,
      -        "type": "number"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "pay_to": {
      -        "type": "string"
      -      },
      -      "protocol": {
      -        "enum": [
      -          "x402",
      -          "mpp"
      -        ],
      -        "type": "string"
      -      },
      -      "purchase_id": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "scheme": {
      -        "enum": [
      -          "exact",
      -          "charge"
      -        ],
      -        "type": "string"
      -      },
      -      "verified_at": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "purchase_id",
      -      "pay_to",
      -      "asset",
      -      "amount",
      -      "decimals",
      -      "network",
      -      "scheme",
      -      "protocol",
      -      "verified_at"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "amount": {
      +        "description": "6-decimal ledger units, not always the asset's own base units: multiply by 10^12 on BNB Chain and by 10 on Stellar before comparing with a 402.",
      +        "type": "string"
      +      },
      +      "asset": {
      +        "type": "string"
      +      },
      +      "decimals": {
      +        "const": 6,
      +        "description": "The decimals of amount in the ledger, not of the asset.",
      +        "type": "number"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "pay_to": {
      +        "type": "string"
      +      },
      +      "protocol": {
      +        "enum": [
      +          "x402",
      +          "mpp"
      +        ],
      +        "type": "string"
      +      },
      +      "purchase_id": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "scheme": {
      +        "enum": [
      +          "exact",
      +          "charge"
      +        ],
      +        "type": "string"
      +      },
      +      "verified_at": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "purchase_id",
      +      "pay_to",
      +      "asset",
      +      "amount",
      +      "decimals",
      +      "network",
      +      "scheme",
      +      "protocol",
      +      "verified_at"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed19 schema fields changed
    • removedOutput schema / properties / canonical_url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / canonical_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / delivery / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "delivered": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "last_attempt_at": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "paid_attempts": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "settled_not_delivered": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "window_days": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "paid_attempts",
      -      "delivered",
      -      "settled_not_delivered",
      -      "last_attempt_at",
      -      "window_days"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "delivered": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "last_attempt_at": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "paid_attempts": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "settled_not_delivered": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "window_days": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "paid_attempts",
      +      "delivered",
      +      "settled_not_delivered",
      +      "last_attempt_at",
      +      "window_days"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / freshness / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "l0": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "l1": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "l2": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "l0",
      -      "l1",
      -      "l2"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "l0": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "l1": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "l2": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "l0",
      +      "l1",
      +      "l2"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / l1_purchases / items / properties / explorer_url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / l1_purchases / items / properties / explorer_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / l1_purchases / items / properties / network / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / l1_purchases / items / properties / network / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / l1_purchases / items / properties / tx_hash / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / l1_purchases / items / properties / tx_hash / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / method / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / method / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / note / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / note / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / record_url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / record_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / spending_halted / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / spending_halted / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • changedOutput schema / properties / verified_terms / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "amount": {
      -        "type": "string"
      -      },
      -      "asset": {
      -        "type": "string"
      -      },
      -      "decimals": {
      -        "const": 6,
      -        "type": "number"
      -      },
      -      "network": {
      -        "type": "string"
      -      },
      -      "pay_to": {
      -        "type": "string"
      -      },
      -      "protocol": {
      -        "enum": [
      -          "x402",
      -          "mpp"
      -        ],
      -        "type": "string"
      -      },
      -      "purchase_id": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "scheme": {
      -        "enum": [
      -          "exact",
      -          "charge"
      -        ],
      -        "type": "string"
      -      },
      -      "verified_at": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "purchase_id",
      -      "pay_to",
      -      "asset",
      -      "amount",
      -      "decimals",
      -      "network",
      -      "scheme",
      -      "protocol",
      -      "verified_at"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "amount": {
      +        "type": "string"
      +      },
      +      "asset": {
      +        "type": "string"
      +      },
      +      "decimals": {
      +        "const": 6,
      +        "type": "number"
      +      },
      +      "network": {
      +        "type": "string"
      +      },
      +      "pay_to": {
      +        "type": "string"
      +      },
      +      "protocol": {
      +        "enum": [
      +          "x402",
      +          "mpp"
      +        ],
      +        "type": "string"
      +      },
      +      "purchase_id": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "scheme": {
      +        "enum": [
      +          "exact",
      +          "charge"
      +        ],
      +        "type": "string"
      +      },
      +      "verified_at": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "purchase_id",
      +      "pay_to",
      +      "asset",
      +      "amount",
      +      "decimals",
      +      "network",
      +      "scheme",
      +      "protocol",
      +      "verified_at"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. First observed

TDQS

A3.9/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behavior: the GET-then-POST fallback when method is omitted, the 6-decimal ledger unit for amount with 10^12 (BNB Chain) and 10 (Stellar) multipliers, and the not_in_catalog response shape with up to five same-host listings plus catalogs. These are non-obvious traits an agent could not derive from the structured fields.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause and every subsequent sentence carries real information (reason_codes, verified_terms, unit conversion, fallback order, not_in_catalog). It is dense and slightly run-on — 'Its amount is in 6-decimal ledger units' has an unclear antecedent — but no sentence is filler.

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

Completeness4/5

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

With an output schema present, return values need not be explained, yet the description still disambiguates key fields (reason_codes for WARN/BLOCK, verified_terms contents, not_in_catalog) and the tricky unit conversion. Remaining gaps are minor: 'the catalogs vet402 reads' is vague and freshness/pagination of the record is unstated.

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% and both parameters are already documented, including the GET-first-then-POST rule which the description repeats verbatim. The description adds no further parameter meaning (e.g. what a URL matching multiple listings returns), so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: it reports what happened when vet402 paid a given x402 URL — settlement status, whether content came back, and the recording transaction. That is concrete enough to distinguish it from check_my_x402_endpoint (your own endpoint) and find_x402_sellers (discovery), though it never names those siblings explicitly.

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?

Usage is only implied: the stated purpose of verified_terms is to be 'set against the terms of a 402 response', which suggests when to reach for it. There is no explicit when-not guidance, no prerequisites, and no routing to the two sibling tools, so the agent must infer selection.

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.