Skip to content

Releases: ProjectOpenSea/tool-sdk

v0.27.0

Choose a tag to compare

@ryanio ryanio released this 02 Jul 17:59

What's Changed

  • feat: add Monad (chain 143) support. The --network flag now accepts monad in addition to base, mainnet, shape, and abstract. Monad is defined locally (mirroring viem's definition) because the pinned viem version predates Monad mainnet. 143 is added to every Deployment.chains array in chains.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

Choose a tag to compare

@ryanio ryanio released this 01 Jul 02:58

What's Changed

  • Fix createBankrAccount reading the wrong shape from Bankr's /wallet/me. The endpoint returns { wallets: [{ chain, address }, ...] } (no top-level address), so the account was created with an undefined address. Now resolves the EVM entry from wallets[]. (#473)
  • Picks up the @opensea/wallet-adapters@0.3.2 dependency bump (BigInt EIP-712 signing fix).

Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.26.0...tool-sdk-v0.26.1

v0.26.0

Choose a tag to compare

@ryanio ryanio released this 30 Jun 23:06

What's Changed

Minor Changes

  • BREAKING: Unify predicateGate to use the standard 402 + X-Payment (EIP-3009) auth flow only (#471).
    • PredicateGateConfig.operatorAddress is now required (was optional)
    • Authorization: EIP-3009 <token> header is no longer accepted: use the X-Payment header via the 402 challenge flow
    • Authorization: SIWE <msg>.<sig> header is no longer accepted (was already deprecated)
    • CLI dry-run-predicate-gate now requires --operator-address and asserts a 402 response

Fixes

  • Use the Bankr /wallet/me endpoint instead of /wallet/info (#470).

Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.25.0...tool-sdk-v0.26.0

v0.25.0

Choose a tag to compare

@ryanio ryanio released this 27 Jun 14:49

What's Changed

  • feat: The register command now validates that the manifest URL and declared endpoint share the same origin before sending the onchain transaction. Previously only verify and deploy checked 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

Choose a tag to compare

@ryanio ryanio released this 19 Jun 00:06

What's Changed

  • Add support for the upto x402 payment scheme, which allows variable pricing (charge up to amountPerCall, with the actual charge potentially less). createX402Client now registers both ExactEip3009Scheme and UptoEip3009Scheme internally, letting @x402/core route to the correct scheme based on the challenge's scheme field. The pay CLI, paidFetch, and paidAuthenticatedFetch route 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

Choose a tag to compare

@ryanio ryanio released this 18 Jun 03:44

What's Changed

  • --tool-ref and the usage reporters now support non-address registries such as x402:bazaar and x402:bankr for tools that are not registered onchain (#455). toolRegistryAddress is widened to string, and toolOnchainId is kept as a string to preserve precision for IDs exceeding Number.MAX_SAFE_INTEGER.
  • --tool-ref now 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

Choose a tag to compare

@ryanio ryanio released this 18 Jun 00:13

What's Changed

  • Caller-side usage reporting can now identify a tool by its ERC-8257 composite key instead of only its endpoint URL. reportCallerX402Usage accepts optional toolChainId, toolRegistryAddress, and toolOnchainId, and the pay CLI gains a --tool-ref <chainId:registryAddress:onchainId> flag (e.g. --tool-ref 8453:0x265b...2cf1:65). When supplied, these are sent in place of tool_endpoint, matching the server-side reporter's payload. This fixes the 400 Multiple tools registered for endpoint error 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

Choose a tag to compare

@ryanio ryanio released this 17 Jun 23:34

What's Changed

  • Migrate paidFetch, paidAuthenticatedFetch, and the pay CLI to the @x402/core client infrastructure (x402Client, x402HTTPClient, SchemeNetworkClient) for payment payload creation and header encoding. Adds an ExactEip3009Scheme adapter 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

Choose a tag to compare

@ryanio ryanio released this 17 Jun 22:20

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/functions dependency), wired on Cloudflare via toCloudflareHandler (its fetch gains an optional ctx arg), overridable via a new waitUntil option on ToolHandlerConfig, and awaited as before when no waitUntil is available. (#449)
  • init Vercel template defaults maxDuration = 60 on 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

Choose a tag to compare

@ryanio ryanio released this 17 Jun 20:06

What's Changed

  • Caller usage reporting, default-on: pay now sends a caller-side usage report by default (--no-report-usage to opt out). --api-key falls back to OPENSEA_API_KEY before 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 / reportCallerEip3009Usage now return a CallerUsageReportResult (reported | already-reported | skipped | failed) so callers can surface the real outcome. (#445)
  • Reject x402 payment on 5xx: paidFetch and paidAuthenticatedFetch now throw X402PaymentError when the server responds 5xx after a payment is sent, instead of silently returning the error response. The error exposes response and settled so 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