Merkle tree, merkle root and proofs
Build a Merkle tree for an allowlist or airdrop and get the root and a proof per entry, OpenZeppelin-compatible: values ABI-encoded by types (address,uint256 for airdrops), double-keccak leaves, sorted pairs, so proofs verify with MerkleProof.verify and the dump loads in StandardMerkleTree.load. Up to 2,000 values; proofs for the first 256 or the one you ask for. Ready bytes32 leaves work too. Use to set up a claim contract or check a list.
Inputs
| Name | Type | Description |
|---|---|---|
values (required) | string | The entries: a JSON array of rows ([["0xabc…","100"],…]) or one row per line, fields comma-separated |
types | string | Solidity types of each row's fields, comma-separated (default: read from the rows: address,uint256 or address or bytes32 leaves) |
proofFor | string | Only the proof for this entry: its 0-based index or its first field (an address) |
Request
Over HTTP, with a card key from /credits:
curl -H "Authorization: Bearer adt_…" "https://agent-data-tools.revmesh2074.workers.dev/merkle/tree?values=%5B%5B%220x1111111111111111111111111111111111111111%22%2C%225000000000000000000%22%5D%2C%5B%220x2222222222222222222222222222222222222222%22%2C%222500000000000000000%22%5D%5D"
Or one of your 25 free calls, no key:
curl "https://agent-data-tools.revmesh2074.workers.dev/merkle/tree?values=%5B%5B%220x1111111111111111111111111111111111111111%22%2C%225000000000000000000%22%5D%2C%5B%220x2222222222222222222222222222222222222222%22%2C%222500000000000000000%22%5D%5D&trial=1"
Without a key, the same URL answers 402 Payment Required with x402 and MPP terms, so an agent with a wallet pays per call in USDC (Base, Polygon, Arbitrum or Solana over x402; Base or Tempo over MPP) and retries.
Example result
{
"format": "standard-v1",
"leafEncoding": [
"address",
"uint256"
],
"root": "0xd4dee0beab2d53f2cc83e567171bd2820e49898130a22622b10ead383e90bd77",
"count": 2,
"entries": [
{
"index": 0,
"value": [
"0x1111111111111111111111111111111111111111",
"5000000000000000000"
],
"leaf": "0xeb02c421cfa48976e66dfb29120745909ea3a0f843456c263cf8f1253483e283",
"proof": [
"0xb92c48e9d7abe27fd8dfd6b5dfdbfb1c9a463f80c712b66f3a5180a090cccafc"
]
}
],
"proofsIncluded": 2,
"dump": {
"format": "standard-v1",
"leafEncoding": [
"address",
"uint256"
],
"tree": [
"0x…"
],
"values": [
{
"value": [
"0x1111111111111111111111111111111111111111",
"5000000000000000000"
],
"treeIndex": 1
}
]
},
"verifyOnChain": "MerkleProof.verify(proof, root, keccak256(bytes.concat(keccak256(abi.encode(account, amount)))))"
}
From an AI agent (MCP)
Add the MCP server to Claude, Cursor or any MCP client. This tool is merkle_tree, and the first 25 successful calls are free:
https://agent-data-tools.revmesh2074.workers.dev/mcp