ToolAssay

x402 Endpoint Payment Check

x402 Endpoint Payment Check. Check an x402 endpoint's 402 payment-required body before you rely on it. Reports whether the contract is payable, whether it is opted in to the Bazaar catalogue, and whether a buying agent can read its input schema by machine. Every defect carries a JSON evidence path. Reads the body you supply; it does not pay or call the endpoint. A PASS is not a correctness guarantee and not a claim that the service is accurate.

Answeringour last check, 2026-09-24
1 of 1checks answered this week
150 msmedian answer time
$0.01listed price per call
$0.01price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://app.tenna.ai/api/x402/verifier/x402_endpoint_lint

CategoryEverything else
Provider hostapp.tenna.ai
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days1 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-09-24 valid payment request 402$0.01 150 ms

Example input (from the provider)

{
  "body": {
    "offering": "x402_endpoint_lint",
    "paymentRequiredBody": {
      "accepts": [
        {
          "scheme": "exact"
        }
      ],
      "resource": {
        "description": "what it sells",
        "url": "https://example/api"
      },
      "x402Version": 2
    }
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "description": "The 402 payment-required body returned by the endpoint.",
          "properties": {
            "offering": {
              "const": "x402_endpoint_lint",
              "description": "Offering identifier. Must be exactly 'x402_endpoint_lint'.",
              "type": "string"
            },
            "paymentRequiredBody": {
              "description": "The JSON body the endpoint returned with HTTP 402, verbatim.",
              "examples": [
                {
                  "accepts": [
                    {
                      "scheme": "exact"
                    }
                  ],
                  "resource": {
                    "description": "what it sells",
                    "url": "https://example/api"
                  },
                  "x402Version": 2
                }
              ],
              "type": "object"
            }
          },
          "required": [
            "offering",
            "paymentRequiredBody"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "additionalProperties": true,
          "properties": {
            "dataState": {
              "description": "COMPLETE when the body was readable.",
              "type": "string"
            },
            "findings": {
              "description": "Defects, each with a JSON evidence path and a recommended fix.",
              "items": {
                "type": "object"
              },
              "type": "array"
            },
            "grade": {
              "description": "Deterministic grade.",
              "enum": [
                "PASS",
                "WARN",
                "FAIL"
              ],
              "type": "string"
            },
            "indexable": {
              "description": "False when the Bazaar opt-in is missing, so the endpoint never appears in the catalogue however many payments settle.",
              "type": "boolean"
            },
            "limitations": {
              "description": "Coverage limits and missing data, always disclosed.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "machineReadableContract": {
              "description": "False when a non-standard schema keyword downgrades the published schema to a string, so a buying agent cannot read the contract.",
              "type": "boolean"
            },
            "offering": {
              "const": "x402_endpoint_lint",
              "description": "Offering that produced this result.",
              "type": "string"
            },
            "payable": {
              "description": "False when a defect would make settlement fail, such as a string over the facilitator's 500-character limit.",
              "type": "boolean"
            },
            "provenance": {
              "description": "Reproducibility metadata so another agent can audit this.",
              "properties": {
                "auditedDeliverableHash": {
                  "description": "Explicit alias for resultHash on deliverable-audit results; hashes the buyer-supplied input, not the audit envelope.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "generatedAt": {
                  "description": "Unix seconds.",
                  "type": "integer"
                },
                "ledgerLaunchCount": {
                  "description": "Launches in the ledger. Null when the offering is not derived from the launch ledger \u2014 this means not applicable, not collection failure.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "ledgerSpanHours": {
                  "description": "Hours of history covered. Null when the offering is not derived from the launch ledger.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "resultHash": {
                  "description": "Hash of the audited input, so the same verdict can be reproduced. Present on audit offerings.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "rubricVersion": {
                  "description": "Rubric the verdict was produced under. Present on audit offerings.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "source": {
                  "description": "Data origin.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "schemaVersion": {
              "description": "Deliverable contract version.",
              "type": "string"
            },
            "severityCounts": {
              "description": "Counts by severity.",
              "type": "object"
            }
          },
          "required": [
            "schemaVersion",
            "offering",
            "provenance",
            "limitations",
            "dataState",
            "grade",
            "finding

This page as JSON