Keccak Merkle tree and proof builder — generate indexed sorted-pair inclusion pr
Keccak Merkle tree and proof builder — generate indexed sorted-pair inclusion proofs with domain separation and explicit odd-node promotion.
Answeringour last check, 2026-09-24
1 of 1checks answered this week
605 msmedian answer time
$0.01listed price per call
$0.01price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://chain-tools.use.x402atlas.com/merkle/build
| Category | Everything else |
|---|---|
| Provider host | chain-tools.use.x402atlas.com |
| Networks | eip155:137, eip155:42161, eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 2 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-09-24 | valid payment request | 402 | $0.01 | 605 ms |
Example input (from the provider)
{
"body": {
"leaves": [
"0x616c706861",
"0x62657461",
"0x67616d6d61"
]
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"leaves": {
"description": "Raw leaves in stable caller order; duplicate values remain distinct by zero-based index",
"items": {
"description": "Zero to 4096 raw bytes as even-length 0x hexadecimal",
"maxLength": 8194,
"pattern": "^0x(?:[0-9a-fA-F]{2})*$",
"type": "string"
},
"maxItems": 1024,
"minItems": 1,
"type": "array"
}
},
"required": [
"leaves"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"additionalProperties": false,
"properties": {
"_atlas": {
"additionalProperties": false,
"description": "Atlas documentation and related-route metadata added after deployment",
"properties": {
"docs": {
"description": "Documentation URL for this bridge",
"format": "uri",
"maxLength": 512,
"type": "string"
},
"related": {
"description": "Bounded related Atlas routes",
"items": {
"additionalProperties": false,
"description": "One related Atlas route",
"properties": {
"bridge": {
"description": "Related bridge name",
"maxLength": 64,
"type": "string"
},
"docs": {
"description": "Related bridge documentation URL",
"format": "uri",
"maxLength": 512,
"type": "string"
},
"summary": {
"description": "Short capability summary",
"maxLength": 256,
"type": "string"
},
"url": {
"description": "Related route URL",
"format": "uri",
"maxLength": 512,
"type": "string"
}
},
"required": [
"bridge",
"url",
"docs",
"summary"
],
"type": "object"
},
"maxItems": 3,
"type": "array"
}
},
"required": [
"docs"
],
"type": "object"
},
"algorithm_version": {
"const": "keccak256-sorted-pairs-v1",
"description": "Atlas domain-separated sorted-pair profile",
"type": "string"
},
"leaf_count": {
"description": "Number of original leaves",
"maximum": 1024,
"minimum": 1,
"type": "integer"
},
"leaf_hashes": {
"description": "Domain-separated leaf hashes in original order",
"items": {
"description": "Leaf hash",
"pattern": "^0x[0-9a-f]{64}$",
"type": "string"
},
"maxItems": 1024,
"minItems": 1,
"type": "array"
},
"operation": {
"const": "merkle-build",
"description": "Stable route operation",
"type": "string"
},
"proofs": {
"description": "Exactly one proof for every original index",
"items": {
"additionalProperties": false,
"properties": {
"index": {
"description": "Zero-based original leaf index",
"maximum": 1023,
"minimum": 0,
"type": "integer"
},
"steps": {
"description": "Sibling hashes in leaf-to-root order; odd promotions add no step",
"items": {
"additionalProperties": false,
"properties": {
"hash": {
"description": "Sibling node hash; direction is unnecessary because pairs sort by hash",
"pattern": "^0x[0-9a-f]{64}$",
"type": "string"
}
},
"required": [
"hash"
],
"type": "object"
},
"maxItems": 10,
"type": "array"
}
},
"required": [
"index",
"steps"
],
"type": "object"
},
"maxItems": 1024,
"minItems": 1,
"type": "array"
},