Horizon Pulse
x402 endpoint deep check, never pays or signs: the full /api/x402-check report plus live checks. GET url (optional method, body). Adds TLS, security headers, CORS, payTo vs the payee's own published addresses (/.well-known/x402, openapi.json, llms.txt), lookalike payTo detection, and drift between the live 402 and well-known, openapi and CDP Bazaar listings. Any HTTP answer from the target is billed; bad input, blocked hosts and timeouts are not.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
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.
Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.03 USDC on Base to 0x5b32…be0e9. The signed payment is good for 5 minutes.
- Paid to
- 0x5b32…be0e9
- USD Coin contract
- 0x8335…02913
- Payment window
- 5 minutes
- As published
- 30000 smallest units
That figure is in the token’s smallest units. Roundhouse does not hold this contract’s decimals, so it is shown as published rather than converted.
- Paid to
- 0x5b32…be0e9
- Token contract
- 0x60a3…adb42
- Payment window
- 5 minutes
That figure is in the token’s smallest units. Roundhouse does not hold this contract’s decimals, so it is shown as published rather than converted.
- Paid to
- BjY98A…BTRPz
- Token contract
- EPjFWd…TDt1v
- Payment window
- 5 minutes
That figure is in the token’s smallest units. Roundhouse does not hold this contract’s decimals, so it is shown as published rather than converted.
- Paid to
- r3Fbir…6LQcf
- Token contract
- 524C55…00000
- Payment window
- 5 minutes
That figure is in the token’s smallest units. Roundhouse does not hold this contract’s decimals, so it is shown as published rather than converted.
- Paid to
- 0x5b32…be0e9
- Token contract
- 0x3c49…c3359
- Payment window
- 5 minutes
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x5b32c973596078a967562ca652761404f19be0e9",
"amount": "30000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
},
{
"asset": "0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42",
"extra": {
"name": "EURC",
"buffer": "1.01",
"pricing": "EURC amount = ceil(USD price / eurUsdRate * buffer), 6 decimals; fixed rate, no live FX",
"version": "2",
"rateDate": "2026-10-23",
"eurUsdRate": "1.1193",
"rateSource": "ECB euro reference rate"
},
"payTo": "0x5b32c973596078a967562ca652761404f19be0e9",
"amount": "27071",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
},
{
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"extra": {
"feePayer": "CjNFTjvBhbJJd2B5ePPMHRLx1ELZpa8dwQgGL727eKww"
},
"payTo": "BjY98A6dS3GGLZdz2zHy8wK7XAwnQgNhCc66mfmBTRPz",
"amount": "30000",
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"maxTimeoutSeconds": 300
},
{
"asset": "524C555344000000000000000000000000000000",
"extra": {
"issuer": "rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De",
"areFeesSponsored": false
},
"payTo": "r3FbirL83RAB2CwnUdxE5pCohMkuo6LQcf",
"amount": "0.03",
"scheme": "exact",
"network": "xrpl:0",
"maxTimeoutSeconds": 300
},
{
"asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0x5b32c973596078a967562ca652761404f19be0e9",
"amount": "30000",
"scheme": "exact",
"network": "eip155:137",
"maxTimeoutSeconds": 300
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"url": "https://horizonpulse.dev/api/pulse",
"method": "GET"
}
},
"output": {
"type": "json",
"example": {
"ok": true,
"tls": {
"ok": true,
"san": [
"horizonpulse.dev"
],
"issuer": "Let's Encrypt / YR2",
"checked": true,
"subject": "horizonpulse.dev",
"validTo": "Dec 18 17:49:23 2026 GMT",
"daysLeft": 59,
"protocol": "TLSv1.3",
"validFrom": "Sep 19 17:49:24 2026 GMT",
"authorized": true,
"authorizationError": null
},
"asOf": "2026-10-19T19:46:19.614Z",
"cors": {
"allowOrigin": null,
"exposeHeaders": null,
"allowCredentials": null,
"paymentRequiredExposed": false
},
"tier": "deep",
"drift": {
"bazaar": {
"detail": null,
"status": "consistent",
"networks": [
"base",
"solana",
"xrpl",
"polygon"
]
},
"openapi": {
"detail": null,
"status": "consistent"
},
"wellKnown": "listed"
},
"checks": [
{
"id": "tls",
"level": "pass",
"message": "TLS TLSv1.3 trusted, 59 days to expiry."
},
{
"id": "hsts",
"level": "pass",
"message": "HSTS present (max-age >= 180 days)."
},
{
"id": "nosniff",
"level": "pass",
"message": "X-Content-Type-Options: nosniff."
},
{
"id": "frame_policy",
"level": "info",
"message": "No frame policy (X-Frame-Options or CSP frame-ancestors); low impact for a JSON API."
},
{
"id": "referrer_policy",
"level": "info",
"message": "No Referrer-Policy header."
},
{
"id": "cors",
"level": "info",
"message": "No Access-Control-Allow-Origin on the unpaid response (passive read, no Origin sent): browser-based agents on other origins cannot read the challenge; server-side agents are unaffected."
},
{
"id": "payto_published",
"level": "pass",
"message": "payTo 0x5b32c973596078a967562ca652761404f19be0e9 (EIP-7702-delegated EOA) matches the address the payee publishes in openapi, llms, well-known."
},
{
"id": "payto_published",
"level": "pass",
"message": "payTo BjY98A6dS3GGLZdz2zHy8wK7XAwnQgNhCc66mfmBTRPz matches the address the payee publishes in openapi, well-known, llms."
},
{
"id": "payto_published",
"level": "pass",
"message": "payTo r3FbirL83RAB2CwnUdxE5pCohMkuo6LQcf matches the address the payee publishes in openapi, well-known, llms."
},
{
"id": "drift_well_known",
"level": "pass",
"message": "URL is listed in the origin's /.well-known/x402."
},
{
"id": "drift_openapi",
"level": "pass",
"message": "openapi.json operation is consistent with the live 402."
},
{
"id": "drift_bazaar",
"level": "pass",
"message": "CDP Bazaar entry matches the live 402 (base, solana, xrpl, polygon)."
}
],
"isX402": true,
"method": "GET",
"priced": {
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x5b32c973596078a967562ca652761404f19be0e9",
"network": "base",
"amountUsd": "$0.03",
"amountAtomic": "30000"
},
"source": "x402-check-deep",
"target": "https://horizonpulse.dev/api/pulse",
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x5b32c973596078a967562ca652761404f19be0e9",
"scheme": "exact",
"network": "eip155:8453",
"amountUsd": "$0.002",
"payToType": "eoa_7702",
"assetLabel": "USDC (Base)",
"amountAtomic": "2000",
"payToDelegate": "0x7702cb554e6bfb442cb743a7df23154544a7176c",
"maxTimeoutSeconds": 300
},
{
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"payTo": "BjY98A6dS3GGLZdz2zHy8wK7XAwnQgNhCc66mfmBTRPz",
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"amountUsd": "$0.002",
"payToType": null,
"assetLabel": "USDC (Solana)",
"amountAtomic": "2000",
"payToDelegate": null,
"maxTimeoutSeconds": 300
},
{
"asset": "524C555344000000000000000000000000000000",
"payTo": "r3FbirL83RAB2CwnUdxE5pCohMkuo6LQcf",
"scheme": "exact",
"network": "xrpl:0",
"amountUsd": "$0.002",
"payToType": null,
"assetLabel": "RLUSD (XRP Ledger)",
"amountAtomic": "0.002",
"payToDelegate": null,
"maxTimeoutSeconds": 300
},
{
"asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"payTo": "0x5b32c973596078a967562ca652761404f19be0e9",
"scheme": "exact",
"network": "eip155:137",
"amountUsd": "$0.002",
"payToType": null,
"assetLabel": "USDC (Polygon)",
"amountAtomic": "2000",
"payToDelegate": null,
"maxTimeoutSeconds": 300
}
],
"summary": {
"fail": 0,
"pass": 13,
"warn": 0
},
"finalUrl": "https://horizonpulse.dev/api/pulse",
"resource": {
"url": "https://horizonpulse.dev/api/pulse",
"mimeType": "application/json",
"description": "Crypto price API: BTC, ETH and SOL spot prices in USD in one GET, no parameters. Returns JSON: assets.BTC/ETH/SOL with priceUsd, change24hPct and momentum (bullish/bearish/neutral), plus overall momentum, sentiment (risk-on/risk-off/neutral), direction (up/down/flat), avgChange24hPct and asOf. Prices from Coinbase Exchange with CoinGecko fallback (source field). Labels are fixed rules on 24h change, not advice. Errors are not charged."
},
"discovery": {
"method": "GET",
"present": true,
"hasInputSchema": true,
"hasOutputExample": true
},
"elapsedMs": 765,
"baseChecks": [
{
"id": "status_402",
"level": "pass",
"message": "Unpaid request returned HTTP 402."
},
{
"id": "challenge",
"level": "pass",
"message": "x402 challenge parsed from PAYMENT-REQUIRED header."
},
{
"id": "version",
"level": "pass",
"message": "x402 v2."
},
{
"id": "payto_type",
"level": "info",
"message": "payTo 0x5b32c973596078a967562ca652761404f19be0e9 is an EOA with an EIP-7702 delegation to 0x7702cb554e6bfb442cb743a7df23154544a7176c: the account's private key still controls funds, and the delegate contract's code also runs for this account (e.g. a smart-wallet upgrade) (accepts[0])."
},
{
"id": "discovery",
"level": "pass",
"message": "Discovery metadata present (method GET)."
}
],
"httpStatus": 402,
"x402Version": 2,
"payToReports": [
{
"payTo": "0x5b32c973596078a967562ca652761404f19be0e9",
"network": "eip155:8453",
"payToType": "eoa_7702",
"published": "match",
"lookalikes": [],
"publishedIn": [
"openapi",
"llms",
"well-known"
]
},
{
"payTo": "BjY98A6dS3GGLZdz2zHy8wK7XAwnQgNhCc66mfmBTRPz",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"payToType": null,
"published": "match",
"lookalikes": [],
"publishedIn": [
"openapi",
"well-known",
"llms"
]
},
{
"payTo": "r3FbirL83RAB2CwnUdxE5pCohMkuo6LQcf",
"network": "xrpl:0",
"payToType": null,
"published": "match",
"lookalikes": [],
"publishedIn": [
"openapi",
"well-known",
"llms"
]
}
],
"challengeSource": "header",
"securityHeaders": {
"csp": null,
"hsts": "max-age=63072000",
"error": null,
"status": 402,
"frameOptions": null,
"referrerPolicy": null,
"contentTypeOptions": "nosniff"
},
"publishedSources": [
{
"url": "https://horizonpulse.dev/.well-known/x402",
"name": "well-known",
"error": null,
"status": 200,
"addresses": []
},
{
"url": "https://horizonpulse.dev/openapi.json",
"name": "openapi",
"error": null,
"status": 200,
"addresses": [
"0x5b32c973596078a967562ca652761404f19be0e9",
"BjY98A6dS3GGLZdz2zHy8wK7XAwnQgNhCc66mfmBTRPz",
"r3FbirL83RAB2CwnUdxE5pCohMkuo6LQcf"
]
},
{
"url": "https://horizonpulse.dev/llms.txt",
"name": "llms",
"error": null,
"status": 200,
"addresses": [
"0x5b32c973596078a967562ca652761404f19be0e9"
]
}
]
}
}
},
"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": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Absolute http(s) URL of the x402 endpoint to check (required). Private/localhost blocked."
},
"body": {
"type": "string",
"description": "Optional JSON body (<=8KB, URL-encoded) sent with a POST probe. Implies POST."
},
"method": {
"type": "string",
"description": "HTTP method for the unpaid probe: GET (default; one POST retry on 405) or POST."
}
}
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object",
"description": "Horizon Pulse x402 deep check: x402-check report plus TLS, security headers, CORS, payTo vs published addresses, lookalike payTo, discovery drift. The example is a trimmed real response recorded from GET /api/demo/x402-check-deep at 2026-10-19T19:46Z UTC; live values differ on every call."
}
}
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-10-26 05:51Z
- Last indexed by Roundhouse
- 2026-10-26 17:20Z
- Last enriched (probe, favicon, geo)
- 2026-10-20 13:45Z
- x402 version
- 2
- Max timeout
- 300s
- Liveness probe
- HTTP 402
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. 8 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service Horizon Pulse 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=Horizon%20Pulse' 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://horizonpulse.dev/api/x402-check/deep, 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. Either pay over x402 (mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402), or ask me for an organization key, which I create at https://roundhouseai.io/dashboard/connections. If you have neither, ask before going further. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.