Releases: ProjectOpenSea/tool-sdk
v0.10.0
What's Changed
Minor
Canonicalize SubscriptionPredicate v0.2 on Ethereum mainnet and Base. The predicate now ships in script/Deploy.s.sol and the SDK at the same deterministic CREATE2 address on chain 1 and 8453: 0xCBe0cd9B1d99d95Baa9c58f2767246C52e461f25.
SubscriptionPredicateClient no longer requires predicateAddress — it defaults to the canonical deployment for the configured chain, matching ERC721OwnerPredicateClient and ERC1155OwnerPredicateClient. Pass predicateAddress only to target a non-canonical instance.
New SDK export: SUBSCRIPTION_PREDICATE (the Deployment record), alongside the existing ERC721_OWNER_PREDICATE / ERC1155_OWNER_PREDICATE / TOOL_REGISTRY.
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.9.0...tool-sdk-v0.10.0
v0.9.0
What's Changed
Targets the new v0.2 ToolRegistry + canonical predicates deployed on Ethereum mainnet (chain 1) and Base (chain 8453). Same CREATE2 address on both chains:
TOOL_REGISTRY→0x265BB2DBFC0A8165C9A1941Eb1372F349baD2cf1ERC721_OWNER_PREDICATE→0xc8721c9A776958FfFfEb602DA1b708bf1D318379ERC1155_OWNER_PREDICATE→0x77373Dc3c1AE9A1e937eF3e5E08F4807D47c7c11
Breaking changes (pre-beta — no legacy support)
Removed from public API:
ERC721_OWNER_PREDICATE_V1(value export)getPredicateForRegistryVersion(function export)PredicateKind(type export)PredicateClientConfig.registryVersion(option)
CLI commands (register, set-collections, set-collection-tokens, get-collections) no longer probe registry.version() to pick a predicate — they always resolve to the canonical v0.2 deployment.
Full Changelog: v0.8.1...v0.9.0
v0.8.1
What's Changed
- ERC-8257 §Predicate Introspection Hardening ceilings in
describeToolAccess— defensive bounds against malicious predicates returning megabyte-scalegetRequirements()/name()data. Caps mirror the manifest-side bounds inschema.ts. inspectCLI wallet-state-attestation dispatch fix — render on requirementkind(0x7a111640) instead of predicatename(), so third-party attestation issuers (e.g., theInsumerAccessPredicatereference implementation) get the issuer-JWKS / condition-hash output.
Community Contributions
- Review feedback on the wallet-state-attestation rendering path that motivated the
inspectfix — thanks @douglasborthwick-crypto (opensea-devtools#291)
Full Changelog: v0.8.0...v0.8.1
v0.8.0
What's Changed
Add IWalletStateAttestation requirement type support (kind 0x7a111640):
- New
WALLET_STATE_ATTESTATION_KINDconstant andDecodedWalletStateAttestationRequirementtype decodeRequirement()now decodes wallet-state attestation data (issuerJwksUri,conditionHash)- CLI
inspectcommand displays decoded attestation fields forWalletStateAttestationPredicate SKILLS.mddocuments the new predicate type with manifest and decoder examples
This is a third-party predicate type for gating tool access based on offchain-signed cross-chain wallet state (e.g., Solana, XRPL, Bitcoin holdings verified via RIP-7212 P-256 signature verification). Each issuer deploys their own predicate instance — no canonical deployment.
Community Contributions
- Predicate type proposed by @douglasborthwick-crypto in the ERC-8257 forum thread. Reference implementation at douglasborthwick-crypto/insumer-examples.
Full Changelog: tool-sdk-v0.7.1...tool-sdk-v0.8.0
v0.7.1
What's Changed
Patch Changes
- docs: update README and SKILLS.md for F4a–F4g changes (#292)
- README: document
--nft-gate,--predicate-config,--wallet-provider,--rpc-urlflags onregister - README: document
--auth siwe,--manifest,--chainflags onpay - README: add CLI reference sections for
smoke,set-collections,get-collections,set-collection-tokens - SKILLS.md: replace
cast sendwithset-collectionsCLI in Example C
- README: document
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.7.0...tool-sdk-v0.7.1
v0.7.0
What's Changed
Minor Changes
- Add
--predicate-configflag toregistercommand (F4d) — bundle predicate setup with registration; CLI now identifies predicate type vianame()and validates--access-predicateaddresses (#288) - Add
set-collections,get-collections, andset-collection-tokensCLI commands for managing ERC-721/ERC-1155 collection gates on already-registered tools (F4c) (#283) - Fix
--nft-gatebroken end-to-end on Base mainnet (F4a) —registernow queries the registry'sversion()and selects the matching predicate deployment automatically. AddsERC721_OWNER_PREDICATE_V1deployment,getPredicateForRegistryVersion(), andregistryVersionoption toPredicateClientConfig(#282) - Add
--auth siweflag to thepayCLI command — usespaidAuthenticatedFetch(SIWE + x402 payment) instead of payment-only flow; auto-enables when--manifesthas anaccessblock (#287) - Add
SubscriptionPredicateClientandCompositePredicateClienttyped clients matching tool-registry example predicates. Add missingCollectionsSetevent toERC721OwnerPredicateABI(#281) - BREAKING: Remove deprecated
nftGatemiddleware andNFTGateConfig. UsepredicateGate({ toolId })with--access-predicateinstead (#280)
Patch Changes
- Treat 4xx probe responses (e.g. 400 from Zod validation) as endpoint reachable instead of printing a misleading WARN. Only 5xx responses are flagged as failures (F4g) (#284)
- Treat 402 with valid
acceptsarray as auth-OK insmokecommand — paywalled tools no longer fail smoke tests after SIWE auth (#286)
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.6.0...tool-sdk-v0.7.0
v0.6.0
What's Changed
Minor Changes
- Add
defineVerifiability()typed builder for verifiability blocks (#272) — three tier-narrowed factory methods (selfAttested,hardwareAttested,verifiable) produce correct verifiability objects fordefineManifest(). Invalid tier/field combos are rejected at the TypeScript type level rather than only at validation time. - Adopt ERC-8257 assignment (#264) — replace ERC-Draft placeholder references with the officially assigned ERC-8257 number across CLI help text, documentation, and test vectors. Manifest schema
typeURL switched to the canonical ERCs site (https://ercs.ethereum.org/ERCS/erc-8257#tool-manifest-v1); test vectors and pinned hashes regenerated against the new canonical bytes.
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.5.0...tool-sdk-v0.6.0
v0.5.0
What's Changed
Minor Changes
- Add
toManifestAccess()toERC721OwnerPredicateClientandERC1155OwnerPredicateClientfor programmatic manifest access generation with deterministic OpenSea collection links. Export shared requirement-kind constants (ERC721_KIND,ERC1155_KIND,SUBSCRIPTION_KIND). - Suggest manifest
accessblock when registering with--nft-gate. TheregisterCLI command now detects when a manifest is missing theaccessfield and the user is registering with--nft-gate. It generates the correct access object usingERC721OwnerPredicateClient.toManifestAccess()and prints it as a suggestion. The preview appears in both--dry-runand normal mode. In normal mode the user is prompted to view copy-paste instructions for updating their manifest. - Enforce bidirectional tier consistency checks in manifest validator. The verifiability schema now rejects all 4 invalid tier/field combinations:
hardware-attestedrequiresteeore2eeexecutionhardware-attestedrequires anattestationfieldself-attestedcannot useteeore2eeexecutionself-attestedcannot include anattestationfield
Patch Changes
- access.links values now require valid HTTPS URLs; non-HTTPS values (onchain addresses, http://, ipfs://) are rejected by schema validation.
- Enforce ERC-spec parser caps on
access.requirements: max 256 entries, max 4,096 decoded bytes peraccess[].datafield. - Enforce access label limit as 256 bytes (UTF-8) instead of 256 characters, aligning with the updated ERC spec.
- Enforce lowercase-only hex in manifest schema fields (
access[].kind,access[].data,attestation.enclaveHash,reproducibleBuild.buildHash,creatorAddress) to match the tightened ERC spec. Normalize wallet and onchain addresses to lowercase before comparison inregisterandupdate-metadatacommands.
Full Changelog: v0.4.2...v0.5.0
v0.4.2
What's Changed
Patch release. Picks up @opensea/wallet-adapters@0.3.0 (provider-aware wallet hardening across Privy, Turnkey, Fireblocks, and Bankr) via the workspace dep.
No tool-sdk source changes.
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.4.1...tool-sdk-v0.4.2
v0.4.1
What's Changed
- Replace ERC-XXXX placeholder references with ERC-Draft throughout CLI help text, schema defaults, and documentation.
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.4.0...tool-sdk-v0.4.1