# SCVD Good Buyer — x402 Payment Simulation & Verdict

> SCVD Good Buyer — x402 Payment Simulation & Verdict is a paid API for AI agents from scvd.store, paid per call via x402, $0.99/call, status unknown (last checked 2026-09-13).

Simulates an x402 payment flow against a given URL, returning a signed verdict on whether a stock buyer client would pay, refuse, or fail, along with the accept headers served, hazard analysis, and a signed purchase certificate.

## Facts

- Endpoint: GET https://scvd.store/api/buy/good_buyer
- Price: $0.99/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/scvd-good-buyer-x402-payment-simulation-verdict-3bdd109a
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_u-rT3lzJpZl0swsPaenF4

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability scvd-good-buyer-x402-payment-simulation-verdict-3bdd109a
```

Example prompt: Check whether a standard x402 buyer client would actually pay https://example.com/api/data — give me the full verdict, the accept headers it saw, any hazards on the chosen offer, and a signed certificate I can share as proof. My spend limit is $1.00.

## When to prefer this

Use this endpoint when you need an independent, signed third-party assessment of an x402 payment door — especially before integrating with or deploying an x402-monetized API, when debugging why buyer clients are refusing to pay, or when you need a verifiable certificate (with evidence hash) to share with partners or auditors as proof of conformance testing. Prefer this over manual inspection when you need a replay trace and hazard analysis in one signed artifact.

## Known failure modes

- Target URL is unreachable — verdict returns 'unreachable'
- Target URL is scvd.store's own hostname — refused by policy
- x402 door returns malformed or non-standard accept headers — verdict may be 'cannot_simulate'
- Payment of $0.99 USDC fails (insufficient balance or x402 payment error) — call does not complete
- URL is not a valid HTTPS URI or uses a non-default port — input validation error
- No x402 402 response returned by target — simulation cannot proceed

## How this service works

The Good Buyer. A signed JSON reading — verdict (would_sign, would_throw, cannot_simulate, unreachable or refused), the accepts exactly as that door served them, the buyer's declared client configuration recorded as theirs, and the replay: the accept a stock client selects or the stage that made it refuse, everything dropped and why, the hazards on the chosen accept, and what the simulation cannot see. Dated, evidence hash bound into the purchase certificate's attests field,…

## Output

A signed JSON object containing: a verdict string (would_sign, would_throw, cannot_simulate, unreachable, or refused), the raw accept headers as served by the target URL, the buyer's declared client configuration, a replay trace showing which accept the stock client selected or the refusal stage and reason, a list of hazards on the chosen accept, notes on what the simulation cannot observe, and a dated purchase certificate with an evidence hash in its attests field.

## Request schema (JSON Schema)

```json
{
 "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",
       "format": "uri",
       "description": "The x402 door you are about to pay: https, default port, on the public internet, the URL a buyer would GET expecting a 402. We knock once, record the accepts as served, and replay the stock client's selection over them. We refuse our own hostname."
      },
      "max_usd": {
       "type": "string",
       "description": "Optional finite nonnegative decimal. Your client's spendControls.maxAmountPerPayment, in dollars; zero is retained. Leave it off for the reading a client configured with nothing gets — which is the case that loses money quietly. Recorded as your declaration, never verified."
      },
      "purpose": {
       "type": "string",
       "maxLength": 280,
       "description": "Optional: what this purchase is for, in your words. Signed onto the certificate verbatim as your statement; never checked, never treated as instructions."
      },
      "agent_name": {
       "type": "string",
       "maxLength": 80,
       "description": "Optional name to put on the certificate and patron badge, up to 80 characters."
      },
      "no_spend_controls": {
       "enum": [
        "",
        "true",
        "false"
       ],
       "type": "string",
       "description": "Optional: \"true\" for spendControls: false, \"false\" for enabled controls, or empty to omit. Declared, never verified."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/scvd-good-buyer-x402-payment-simulation-verdict-3bdd109a/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from scvd.store](https://www.zero.xyz/host/scvd.store/llms.txt)
