entropy-mcp
MCP serverCommerce & financeGives your agent cryptographically secure random numbers that others can verify were fair.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the random tool from entropy-mcp
About this server
Cryptographically sound randomness for agents, with verifiable commit-reveal.
Install entropy-mcp
The server’s own address, for the clients that take one directly. Or connect ahel onceand every client you use reads it from one address, with the account kept on ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user entropy-mcp 'https://entropy-mcp.terradev.cloud/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://entropy-mcp.terradev.cloud/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=entropy-mcp&config=eyJ1cmwiOiJodHRwczovL2VudHJvcHktbWNwLnRlcnJhZGV2LmNsb3VkL21jcCJ9Open the link and Cursor adds the server at that address.
ChatGPT
https://entropy-mcp.terradev.cloud/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add entropy-mcp --url 'https://entropy-mcp.terradev.cloud/mcp'Run it once, then sign in with codex mcp login entropy-mcp if the server asks for an account.
From the project's README
As published by terradev-cloud/entropy-mcp in README.md.
Entropy gives agents randomness they cannot produce themselves, and proof they did not manipulate it.
The evidence
Language models cannot generate statistically sound randomness. This is measured, not speculative:
- arXiv:2601.05414 — 11 frontier models, 15 distributions: 7% median pass rate in batch mode; 10 of 11 models passed zero distributions in stateless mode.
- arXiv:2604.06543 — the knowing-doing gap: models can describe correct sampling and still fail to do it. Asking a model to generate its own seed reproduces the same bias.
- arXiv:2606.06622 — UnpredictaBench: models are measurably predictable where they should be random.
The stateless point
Agents operate in exactly the regime where models fail hardest: independent, stateless calls with no memory of prior draws. Every "pick a random number" an agent answers from its own weights is a draw from a biased, predictable source. Entropy moves the draw out of the model and into the OS CSPRNG — and the commit-reveal chain proves the draw that happened is the draw that was reported.
Install
pip install entropy-mcp # stdio core + stamp-mcp dependency
pip install entropy-mcp[http] # adds the aiohttp HTTP transport
Quickstart
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"commitment","arguments":{
"operation":"draw",
"draw_spec":{"operation":"shuffle","params":{"items":["alice","bob","carol","dave"]}},
"description":"who goes first"}}}
One call returns the shuffled list plus a commitment record, a reveal record, and a verification block — the full chain a third party can check with commitment operation:"verify".
Command reference
Four tools. operation selects the primitive; params carries its arguments; seed makes any draw reproducible.
| Tool | Operations |
|---|---|
random | bytes (CSPRNG, hex/base64) · int (unbiased [min,max] via rejection sampling) · shuffle (Fisher-Yates + permutation) · choose (weighted/unweighted, with/without replacement) · sample (uniform, normal, lognormal, exponential, triangular, beta) · constrained (independent per-attribute sampling + chi² conformance proof) |
commitment | commit (hash seed, bind draw spec, attest) · reveal (verify seed, re-execute, attest outcome) · draw (commit + execute + reveal in one call) · verify (pure third-party verification, no local state) · list (local commitment log) |
test | Statistical battery: frequency, chi², runs, longest run, serial, Shannon, KS, gap |
explore | Bandit selection: epsilon_greedy, thompson, ucb1 (stateless) |
Every seeded command is deterministic given its inputs and seed — byte-identical across processes, machines, and Python versions. Only the raw OS-entropy paths are non-deterministic, and they say so.
How commit-reveal works
- commit generates (or accepts) a 32-byte seed, stores only
sha256(seed), binds it to your draw spec via canonical hash, timestamps it via Stamp's NTP, optionally anchors it to a drand round, and attests the whole record. The seed goes to you. It is never stored server-side. - reveal takes the seed back, verifies it hashes to the committed
seed_hash, re-executes the draw deterministically, and attests the outcome. - verify_chain checks, independently of any server state:
| Check | Proves |
|---|---|
seed_produces_commitment_hash | the revealed seed is the one committed to |
commitment_attestation_valid | the commitment record is intact and attested |
reveal_attestation_valid | the reveal record is intact and attested |
commitment_precedes_reveal | the commit happened before the reveal |
outcome_reproducible | the reported outcome is what the seed actually produces |
params_hash_matches | the draw spec wasn't altered after commitment |
beacon_anchor_valid | the commitment predates the drand round's publication (when anchored) |
What this is not
- Not a statistics package — the summary block and test battery are conveniences, not an analysis suite.
- Not a simulation engine — no Monte Carlo, no sensitivity analysis, no fitting.
- Not a randomness beacon — drand anchoring is optional hardening, not a source.
- Not NIST-certified — the test battery is informed by SP 800-22, in the spirit of it.
Configuration
| Env var | Default | Purpose |
|---|---|---|
ENTROPY_COMMITMENT_LOG | ~/.entropy/commitments.jsonl | commitment log path (0600, capped at 10k records) |
ENTROPY_STAMP_URL | https://stamp-mcp.terradev.cloud | remote Stamp endpoint (local stamp_mcp import preferred) |
ENTROPY_BEACON_URL | https://api.drand.sh | drand API base |
ENTROPY_HOST / ENTROPY_PORT | 127.0.0.1 / 8001 | HTTP transport bind |
Threat model
See THREAT_MODEL.md. The honest summary: Entropy proves a draw was not manipulated; it cannot prove a draw was not discarded.
License
Apache 2.0.
Tools it offers (4)
What this server listed when ahel dialed its public endpoint in Sep 2026, with no key and no account of yours. The names are the server’s own.
randomcommitmenttestexplore
Signals
- Last commit
- Sep 2026
Advanced
- Delivery
- entropy MCP server → your ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
io-github-terradev-cloud-entropy- Source
- github.com/terradev-cloud/entropy-mcp
- Hosted endpoint
https://entropy-mcp.terradev.cloud/mcp
github.com/terradev-cloud/entropy-mcp