Verifies a Tempo Machine Payments Protocol cumulative EIP-712 session voucher offline via ecrecover (no RPC, no database lookup), validates a TIP-20 32-byte payment memo structurally, and renders a merchant-side HTTP 402 challenge plus a Payment-Receipt binding a verified voucher to the execution_hash of whatever it paid for. Mirrors the shipped x402 / ACP / AP2 verifiers in this suite.
This node recovers the address that signed a caller-supplied Tempo MPP session voucher, checks it against the caller-declared channel state (authorized signer, prior settled amount, deposit cap, close status), and validates a TIP-20 memo's byte-32 structure. Only when a valid voucher and a well-formed 402 challenge are both supplied does it render a Payment-Receipt-shaped object binding the voucher to an optional subject execution_hash. It never holds a private key, never signs anything, never escrows third-party funds, and never initiates a payment: it never operates a live endpoint, never calls out, and every field is caller-supplied and echoed, nothing is fetched or resolved independently. A "receiving address" is a caller-declared string, never a key this node controls (browserchain-build-spec-v0.2.md Β§21.5 precedent: "the relay holds only a receiving address, no hot keys"). Resubmitting the identical voucher always re-derives the identical digest and receipt: that idempotency is the tool's evidentiary property, not a live dedup service.
signature (full hex blob) OR the split r/s fields plus a recovery marker (yParity takes priority, else v, else the byte embedded in a 65-byte signature), the same convention as the sibling x402 signer-recovery verifier.The memo is treated as an opaque 32-byte reference exactly as the network treats it. This tool never interprets its on-chain effects, only its byte-level well-formedness.
Validates and renders a conformant WWW-Authenticate: Payment challenge object per the MPP core + Tempo session/charge specs. This node never mints an authoritative challengeId (that would require holding a server secret) and never operates a live endpoint. recipient is a caller-declared receiving-address string, never a key this node controls or a contract it interacts with.