# Verifiable Random Shuffle

> Verifiable Random Shuffle is a paid API for AI agents from verifiable-random.use.x402atlas.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-02).

Shuffles a list using a cryptographically verifiable Fisher-Yates permutation anchored to a future drand randomness beacon round, returning original indices and a reproducible proof transcript.

## Facts

- Endpoint: POST https://verifiable-random.use.x402atlas.com/shuffle?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/verifiable-random-shuffle-f78000f9
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_YlgWgcpVcUfoRwCbxiftI

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 verifiable-random-shuffle-f78000f9 -d '<json body>'
```

Example prompt: Shuffle this list of 20 contestant names — [Alice, Bob, Carol, Dave, ...] — using verifiable randomness so I can prove to anyone the order wasn't manipulated, and give me the drand proof transcript.

## When to prefer this

Choose this endpoint when you need tamper-evident, publicly auditable shuffle randomness — such as for raffles, lotteries, tournament seedings, or any context where participants must be able to independently verify the shuffle was fair and not predetermined. The drand beacon binding and proof transcript make it far stronger than a PRNG or opaque server-side shuffle. Prefer it over local randomness or simple /random endpoints whenever proof of fairness must be shared externally.

## Known failure modes

- drand beacon timeout — if the randomness beacon round is unavailable within the wait window the request may fail or time out
- invalid or empty input list — submitting an empty array or malformed payload returns a validation error
- payment failure — insufficient USDC or x402 payment header missing returns an authorization error
- network latency — the 3–6s wait for the future drand round may occasionally exceed expected duration under load

## How this service works

Verifiable Random shuffle — a uniform Fisher-Yates permutation bound to a future drand round the server waits for (typically 3-6s) and verifies locally, with original indices and a reproducible proof transcript.

## Output

Returns the shuffled list in its new order, the original index of each element (so you can trace back where each item came from), the drand beacon round number used, and a full reproducible proof transcript that allows anyone to independently verify the Fisher-Yates permutation was computed correctly and fairly from the published randomness.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "items": {
   "type": "array",
   "items": {
    "type": "string",
    "maxLength": 256
   },
   "maxItems": 1000,
   "minItems": 2,
   "description": "Strings to permute, at most 131072 UTF-8 bytes combined; duplicate values are allowed and remain distinguishable by original_indices."
  },
  "client_seed": {
   "type": "string",
   "default": "",
   "maxLength": 256,
   "description": "Optional public domain-separation label, not secret entropy."
  },
  "target_round": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "0 asks the server to choose the next safe unpublished round; a positive value makes a client_fixed commitment and must still be safely in the future."
  },
  "algorithm_version": {
   "enum": [
    "drand-hkdf-sha256-v1"
   ],
   "type": "string",
   "default": "drand-hkdf-sha256-v1",
   "description": "Optional version guard; when supplied it must match the server's pinned derivation algorithm."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "beacon": {
   "round": 1,
   "scheme": "bls-unchained-g1-rfc9380",
   "network": "quicknet",
   "signature": "b55e7cb2d5c613ee0b2e28d6750aabbb78c39dcc96bd9d38c2c2e12198df95571de8e8e402a0cc48871c7089a2b3af4b",
   "chain_hash": "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971",
   "randomness": "1466a6cd24e327188770752f6134001c64d6efcc590ccc26b721611ad96f165a",
   "scheduled_time": "2023-08-23T15:09:27Z"
  },
  "result": {
   "items": [
    "bob",
    "carol",
    "alice"
   ],
   "original_indices": [
    1,
    2,
    0
   ]
  },
  "operation": "shuffle",
  "example_only": true,
  "processed_at": "2023-08-23T15:09:27Z",
  "request_hash": "83282c22b0a9bce6334f4fe72f37f8c0ce4347b561c2a70a392eae649665fc25",
  "target_round": 1,
  "selection_mode": "example_only",
  "algorithm_version": "drand-hkdf-sha256-v1"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/verifiable-random-shuffle-f78000f9/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from verifiable-random.use.x402atlas.com](https://www.zero.xyz/host/verifiable-random.use.x402atlas.com/llms.txt)
