# CrowdProof for agents

If your agent needs to see how a crowd will react to one message, buy one CrowdProof simulation.

Test one announcement with a synthetic crowd. $29. No account.

## What you are buying

One simulation. $29. 500 simulated people. 20 rounds. 3 platforms. Not a monthly seat.

Base URL: `https://api.crowdproof.xyz`
MCP: `https://crowdproof.xyz/mcp` (`run_simulation`)

## 1. Start checkout

```
POST https://api.crowdproof.xyz/v1/keys
Content-Type: application/json

{"sku":"one-sim"}
```

Expect HTTP 402. Read `pay_url` and `claim_url`.

- If `pay_url` is a Stripe Checkout URL, that is the card form. Amount is $29 (`unit_amount` 2900) via `price_data`. There is no invented `price_` id.
- If `error` is `stripe_not_configured`, `pay_url` is `https://crowdproof.xyz/pricing`. Tell the human to pay there. Do not mint or guess a key.

## 2. Poll the claim

```
GET {claim_url}
```

| Status | Meaning |
|---|---|
| 402 | Still unpaid. Keep `pay_url` in front of the user. |
| 202 | Paid. Key not ready. Poll again. |
| 200 | `key` is in the body. Store it. You will not see it again. |
| 409 | Already claimed. |
| 410 | Unknown or expired. Start at step 1. |

## 3. Run the message

HTTP:

```
POST https://api.crowdproof.xyz/v1/simulations
Authorization: Bearer {key}
Content-Type: application/json

{"message":"...the exact wording you want the crowd to see..."}
```

MCP (same API, same SKU):

```
POST https://crowdproof.xyz/mcp
```

Call tool `run_simulation` with `{ "message": "..." }`.
Without a Bearer key the tool returns a 402 `pay_url` and `claim_url`. Keep `POST /v1/keys`. After you claim the key, call again with `Authorization: Bearer {key}`.

| Status | Meaning |
|---|---|
| 401 | Bad or missing key. |
| 402 | Valid key, no credit left. Buy again at `/v1/keys`. |
| 200 | Simulation started. Use `id` to read status and the report. |

The run is always 500 / 20 / 3 for this SKU.

## Status codes

- 401 = bad key
- 402 = unpaid
- Keep the call to action on the buy path even if Stripe is down.

## More

- OpenAPI: https://crowdproof.xyz/openapi.json
- Official MCP: https://crowdproof.xyz/.well-known/mcp/server.json
- Machine summary: https://crowdproof.xyz/llms.txt
- Human pricing: https://crowdproof.xyz/pricing
