Releases: piprail/piprail
Release list
@piprail/sdk v2.16.2 — every facilitator receipt is now verifiable
npm install @piprail/sdk@2.16.2
Every entry now carries a receipt you can actually open
The facilitators page said 25 on-chain receipts against 29 entries. Three of the missing four
kept only a truncated prefix (tx 4dL8jRKH…) and one recorded a verification with no hash at all.
A prefix cannot be opened on an explorer and cannot be re-checked by our verifier, so those four
were claims rather than proofs.
Recovering the originals from chain history was tried first and failed, so each was re-proven
with a fresh mainnet payment: PayAI and OpenFacilitator on Solana, PayAI and xpay on Base. Every
run asserted the full 402 → pay → verify → 200, the merchant balance moving by exactly the
amount, the buyer paying zero native, and a replay rejected.
A bug the count was hiding
Solana proof hashes never rendered as explorer links. The site generator matched only EVM
(0x…64) and Algorand (base32) hash shapes, so base58 Solana signatures fell through to unlinked
text while solscan.io sat configured and unused in the chain metadata.
It was invisible because the hash still displayed, just dead. Every Solana receipt is now a
working link.
Result
verify-tx.mjs: 30 verified, 0 refuted, 0 skipped, up from 25 verified with 4 skipped.
piprail.com/facilitators now shows 30 receipts, all full-length
hashes, all linked.
Full detail: CHANGELOG.
@piprail/sdk v2.16.1 — GoPlausible settles Solana, live-proven
npm install @piprail/sdk@2.16.1
GoPlausible is now a keyless Solana facilitator
GoPlausible told us they settle Solana as well as Algorand and Base, and asked to be listed. They
were right, and this ships it with proof rather than trust.
Solana previously seeded only PayAI and OpenFacilitator, so this is a third keyless option on
that chain. No defaults change: the seed list is a convenience, and the SDK still depends on no
facilitator.
Live-proven on mainnet, three times
A real 402 → pay → verify → 200 round trip on the exact rail, run three times with three
different transactions. Every run:
- the merchant received exactly 0.01 USDC
- the buyer paid 0 SOL
- GoPlausible's sponsor
8a8fFNfk…RAYipaid the 10001-lamport fee, read offaccountKeys[0]of
the settled transaction. That is what proves the rail was sponsored rather than self-paid. - a replay of the same proof was rejected
The full hash is recorded in the registry note, so verify-tx.mjs re-checks it on-chain: 26
verified, 0 refuted across every facilitator we ship.
Tx 3DEGg6Lue8471meBH8hbLxV1bLmZGKvmvmSY3tjg7tQFnxzE9GQXUXokjQnZgTqaEU4SaXuY9F7v3m7JsX5xDgrZ.
Also in this release
The seed is locked by a test that fails if it is dropped, and that asserts Solana keeps more than
one keyless option so the chain can never silently narrow to a single vendor.
Full detail: CHANGELOG.
@piprail/sdk v2.16.0 — the XRP Ledger exact buyer, and paying the x402 web we could not
npm install @piprail/sdk@2.16.0
The XRP Ledger exact buyer
1,732 live rails, and as far as we can tell the only open-source buyer on that chain. The buyer
signs a complete Payment and broadcasts nothing; the gate decodes the blob, re-derives every
checked field from its own trusted accept, submits, and waits for a validated tesSUCCESS.
XRPL is the family where the payer pays the fee, so there is no sponsor, no co-signature, and no
fee-drain guard. The scheme replaces those with a list of MUST-NOTs the settler enforces: no
Memos, no Paths, no tfPartialPayment, no Delegate, never Amount and DeliverMax
together. Each one is a way a hostile blob could underdeliver, and each one has a test.
The challenge binds through InvoiceID = SHA-256(extra.invoiceId), not a memo, because the
scheme has settlers reject Memos and that is exactly what PipRail's onchain-proof XRPL path
uses for its nonce. The two paths deliberately share no code.
Paying the standard x402 web
The buyer required a field the spec makes optional, which left 91% of live rails unpayable.
The same bug class hit the Solana path through extra.decimals, which the SVM scheme never
defines, and XRPL through extra.areFeesSponsored, which is absent from 100% of live rails.
Three instances in one cycle, so it now has a test of its own.
Also in this release: x402 v1 challenges on the buyer path, the Algorand CAIP-2 id the spec
actually uses, and coverage that is measured rather than asserted.
Full detail: CHANGELOG.
@piprail/sdk v2.15.1
What's Changed
- Publish the pitch deck at repo root + link it from the README by @John-Weeks-Dev in #68
- build(mcp): add root Dockerfile so Glama can build + score the MCP server by @John-Weeks-Dev in #70
- docs(hermes): sync catalog manifest artifact with the approved submission by @John-Weeks-Dev in #71
- fix(site): three real SEO defects from the 2026-08-27 Ahrefs audit (hreflang, redirect links, schema type) by @John-Weeks-Dev in #76
- seo(site): retarget /mcp/ at how people actually search (claude mcp = 5,400/mo, KD 18) by @John-Weeks-Dev in #78
- seo(robots): full AI/social/search crawler coverage on both hosts (23 → 82 agents) by @John-Weeks-Dev in #79
- seo(analytics): GA4 + Bing verification on both hosts by @John-Weeks-Dev in #80
- fix(sdk): drop 2 dead facilitators — one was being handed to Monad users + new /facilitators page by @John-Weeks-Dev in #81
- seo(site): link /facilitators/ from nav, footer and /chains/ by @John-Weeks-Dev in #82
- fix(sdk): dead Sui RPC + RPC-blamed-on-token; harden the audit, credentials and deploy (release 2.15.1) by @John-Weeks-Dev in #83
- fix(netlify): diff against the last BUILT commit — a multi-commit push skipped the deploy by @John-Weeks-Dev in #84
Full Changelog: create-piprail-v0.1.0...sdk-v2.15.1
@piprail/sdk v2.15.0
What's Changed
- test(examples): break-it battery for the live @piprail/sdk@2.14.0 artifact by @John-Weeks-Dev in #63
- Merchant on-ramp: zero-code seller scaffolder + SDK presets (sdk v2.15.0, create-piprail v0.1.0) by @John-Weeks-Dev in #66
Full Changelog: sdk-v2.14.2...sdk-v2.15.0
create-piprail v0.1.0
What's Changed
- Scope the scaffolder as @piprail/create (npm create @piprail) by @John-Weeks-Dev in #67
Full Changelog: sdk-v2.15.0...create-piprail-v0.1.0
@piprail/sdk v2.14.2
What's Changed
- fix(sdk): 2.14.2 — deeper element-level hardening (break-it pass, round two) by @John-Weeks-Dev in #65
Full Changelog: sdk-v2.14.1...sdk-v2.14.2
@piprail/sdk v2.14.1
What's Changed
- fix(sdk): 2.14.1 — robustness & typed-error polish from the live break-it pass by @John-Weeks-Dev in #64
Full Changelog: sdk-v2.14.0...sdk-v2.14.1
@piprail/sdk v2.14.0
What's Changed
- test(examples): pull @piprail/sdk 2.13.1 into the sandboxes + live-verify every rail by @John-Weeks-Dev in #49
- feat(integrations): elizaos-plugin-piprail — buy-side x402 payer for elizaOS by @John-Weeks-Dev in #50
- ci: integrations-publish workflow (publish standalone integration packages via NPM_TOKEN) by @John-Weeks-Dev in #51
- feat(elizaos): publish as @piprail/elizaos-plugin + production-grade publish workflow by @John-Weeks-Dev in #52
- fix(elizaos): audit fixes — docs accuracy, pay-report safety (v0.2.0), workflow hardening by @John-Weeks-Dev in #53
- ci: integrations-publish verify step never false-fails (set +e) by @John-Weeks-Dev in #54
- site: add the elizaOS integration (landing + MCP cards + global sidebar/mobile FAB) by @John-Weeks-Dev in #55
- content(blog): three code-verified x402 launch articles by @John-Weeks-Dev in #56
- polish(blog): real syntax highlighting for code blocks by @John-Weeks-Dev in #57
- feat(integrations): @piprail/n8n-nodes-piprail — pay x402 URLs from n8n by @John-Weeks-Dev in #58
- fix(n8n) + release: harden node (2 bugs), pass n8n lint, add across site + docs by @John-Weeks-Dev in #59
- feat(integrations): Mastra — the first x402 payment integration for Mastra by @John-Weeks-Dev in #60
- fix(integrations/mastra): correct MCP tool namespacing + harden docs across all surfaces by @John-Weeks-Dev in #61
- release: @piprail/sdk v2.14.0 — x402-over-MCP transport + payment-identifier + manifest, and a three-pass security hardening by @John-Weeks-Dev in #62
Full Changelog: sdk-v2.13.1...sdk-v2.14.0
@piprail/sdk v2.13.1
What's Changed
- docs(site): solid flat redesign + theme-adaptive logo + premium landing by @John-Weeks-Dev in #45
- docs: distinct social card for docs.piprail.com (facilitator-chain lineup) by @John-Weeks-Dev in #46
- docs: sync docs with the shipped SDK/MCP (35 verified fixes) by @John-Weeks-Dev in #47
- fix(sdk): family-correct exact-rail recovery hints + Web Crypto signing note (v2.13.1) by @John-Weeks-Dev in #48
Full Changelog: sdk-v2.13.0...sdk-v2.13.1