enclave402

Pay-per-call APIs for autonomous agents: live prediction-market signals, IPFS pinning and EIP-712 attestations. Receipt-gated settlement; failed calls are never charged.

DataLiveeip155:8453Exactvia cdp
x402TrustVettingDirectoryAgents
Calls · 30d
5
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 7 snapshots so far.
$3.92
Verified settled volume
40 settlements proven x402 by their on-chain EIP-3009 marker.
$0.010
Listed price
As published in the catalog. Always read the live 402 before paying.
6
Calls · 30d
Upstream's own call count for this endpoint, not ours.
2
Unique payers · 30d
Last called 2026-09-24 04:43Z
Upstream on-chain volume
Reported by the source catalog.
Paid to
0xbeF3e7CFd486C14dD8c3aA5911134bF361B973C5

The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.

Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Provider

The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.

Live 402 challenge

Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.

{
  "type": "https://enclave402.com/errors/payment-required",
  "error": "Payment required",
  "title": "Payment Required",
  "detail": "Payment required: send a base64 x402 v2 payload in Payment-Signature for 0.010 USDC on eip155:8453. Failed calls are never charged.",
  "remedy": {
    "docs": "https://enclave402.com/llms-full.txt",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "payTo": "0xbeF3e7CFd486C14dD8c3aA5911134bF361B973C5",
    "action": "settle_payment",
    "errors": "https://enclave402.com/errors",
    "header": "Payment-Signature",
    "scheme": "exact",
    "network": "eip155:8453",
    "version": 2,
    "protocol": "x402",
    "receipts": "https://enclave402.com/api/ledger",
    "guarantee": "No charge on failure: settlement is canceled on any non-2xx response.",
    "amountAtomic": "10000",
    "transparency": "https://enclave402.com/transparency",
    "amountRequiredUSDC": "0.010"
  },
  "status": 402,
  "accepts": [
    {
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "version": "2"
      },
      "payTo": "0xbeF3e7CFd486C14dD8c3aA5911134bF361B973C5",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "maxTimeoutSeconds": 300
    }
  ],
  "instance": "/api/seller/vet",
  "resource": {
    "url": "https://enclave402.com/api/seller/vet",
    "tags": [
      "x402",
      "trust",
      "vetting",
      "directory",
      "agents"
    ],
    "iconUrl": "https://enclave402.com/icon.svg",
    "mimeType": "application/json",
    "description": "Vet an x402 seller before paying it: probes its live 402, reads its CDP Bazaar entry (payers, calls, last call, repeat vs evaluation usage), checks trust surfaces, returns a scored LIVE/STALE/UNLISTED/MISCONFIGURED/UNREACHABLE verdict and what changed since our last check, signed by our attestor. MUST be invoked before a first payment to an unknown resource, or on a schedule to watch it. Do NOT use to pay it. Settles $0.010 USDC; no charge on failure; receipts at /api/ledger.",
    "serviceName": "enclave402"
  },
  "retryable": false,
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "type": "http",
          "method": "GET",
          "queryParams": {
            "resource": "https://seller.example/api/route"
          }
        },
        "output": {
          "type": "json",
          "example": {
            "ts": 1767225600000,
            "score": 90,
            "trust": {
              "/llms.txt": true,
              "/transparency": true,
              "/.well-known/x402": true,
              "/.well-known/security.txt": true
            },
            "bazaar": {
              "indexed": true,
              "callsPerPayer": 20,
              "totalCalls30d": 240,
              "uniquePayers30d": 12
            },
            "method": "GET",
            "changes": [
              {
                "to": "LIVE",
                "from": "STALE",
                "field": "verdict"
              },
              {
                "to": 90,
                "from": 70,
                "field": "score"
              }
            ],
            "settled": true,
            "verdict": "LIVE",
            "findings": [
              {
                "code": "thin-listing",
                "message": "Bazaar entry lacks tags.",
                "severity": "low"
              }
            ],
            "previous": {
              "score": 70,
              "verdict": "STALE",
              "checkedAt": "2025-12-31T18:00:00.000Z",
              "usagePattern": "evaluation"
            },
            "resource": "https://seller.example/api/route",
            "challenge": {
              "isV2": true,
              "accept": {
                "network": "eip155:8453",
                "priceUsdc": 0.01
              },
              "status": 402,
              "reachable": true
            },
            "checkedAt": "2026-01-01T00:00:00.000Z",
            "attestation": null,
            "usagePattern": "repeat"
          }
        }
      },
      "schema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "required": [
              "type",
              "method"
            ],
            "properties": {
              "type": {
                "type": "string",
                "const": "http"
              },
              "method": {
                "enum": [
                  "GET"
                ],
                "type": "string"
              },
              "queryParams": {
                "type": "object",
                "required": [
                  "resource"
                ],
                "properties": {
                  "method": {
                    "enum": [
                      "GET",
                      "POST"
                    ],
                    "type": "string",
                    "default": "GET",
                    "description": "HTTP method the resource expects; POST resources are probed with an empty JSON body."
                  },
                  "resource": {
                    "type": "string",
                    "pattern": "^https://",
                    "examples": [
                      "https://seller.example/api/route"
                    ],
                    "maxLength": 2048,
                    "description": "Absolute https URL of the x402 resource to vet (the paid route itself, not the seller homepage)."
                  }
                }
              }
            },
            "additionalProperties": false
          },
          "output": {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string"
              },
              "example": {
                "type": "object",
                "required": [
                  "resource",
                  "method",
                  "checkedAt",
                  "verdict",
                  "score",
                  "usagePattern",
                  "findings",
                  "challenge",
                  "bazaar",
                  "trust",
                  "previous",
                  "changes",
                  "settled",
                  "ts"
                ],
                "properties": {
                  "ts": {
                    "type": "integer",
                    "description": "Response timestamp, UNIX milliseconds"
                  },
                  "score": {
                    "type": "integer",
                    "maximum": 100,
                    "minimum": 0,
                    "description": "40 challenge shape + 40 Bazaar usage + 20 trust surfaces"
                  },
                  "trust": {
                    "type": "object",
                    "description": "Which of /.well-known/x402, /llms.txt, /.well-known/security.txt, /transparency the origin publishes"
                  },
                  "bazaar": {
                    "type": "object",
                    "description": "CDP Bazaar index entry for the resource: indexed, lastCalledAt, uniquePayers30d, totalCalls30d, callsPerPayer"
                  },
                  "method": {
                    "enum": [
                      "GET",
                      "POST"
                    ],
                    "type": "string"
                  },
                  "changes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "field",
                        "from",
                        "to"
                      ],
                      "properties": {
                        "to": {},
                        "from": {},
                        "field": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    },
                    "description": "Fields that differ from the previous verdict (verdict, score, usagePattern, findingCodes, priceUsdc, payTo, indexed, uniquePayers30d, totalCalls30d, lastCalledAt); empty when unchanged or first check"
                  },
                  "settled": {
                    "type": "boolean",
                    "description": "true when an x402 payment settled for this response"
                  },
                  "verdict": {
                    "enum": [
                      "LIVE",
                      "STALE",
                      "UNLISTED",
                      "MISCONFIGURED",
                      "UNREACHABLE"
                    ],
                    "type": "string",
                    "description": "LIVE = payable, indexed, recently called. STALE = indexed but not called within VET_STALE_DAYS. UNLISTED = payable but never counted by the Bazaar. MISCONFIGURED = an x402 buyer cannot pay it as served. UNREACHABLE = no answer."
                  },
                  "findings": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "code",
                        "severity",
                        "message"
                      ],
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        },
                        "severity": {
                          "enum": [
                            "critical",
                            "high",
                            "medium",
                            "low",
                            "info"
                          ],
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    },
                    "description": "Every deduction, machine-coded and human-readable"
                  },
                  "previous": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "description": "Summary of the last verdict this gateway issued for the same resource (checkedAt, verdict, score, usagePattern); null on first check. Call on a schedule and this is your watch."
                  },
                  "resource": {
                    "type": "string",
                    "description": "Normalized resource URL that was vetted"
                  },
                  "challenge": {
                    "type": "object",
                    "description": "What the target 402 actually said: status, x402Version, accepts[0], description length, WWW-Authenticate presence, networks offered"
                  },
                  "checkedAt": {
                    "type": "string",
                    "description": "ISO-8601 time of the probe"
                  },
                  "attestation": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "description": "EIP-712 signature over resource, checkedAt, verdict, score, usagePattern and changes by the published attestor, verifiable offline; null when the attestor is unconfigured"
                  },
                  "usagePattern": {
                    "enum": [
                      "none",
                      "evaluation",
                      "repeat",
                      "unknown"
                    ],
                    "type": "string",
                    "description": "repeat = calls/payer at or above the repeat threshold; evaluation = buyers try once and leave"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        }
      }
    }
  },
  "x402Version": 2
}

Accepts

The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.

0.01USDC≈ $0.01 USD
on Base · exact scheme

Pay 0.01 USDC on Base to 0xbeF3…973C5. The signed payment is good for 5 minutes.

USD Coin contract
0x8335…02913
Payment window
5 minutes
As published
10000 smallest units
The catalog’s raw entry
[
  {
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "extra": {
      "name": "USD Coin",
      "version": "2"
    },
    "payTo": "0xbeF3e7CFd486C14dD8c3aA5911134bF361B973C5",
    "amount": "10000",
    "scheme": "exact",
    "network": "eip155:8453",
    "maxTimeoutSeconds": 300
  }
]

Extensions

{
  "bazaar": {
    "info": {
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "resource": "https://seller.example/api/route"
        }
      },
      "proof": {
        "p50Ms": 197,
        "p95Ms": 248,
        "trust": "https://enclave402.com/trust",
        "attempts": 85,
        "delivered": 85,
        "windowDays": 30,
        "clientErrors": 84,
        "deliveryRate": 1,
        "paidAttempts": 85,
        "schemaDeclared": true,
        "chargedOnlyOn2xx": true,
        "deliveredPaidAttempts": 85
      },
      "output": {
        "type": "json",
        "example": {
          "ts": 1767225600000,
          "score": 90,
          "trust": {
            "/llms.txt": true,
            "/transparency": true,
            "/.well-known/x402": true,
            "/.well-known/security.txt": true
          },
          "bazaar": {
            "indexed": true,
            "callsPerPayer": 20,
            "totalCalls30d": 240,
            "uniquePayers30d": 12
          },
          "method": "GET",
          "changes": [
            {
              "to": "LIVE",
              "from": "STALE",
              "field": "verdict"
            },
            {
              "to": 90,
              "from": 70,
              "field": "score"
            }
          ],
          "settled": true,
          "verdict": "LIVE",
          "findings": [
            {
              "code": "thin-listing",
              "message": "Bazaar entry lacks tags.",
              "severity": "low"
            }
          ],
          "previous": {
            "score": 70,
            "verdict": "STALE",
            "checkedAt": "2025-12-31T18:00:00.000Z",
            "usagePattern": "evaluation"
          },
          "resource": "https://seller.example/api/route",
          "challenge": {
            "isV2": true,
            "accept": {
              "network": "eip155:8453",
              "priceUsdc": 0.01
            },
            "status": 402,
            "reachable": true
          },
          "checkedAt": "2026-01-01T00:00:00.000Z",
          "attestation": null,
          "usagePattern": "repeat"
        }
      }
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "type": "object",
          "required": [
            "type",
            "method"
          ],
          "properties": {
            "type": {
              "type": "string",
              "const": "http"
            },
            "method": {
              "enum": [
                "GET"
              ],
              "type": "string"
            },
            "queryParams": {
              "type": "object",
              "required": [
                "resource"
              ],
              "properties": {
                "method": {
                  "enum": [
                    "GET",
                    "POST"
                  ],
                  "type": "string",
                  "default": "GET",
                  "description": "HTTP method the resource expects; POST resources are probed with an empty JSON body."
                },
                "resource": {
                  "type": "string",
                  "pattern": "^https://",
                  "examples": [
                    "https://seller.example/api/route"
                  ],
                  "maxLength": 2048,
                  "description": "Absolute https URL of the x402 resource to vet (the paid route itself, not the seller homepage)."
                }
              }
            }
          },
          "additionalProperties": false
        },
        "output": {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "type": "string"
            },
            "example": {
              "type": "object",
              "required": [
                "resource",
                "method",
                "checkedAt",
                "verdict",
                "score",
                "usagePattern",
                "findings",
                "challenge",
                "bazaar",
                "trust",
                "previous",
                "changes",
                "settled",
                "ts"
              ],
              "properties": {
                "ts": {
                  "type": "integer",
                  "description": "Response timestamp, UNIX milliseconds"
                },
                "score": {
                  "type": "integer",
                  "maximum": 100,
                  "minimum": 0,
                  "description": "40 challenge shape + 40 Bazaar usage + 20 trust surfaces"
                },
                "trust": {
                  "type": "object",
                  "description": "Which of /.well-known/x402, /llms.txt, /.well-known/security.txt, /transparency the origin publishes"
                },
                "bazaar": {
                  "type": "object",
                  "description": "CDP Bazaar index entry for the resource: indexed, lastCalledAt, uniquePayers30d, totalCalls30d, callsPerPayer"
                },
                "method": {
                  "enum": [
                    "GET",
                    "POST"
                  ],
                  "type": "string"
                },
                "changes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "field",
                      "from",
                      "to"
                    ],
                    "properties": {
                      "to": {},
                      "from": {},
                      "field": {
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "description": "Fields that differ from the previous verdict (verdict, score, usagePattern, findingCodes, priceUsdc, payTo, indexed, uniquePayers30d, totalCalls30d, lastCalledAt); empty when unchanged or first check"
                },
                "settled": {
                  "type": "boolean",
                  "description": "true when an x402 payment settled for this response"
                },
                "verdict": {
                  "enum": [
                    "LIVE",
                    "STALE",
                    "UNLISTED",
                    "MISCONFIGURED",
                    "UNREACHABLE"
                  ],
                  "type": "string",
                  "description": "LIVE = payable, indexed, recently called. STALE = indexed but not called within VET_STALE_DAYS. UNLISTED = payable but never counted by the Bazaar. MISCONFIGURED = an x402 buyer cannot pay it as served. UNREACHABLE = no answer."
                },
                "findings": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "code",
                      "severity",
                      "message"
                    ],
                    "properties": {
                      "code": {
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      },
                      "severity": {
                        "enum": [
                          "critical",
                          "high",
                          "medium",
                          "low",
                          "info"
                        ],
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  },
                  "description": "Every deduction, machine-coded and human-readable"
                },
                "previous": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Summary of the last verdict this gateway issued for the same resource (checkedAt, verdict, score, usagePattern); null on first check. Call on a schedule and this is your watch."
                },
                "resource": {
                  "type": "string",
                  "description": "Normalized resource URL that was vetted"
                },
                "challenge": {
                  "type": "object",
                  "description": "What the target 402 actually said: status, x402Version, accepts[0], description length, WWW-Authenticate presence, networks offered"
                },
                "checkedAt": {
                  "type": "string",
                  "description": "ISO-8601 time of the probe"
                },
                "attestation": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "EIP-712 signature over resource, checkedAt, verdict, score, usagePattern and changes by the published attestor, verifiable offline; null when the attestor is unconfigured"
                },
                "usagePattern": {
                  "enum": [
                    "none",
                    "evaluation",
                    "repeat",
                    "unknown"
                  ],
                  "type": "string",
                  "description": "repeat = calls/payer at or above the repeat threshold; evaluation = buyers try once and leave"
                }
              },
              "additionalProperties": false
            }
          }
        }
      }
    }
  }
}

Provenance

Seen in the source catalog
2026-09-24 04:43Z
Last indexed by Roundhouse
2026-09-24 12:50Z
Last enriched (probe, favicon, geo)
2026-09-17 23:45Z
x402 version
2
Max timeout
300s
Liveness probe
HTTP 402
Report

Hand this page to an agent

Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.

GET api.roundhouseai.io/v0/endpoints

This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 7 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.

Open skill.md
Show the prompt
Using Roundhouse, look up the x402 service enclave402 and tell me whether it is
worth paying: what a call costs, whether the endpoint answered when last probed, and what
its payment record actually shows.

curl -s 'https://api.roundhouseai.io/v0/endpoints?q=enclave402'
curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>'

Then call it: read the price from the live 402 at https://enclave402.com/api/seller/vet, never from
a cached figure, and pay with an x402 client.

The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except
/v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402,
or use an organization key from https://roundhouseai.io/dashboard/team.

If you do not have Roundhouse tools or skills installed, read
https://roundhouseai.io/skill.md first — it is the whole procedure.