{"uid":"cap_YlgWgcpVcUfoRwCbxiftI","slug":"verifiable-random-shuffle-f78000f9","name":"Verifiable Random Shuffle","description":"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.","url":"https://verifiable-random.use.x402atlas.com/shuffle?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"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."}}},"responseSchema":{"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"}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.005","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.005/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_ChOsnVUUV-n8Vq-GgJxSB","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.005","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"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.","exampleAgentPrompt":"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.","exampleUseCases":[{"title":"Fair raffle drawing order","prompt":"I have 50 raffle entrant names and need to shuffle them into a random drawing order that anyone can independently verify wasn't rigged — can you shuffle them with a drand-backed proof?"},{"title":"Unbiased tournament bracket seeding","prompt":"Shuffle these 16 team names into a random seeding order for our tournament bracket, and give me a reproducible proof transcript so participants can verify the seeding was fair."},{"title":"Randomized survey question ordering","prompt":"I need to randomly reorder this list of 12 survey questions for each respondent group — shuffle them with a verifiable drand randomness proof so I can document the ordering wasn't cherry-picked."}],"resultDescription":"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.","failureModes":["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"],"whenToPreferThis":"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.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-02T06:35:32.297Z","isFirstParty":false,"canonicalSlug":"verifiable-random-shuffle-f78000f9"}