Releases: ProjectOpenSea/tool-sdk
Release list
v0.27.0
What's Changed
- feat: add Monad (chain 143) support. The
--networkflag now acceptsmonadin addition tobase,mainnet,shape, andabstract. Monad is defined locally (mirroring viem's definition) because the pinned viem version predates Monad mainnet.143is added to everyDeployment.chainsarray inchains.ts, and the deployed-address docs are updated: the canonical v0.2 addresses are identical on Monad (verified via CREATE2 dry-run). (#477)
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.26.1...tool-sdk-v0.27.0
v0.26.1
What's Changed
- Fix
createBankrAccountreading the wrong shape from Bankr's/wallet/me. The endpoint returns{ wallets: [{ chain, address }, ...] }(no top-leveladdress), so the account was created with an undefined address. Now resolves the EVM entry fromwallets[]. (#473) - Picks up the
@opensea/wallet-adapters@0.3.2dependency bump (BigInt EIP-712 signing fix).
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.26.0...tool-sdk-v0.26.1
v0.26.0
What's Changed
Minor Changes
- BREAKING: Unify
predicateGateto use the standard 402 + X-Payment (EIP-3009) auth flow only (#471).PredicateGateConfig.operatorAddressis now required (was optional)Authorization: EIP-3009 <token>header is no longer accepted: use the X-Payment header via the 402 challenge flowAuthorization: SIWE <msg>.<sig>header is no longer accepted (was already deprecated)- CLI
dry-run-predicate-gatenow requires--operator-addressand asserts a 402 response
Fixes
- Use the Bankr
/wallet/meendpoint instead of/wallet/info(#470).
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.25.0...tool-sdk-v0.26.0
v0.25.0
What's Changed
- feat: The
registercommand now validates that the manifest URL and declared endpoint share the same origin before sending the onchain transaction. Previously onlyverifyanddeploychecked this, so a developer could burn gas registering a tool the indexer would immediately reject. All three commands (register,verify,deploy) now show a consistent, actionable error message that explicitly calls out subdomains as different origins and explains how to fix it. (#465)
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.24.0...tool-sdk-v0.25.0
v0.24.0
What's Changed
- Add support for the
uptox402 payment scheme, which allows variable pricing (charge up toamountPerCall, with the actual charge potentially less).createX402Clientnow registers bothExactEip3009SchemeandUptoEip3009Schemeinternally, letting@x402/coreroute to the correct scheme based on the challenge'sschemefield. ThepayCLI,paidFetch, andpaidAuthenticatedFetchroute to the appropriate scheme automatically, so callers no longer need to know which scheme to instantiate. (#459)
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.23.1...tool-sdk-v0.24.0
v0.23.1
What's Changed
--tool-refand the usage reporters now support non-address registries such asx402:bazaarandx402:bankrfor tools that are not registered onchain (#455).toolRegistryAddressis widened tostring, andtoolOnchainIdis kept as a string to preserve precision for IDs exceedingNumber.MAX_SAFE_INTEGER.--tool-refnow uses a comma delimiter (chainId,registryAddress,onchainId) instead of a colon, so a registry identifier that itself contains a colon stays unambiguous (#457). Example:8453,x402:bazaar,8679018179619845322.
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.23.0...tool-sdk-v0.23.1
v0.23.0
What's Changed
- Caller-side usage reporting can now identify a tool by its ERC-8257 composite key instead of only its endpoint URL.
reportCallerX402Usageaccepts optionaltoolChainId,toolRegistryAddress, andtoolOnchainId, and thepayCLI gains a--tool-ref <chainId:registryAddress:onchainId>flag (e.g.--tool-ref 8453:0x265b...2cf1:65). When supplied, these are sent in place oftool_endpoint, matching the server-side reporter's payload. This fixes the400 Multiple tools registered for endpointerror when reporting usage for a tool whose endpoint maps to more than one registry entry. (#453)
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.22.0...tool-sdk-v0.23.0
v0.22.0
What's Changed
- Migrate
paidFetch,paidAuthenticatedFetch, and thepayCLI to the@x402/coreclient infrastructure (x402Client,x402HTTPClient,SchemeNetworkClient) for payment payload creation and header encoding. Adds anExactEip3009Schemeadapter wrapping tool-sdk's existing EIP-3009 signing into the standard x402 scheme interface. No public API changes. (#447)
This also resolves a payment-blocking bug in the previous home-rolled encoder: btoa(JSON.stringify(...)) threw InvalidCharacterError whenever a server's 402 challenge echoed a non-Latin1 character (e.g. an em-dash in resource.description). The @x402/core encoder is UTF-8-safe, and the v2 payload no longer embeds resource/accepted.
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.21.0...tool-sdk-v0.22.0
v0.21.0
What's Changed
- Usage report fires via platform
waitUntil(createToolHandler): the fire-and-forget usage report now runs as keep-alive-after-response work instead of being awaited inline. This removes reporting latency from every successful call and closes a billing edge — x402 settlement runs before the report, so awaiting it meant a function freeze in that window could charge a paid caller without returning a result. Auto-detected on Vercel (no@vercel/functionsdependency), wired on Cloudflare viatoCloudflareHandler(itsfetchgains an optionalctxarg), overridable via a newwaitUntiloption onToolHandlerConfig, and awaited as before when nowaitUntilis available. (#449) initVercel template defaultsmaxDuration = 60on the tool entrypoint, so LLM-backed tools don't 502 on Vercel's 10s Hobby default. (#448)
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.20.1...tool-sdk-v0.21.0
v0.20.1
What's Changed
- Caller usage reporting, default-on:
paynow sends a caller-side usage report by default (--no-report-usageto opt out).--api-keyfalls back toOPENSEA_API_KEYbefore auto-provisioning an instant key. A duplicate-report rejection (the tool's own server-side reporter already recorded the settlement) is treated as success.reportCallerX402Usage/reportCallerEip3009Usagenow return aCallerUsageReportResult(reported|already-reported|skipped|failed) so callers can surface the real outcome. (#445) - Reject x402 payment on 5xx:
paidFetchandpaidAuthenticatedFetchnow throwX402PaymentErrorwhen the server responds 5xx after a payment is sent, instead of silently returning the error response. The error exposesresponseandsettledso callers can detect a possibly-settled payment and avoid double charges. (#441)
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.20.0...tool-sdk-v0.20.1