paddock.finance

https://paddock.finance/api/paddock/mcp/verify-before-pay

Shares a payout wallet with 9 other endpoints — its adoption is attributed from that shared wallet's traffic, not earned exclusively.

Paddock pre-payment endpoint verification — one-time query

60
reliability

Reliability & health

Uptime and response time from our own unpaid probes, plus the reliability score built from them.

Uptime

100.0% avg
0% 50% 100% Mon 6 PMWed 11 PMSat 2 AMMon 2 PM

Response time

p50 186ms · p95 607ms
0ms 650ms 1300ms Mon 6 PMWed 11 PMSat 2 AMMon 2 PM
Data table
Reliability history per time bucket over the last 7 days (hourly).
Bucket Uptime Probes Response time
9/28/2026, 6:00:00 PM 100% 1 218ms
9/28/2026, 8:00:00 PM 100% 1 215ms
9/28/2026, 10:00:00 PM 100% 1 253ms
9/29/2026, 12:00:00 AM 100% 1 213ms
9/29/2026, 2:00:00 AM 100% 1 205ms
9/29/2026, 4:00:00 AM 100% 1 193ms
9/29/2026, 6:00:00 AM 100% 1 192ms
9/29/2026, 8:00:00 AM 100% 1 275ms
9/29/2026, 10:00:00 AM 100% 1 219ms
9/29/2026, 12:00:00 PM 100% 1 221ms
9/29/2026, 2:00:00 PM 100% 1 205ms
9/29/2026, 4:00:00 PM 100% 1 265ms
9/29/2026, 6:00:00 PM 100% 1 200ms
9/29/2026, 8:00:00 PM 100% 1 203ms
9/29/2026, 10:00:00 PM 100% 1 224ms
9/30/2026, 1:00:00 AM 100% 1 192ms
9/30/2026, 3:00:00 AM 100% 1 168ms
9/30/2026, 5:00:00 AM 100% 1 179ms
9/30/2026, 7:00:00 AM 100% 1 159ms
9/30/2026, 9:00:00 AM 100% 1 154ms
9/30/2026, 11:00:00 AM 100% 1 172ms
9/30/2026, 1:00:00 PM 100% 1 171ms
9/30/2026, 3:00:00 PM 100% 1 189ms
9/30/2026, 5:00:00 PM 100% 1 156ms
9/30/2026, 7:00:00 PM 100% 1 178ms
9/30/2026, 9:00:00 PM 100% 1 176ms
9/30/2026, 11:00:00 PM 100% 1 233ms
10/1/2026, 1:00:00 AM 100% 1 156ms
10/1/2026, 3:00:00 AM 100% 1 245ms
10/1/2026, 5:00:00 AM 100% 1 174ms
10/1/2026, 7:00:00 AM 100% 1 168ms
10/1/2026, 9:00:00 AM 100% 1 175ms
10/1/2026, 11:00:00 AM 100% 1 217ms
10/1/2026, 1:00:00 PM 100% 1 170ms
10/1/2026, 3:00:00 PM 100% 1 93ms
10/1/2026, 5:00:00 PM 100% 1 200ms
10/1/2026, 7:00:00 PM 100% 1 196ms
10/1/2026, 9:00:00 PM 100% 1 119ms
10/1/2026, 11:00:00 PM 100% 1 162ms
10/2/2026, 1:00:00 AM 100% 1 263ms
10/2/2026, 3:00:00 AM 100% 1 181ms
10/2/2026, 5:00:00 AM 100% 1 153ms
10/2/2026, 7:00:00 AM 100% 1 458ms
10/2/2026, 9:00:00 AM 100% 1 150ms
10/2/2026, 11:00:00 AM 100% 1 1230ms
10/2/2026, 1:00:00 PM 100% 1 1124ms
10/2/2026, 3:00:00 PM 100% 1 164ms
10/2/2026, 5:00:00 PM 100% 1 277ms
10/2/2026, 7:00:00 PM 100% 1 596ms
10/2/2026, 9:00:00 PM 100% 1 368ms
10/2/2026, 10:00:00 PM 100% 1 85ms
10/3/2026, 12:00:00 AM 100% 1 159ms
10/3/2026, 2:00:00 AM 100% 1 159ms
10/3/2026, 4:00:00 AM 100% 1 148ms
10/3/2026, 6:00:00 AM 100% 1 153ms
10/3/2026, 8:00:00 AM 100% 1 308ms
10/3/2026, 10:00:00 AM 100% 1 813ms
10/3/2026, 12:00:00 PM 100% 1 178ms
10/3/2026, 2:00:00 PM 100% 1 259ms
10/3/2026, 4:00:00 PM 100% 1 264ms
10/3/2026, 6:00:00 PM 100% 1 163ms
10/3/2026, 8:00:00 PM 100% 1 149ms
10/3/2026, 11:00:00 PM 100% 1 98ms
10/4/2026, 1:00:00 AM 100% 1 156ms
10/4/2026, 2:00:00 AM 100% 1 184ms
10/4/2026, 4:00:00 AM 100% 1 131ms
10/4/2026, 6:00:00 AM 100% 1 275ms
10/4/2026, 8:00:00 AM 100% 1 351ms
10/4/2026, 1:00:00 PM 100% 1 239ms
10/4/2026, 3:00:00 PM 100% 1 138ms
10/4/2026, 5:00:00 PM 100% 1 167ms
10/4/2026, 7:00:00 PM 100% 1 150ms
10/4/2026, 9:00:00 PM 100% 1 298ms
10/5/2026, 2:00:00 AM 100% 1 90ms
10/5/2026, 7:00:00 AM 100% 1 147ms
10/5/2026, 9:00:00 AM 100% 1 166ms
10/5/2026, 11:00:00 AM 100% 1 866ms
10/5/2026, 1:00:00 PM 100% 1 134ms
10/5/2026, 2:00:00 PM 100% 1 340ms
60
Composite reliability — the weighted average of the dimensions below, on a 0–100 scale.
Availability
100

How often it was reachable when we probed it (weight 35%).

Latency
100

How quickly it answers when it is up — fast scores high (weight 20%).

Security
100

Whether it serves over working TLS / https (weight 15%).

Transparency
49

Whether the operator disclosed what it does — description, schema, identity (weight 15%).

Activity
2

Observed on-chain payments to this endpoint's wallet — transactions, volume, and distinct paying wallets over the last month (weight 15%; not yet measured when we have not seen its wallet settle).

Confidence 100% — how much probe evidence backs this score. A thin history is flagged, not hidden.

See the scoring methodology for exactly how each number is computed.

Payment

Currencies
USDC
Networks
base
Facilitator
unknown
SDK
unknown

Operator

Company
inferred — unknown
Jurisdiction
—
Registrar
NameCheap, Inc.
Domain registered
2026-05-22
Hosting network
CLOUDFLARENET
Hosting country
—

Operator context is derived from public RDAP/TLS records and unverified. Company and country are only available for endpoints that publish them (an OV/EV TLS certificate or a non-redacted domain record); most endpoints are CDN-fronted and disclose neither.

On-chain activity (base)

27
payments (30d)
4.49
USD volume (30d)
8
paying wallets (30d)

Payments per day

last payment 10/5/2026
0 5 9 Sep 6Sep 16Sep 28Oct 5
Data table
Settled payments per day.
Day Payments Volume (USD) Paying wallets
9/6/2026 1 0.01 1
9/8/2026 1 0.01 1
9/9/2026 1 0.01 1
9/10/2026 1 0.01 1
9/16/2026 2 0.26 2
9/17/2026 2 0.01 2
9/23/2026 1 0.01 1
9/28/2026 1 0.01 1
9/29/2026 9 4.1 1
9/30/2026 5 0.02 3
10/1/2026 1 0.01 1
10/5/2026 2 0.02 2

This payout wallet is shared: figures cover all 10 endpoints paid at it, since payments cannot be attributed to one of them. Only payments settled on chains and facilitators we index.

Linked by wallet — likely same operator

On-chain agent identity and the x402 endpoint that shares its settlement wallet.

Response schema
{
  "properties": {
    "_meta": {
      "type": "object"
    },
    "checked_at": {
      "description": "When the live probe ran. The whole value of this response is that it was taken at this instant; it is never cached.",
      "format": "date-time",
      "type": "string"
    },
    "checks": {
      "description": "One block per check, each carrying its own status, universe, basis and as_of date. No figure in one block is divided by a figure in another.",
      "properties": {
        "circular": {
          "type": "object"
        },
        "contract": {
          "type": "object"
        },
        "liveness": {
          "type": "object"
        },
        "paid_fulfillment": {
          "description": "Independent third-party paid-verification result, re-served under CC-BY 4.0. Carries status, last_paid_attempt_at (the date the SOURCE observed it, never defaulted to now), basis, attribution_url, and the settlement tx_hash where one was published. Absent coverage returns not_assessed with a basis naming why.",
          "type": "object"
        },
        "price": {
          "type": "object"
        },
        "settlement": {
          "type": "object"
        }
      },
      "type": "object"
    },
    "contract_and_request_ok": {
      "description": "The combined verdict (0.6). true only when the live contract matched your expectations (route === true) AND your own declared request passed pre-flight (checks.requestPreflight.status === \"pass\"). false when either term is bad - including when YOUR request is missing a parameter the challenge declares required. The STRING \"not_assessed\" when a term was never established, most often because you passed no intended_params or intended_params_empty, so there was no request of yours to clear; that is not a soft yes and not a no. Test with contract_and_request_ok === true. It does not replace route, which is unchanged, and it is NOT a clearance - read contract_and_request_ok_excludes.",
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "const": "not_assessed",
          "type": "string"
        }
      ]
    },
    "contract_and_request_ok_excludes": {
      "description": "Every risk category the conjunction does NOT cover, each with the field where that category's own verdict lives and what it can be doing while contract_and_request_ok is true: settlement recency, an unassessed circular signal, attribution divergence, a payTo-only divergence from the seller's published config, a divergent second challenge channel, and price against the category median. The list is STATIC - it says what the formula leaves out, not how this endpoint scored, so coverage can never be inferred from an absence.",
      "items": {
        "properties": {
          "category": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "where": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "type": "array"
    },
    "evidence": {
      "description": "One row per fact, each with the source it came from and the time it is as-of. Probe rows are as-of now; snapshot and classification rows are as-of their own dates, which are older.",
      "items": {
        "properties": {
          "check": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "observed_at": {
            "format": "date-time",
            "type": "string"
          },
          "source": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "type": "array"
    },
    "expectations_supplied": {
      "type": "object"
    },
    "mpp": {
      "description": "Decoded MPP challenges from the live 402, with checks against the caller's expectations. Null when the seller offers no MPP challenge.",
      "properties": {
        "challenges": {
          "items": {
            "properties": {
              "amount": {
                "description": "Base units, as the seller wrote them.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "amount_usd": {
                "description": "Six decimals, only for the Tempo mainnet USDC.e token; null otherwise.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "checks": {
                "properties": {
                  "price": {
                    "enum": [
                      "match",
                      "mismatch",
                      "not_checked",
                      "inconclusive"
                    ],
                    "type": "string"
                  },
                  "recipient": {
                    "enum": [
                      "match",
                      "mismatch",
                      "not_checked",
                      "inconclusive",
                      "not_applicable"
                    ],
                    "type": "string"
                  },
                  "record": {
                    "enum": [
                      "inconclusive",
                      "not_applicable"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "currency": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "index": {
                "description": "Zero-based position in header order.",
                "type": "integer"
              },
              "intent": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "method": {
                "description": "tempo (on-chain USDC.e) or stripe (card).",
                "type": [
                  "string",
                  "null"
                ]
              },
              "realm": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "recipient": {
                "description": "On-chain recipient for a tempo challenge; null for stripe.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "matched_rail": {
          "description": "Which rail the pay_to you gave matched: x402 or tempo. Null when you gave no pay_to or it matched neither.",
          "enum": [
            "x402",
            "tempo",
            null
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "result": {
          "enum": [
            "ok",
            "mismatch",
            "inconclusive"
          ],
          "type": "string"
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "paddock_url": {
      "description": "The paddock.finance/s/<domain> service page for this target, when one exists; null otherwise. Additive, non-breaking (no schema_version bump).",
      "type": [
        "string",
        "null"
      ]
    },
    "reason_codes": {
      "description": "Stable, append-only vocabulary, e.g. live_402_observed, contract_mismatch_price, circular_flagged_cluster_member, settlement_never_observed.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "route": {
      "description": "true = the endpoint asked for payment and the contract you stated matched. false = do not pay. \"inconclusive\" = either we could not read a 402, so we cannot vouch for what it will charge you, or you supplied no pay_to and no expect_* so there was nothing to compare (reason code no_expectations_supplied).",
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "const": "inconclusive",
          "type": "string"
        }
      ]
    },
    "route_note": {
      "type": "string"
    },
    "route_state": {
      "description": "route_state carries the same verdict as route, always as a string (\"true\", \"false\", \"inconclusive\"), for clients that cannot type a boolean-or-string field.",
      "enum": [
        "true",
        "false",
        "inconclusive"
      ],
      "type": "string"
    },
    "schema_version": {
      "description": "Bumped when a stored response stops being comparable to a live one: a breaking shape change, a change to what an existing field means, or a new verdict the older version did not emit. Store it with the verdict - a verdict is only comparable to another at the same version.",
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "target": {
      "description": "What was probed, what the wallet resolved to, and which wallet the circular check used.",
      "type": "object"
    },
    "tool": {
      "const": "verify_before_pay",
      "type": "string"
    }
  },
  "type": "object"
}