---
title: "Merkle Airdrop-Proof Verifier"
method: POST
path: "/v1/tools/verify_merkle_airdrop_proof"
tags: ["payment_policy", "merkle", "airdrop", "keccak256", "openzeppelin", "hash-proof", "mcp:verify_merkle_airdrop_proof"]
---

# Merkle Airdrop-Proof Verifier

`POST /v1/tools/verify_merkle_airdrop_proof`

## Request

- Base URL: `https://ainumbers.co`
- URL: `https://ainumbers.co/v1/tools/verify_merkle_airdrop_proof`
- Auth: none declared

Recomputes a Merkle airdrop-claim proof from caller-declared leaf fields (address, uint256 amount, encoding_variant) and a sibling path, OpenZeppelin MerkleProof.verify shape (processProof/_hashPair) over the already-vendored @noble/hashes keccak256 bundle -- no new vendoring, no hand-rolled hashing. Leaf derivation follows OpenZeppelin StandardMerkleTree's (address,uint256) convention: encoding_variant selects the double-hash leaf (the second-preimage-resistant default) or a single-hash variant some deployed contracts use instead, always a declared param. Sibling-pair hashing is sorted/commutative (pair_sort:true, OpenZeppelin's default) or explicit per-step left/right position (pair_sort:false), also a declared param. Given an optional claimed_path (a prior run's per-step running hashes), re-verifies and reports the earliest step at which the recompute diverges, instead of only a final match/no-match. This node never reads any chain: it cannot know whether claimed_root is the root actually recorded on-chain, whether the leaf's allocation was already claimed or redeemed, or whether the underlying tree was built correctly from the full allocation list.

**Tool URL:** https://ainumbers.co/chaingraph/art-605-merkle-airdrop-proof-verifier.html

## Request body

- object
  - `address` string
  - `amount` string
  - `encoding_variant` string
  - `pair_sort` boolean
  - `proof` unknown[]
    - unknown
  - `claimed_root` string
  - `claimed_path` unknown[]
    - unknown

## Response `200`

Successful tool execution result

- object
  - `leaf` string, nullable
  - `computed_root` string, nullable
  - `path` unknown[]
    - unknown
  - `encoding_variant_used` string, nullable
  - `pair_sort_used` boolean
  - `root_matches_claimed` boolean, nullable
  - `path_intact` boolean, nullable
  - `first_divergent_step` number, nullable
  - `note` string
  - `reasons` string[]

---

[API](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite.md) · [All operations](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/llms.txt) · [OpenAPI document](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/revisions/b462e4f5bb28?raw)
