Skip to content

Commit 85f7221

Browse files
committed
Release v0.4.1
1 parent 1501669 commit 85f7221

27 files changed

Lines changed: 55 additions & 49 deletions

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# tool-sdk — Agent Conventions
22

3-
TypeScript SDK and CLI for building ERC-XXXX compliant AI agent tools.
3+
TypeScript SDK and CLI for building ERC-Draft compliant AI agent tools.
44

55
## Quick Reference
66

CHANGELOG.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# @opensea/tool-sdk
22

3+
## 0.4.1
4+
5+
### Patch Changes
6+
7+
- 5ea8a05: Replace ERC-XXXX placeholder references with ERC-Draft throughout CLI help text, schema defaults, and documentation.
8+
39
## 0.4.0
410

511
### Minor Changes
@@ -80,7 +86,7 @@
8086

8187
### Patch Changes
8288

83-
- 905ed4a: Initial release of `@opensea/tool-sdk` — SDK and CLI for building ERC-XXXX compliant AI agent tools.
89+
- 905ed4a: Initial release of `@opensea/tool-sdk` — SDK and CLI for building ERC-Draft compliant AI agent tools.
8490

8591
### Core SDK
8692

@@ -93,7 +99,7 @@
9399

94100
- `ToolRegistryClient` with `registerTool`, `setAccessPredicate`, `tryHasAccess`, and `listToolsByCreator`.
95101
- Canonical CREATE2 deployments on Base mainnet: `TOOL_REGISTRY` (v0.1), `ERC721_OWNER_PREDICATE`, `ERC1155_OWNER_PREDICATE`. Each is a `Deployment` object (`{ address, chains, overrides? }`); resolve per-chain with `deploymentAddress(deployment, chainId)`.
96-
- `register` CLI enforces `creatorAddress` matches the signing wallet per ERC-XXXX spec.
102+
- `register` CLI enforces `creatorAddress` matches the signing wallet per ERC-Draft spec.
97103
- `IAccessPredicate` (interface ID `0xbdf9dc18`) and `IToolRegistry` ABIs exported, including `name()` / `version()` view methods. Predicates expose machine-readable access requirements via `getRequirements(toolId)` returning `AccessRequirement[]` with `RequirementLogic` (AND/OR). Marker interfaces `IERC721Holding`, `IERC1155Holding`, `ISubscription` shipped via `IRequirementTypes.sol`.
98104

99105
### Access gates

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# @opensea/tool-sdk
22

3-
SDK and CLI for building [ERC-XXXX](https://github.com/ProjectOpenSea/tool-registry/blob/main/eip-xxxx-tool-registry.md) compliant AI agent tools. Provides manifest validation, onchain registration, gating middleware, framework adapters, and project scaffolding.
3+
SDK and CLI for building [ERC-Draft](https://github.com/ProjectOpenSea/tool-registry/blob/main/eip-draft-tool-registry.md) compliant AI agent tools. Provides manifest validation, onchain registration, gating middleware, framework adapters, and project scaffolding.
44

55
Pairs with the onchain reference implementation at [ProjectOpenSea/tool-registry](https://github.com/ProjectOpenSea/tool-registry) — the `ToolRegistry` contract and example access predicates this SDK reads from and writes to.
66

@@ -30,7 +30,7 @@ npx @opensea/tool-sdk register \
3030

3131
### `init [name]`
3232

33-
Scaffold a new ERC-XXXX tool project with interactive prompts.
33+
Scaffold a new ERC-Draft tool project with interactive prompts.
3434

3535
```bash
3636
npx @opensea/tool-sdk init my-tool
@@ -41,7 +41,7 @@ Supports Vercel, Cloudflare Workers, and Express templates.
4141

4242
### `validate [path]`
4343

44-
Validate a tool manifest JSON file against the ERC-XXXX schema.
44+
Validate a tool manifest JSON file against the ERC-Draft schema.
4545

4646
```bash
4747
npx @opensea/tool-sdk validate ./manifest.json
@@ -211,7 +211,7 @@ Type-narrowing identity function for manifest definitions.
211211
import { defineManifest } from "@opensea/tool-sdk"
212212

213213
export const manifest = defineManifest({
214-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
214+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
215215
name: "my-tool",
216216
description: "A useful tool",
217217
endpoint: "https://my-tool.vercel.app",
@@ -230,7 +230,7 @@ export const manifest = defineManifest({
230230

231231
### `validateManifest(data)`
232232

233-
Validates unknown data against the ERC-XXXX manifest schema.
233+
Validates unknown data against the ERC-Draft manifest schema.
234234

235235
```typescript
236236
import { validateManifest } from "@opensea/tool-sdk"
@@ -739,4 +739,4 @@ app.post("/api", toExpressHandler(handler))
739739

740740
## ERC Spec
741741

742-
See the full [ERC-XXXX Tool Registry specification](https://github.com/ProjectOpenSea/tool-registry/blob/main/eip-xxxx-tool-registry.md) for details on manifest schema, origin binding, creator binding, and consumer verification.
742+
See the full [ERC-Draft Tool Registry specification](https://github.com/ProjectOpenSea/tool-registry/blob/main/eip-draft-tool-registry.md) for details on manifest schema, origin binding, creator binding, and consumer verification.

docs/predicate-gating-guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ import {
4747
} from "@opensea/tool-sdk"
4848

4949
export const manifest = defineManifest({
50-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
50+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
5151
name: "my-gated-tool",
5252
description: "A tool gated by an onchain access predicate",
5353
endpoint: "https://my-tool.vercel.app",

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "@opensea/tool-sdk",
3-
"version": "0.4.0",
3+
"version": "0.4.1",
44
"type": "module",
5-
"description": "SDK and CLI for building ERC-XXXX compliant AI agent tools",
5+
"description": "SDK and CLI for building ERC-Draft compliant AI agent tools",
66
"repository": {
77
"type": "git",
88
"url": "git+https://github.com/ProjectOpenSea/tool-sdk.git"

src/__tests__/deploy-integration.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ describe("deploy command (mocked shell)", () => {
312312
})
313313

314314
const mismatchManifest = {
315-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
315+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
316316
name: "my-tool",
317317
description: "A test tool",
318318
endpoint: "https://evil-site.example.com",
@@ -365,7 +365,7 @@ describe("deploy command (mocked shell)", () => {
365365
})
366366

367367
const validManifest = {
368-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
368+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
369369
name: "my-tool",
370370
description: "A test tool",
371371
endpoint: "https://my-tool-final.vercel.app",
@@ -429,7 +429,7 @@ describe("deploy command (mocked shell)", () => {
429429
})
430430

431431
const validManifest = {
432-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
432+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
433433
name: "my-tool",
434434
description: "A test tool",
435435
endpoint: "https://my-tool-final.vercel.app",
@@ -503,7 +503,7 @@ describe("deploy command (mocked shell)", () => {
503503
})
504504

505505
const validManifest = {
506-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
506+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
507507
name: "my-tool",
508508
description: "A test tool",
509509
endpoint: "https://my-tool-final.vercel.app",

src/__tests__/dry-run-gate.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { afterEach, describe, expect, it, vi } from "vitest"
22

33
const SAMPLE_MANIFEST = {
4-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
4+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
55
name: "paid-tool",
66
description: "A paid tool for testing",
77
endpoint: "https://paid.example.com",

src/__tests__/handler.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { ManifestDefinition } from "../lib/manifest/index.js"
66
import type { GateMiddleware } from "../types.js"
77

88
const testManifest = {
9-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
9+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
1010
name: "test-tool",
1111
description: "A test tool",
1212
endpoint: "https://test.example.com",

src/__tests__/hash.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { computeManifestHash } from "../lib/onchain/hash.js"
55
describe("computeManifestHash", () => {
66
it("should match the free-tool test vector from the ERC spec", () => {
77
const freeToolManifest = {
8-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
8+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
99
name: "nft-price-oracle",
1010
description: "Returns estimated floor price for any NFT collection.",
1111
endpoint: "https://tools.example.com/nft-price-oracle",
@@ -37,13 +37,13 @@ describe("computeManifestHash", () => {
3737

3838
const hash = computeManifestHash(freeToolManifest)
3939
expect(hash).toBe(
40-
"0x85f160012d9fd30c7e82bc9d3959c90ec9df3c7d69009a343d8ee01904321290",
40+
"0x142af74ae3e1b7aee9a8249fab3507dada81c925fbfd0a63d0a5a9cac085b392",
4141
)
4242
})
4343

4444
it("should match the paid-tool test vector from the ERC spec", () => {
4545
const paidToolManifest = {
46-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
46+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
4747
name: "premium-analytics",
4848
description: "Advanced portfolio analytics for NFT holders.",
4949
endpoint: "https://tools.example.com/premium-analytics",
@@ -85,13 +85,13 @@ describe("computeManifestHash", () => {
8585

8686
const hash = computeManifestHash(paidToolManifest)
8787
expect(hash).toBe(
88-
"0xf5c2253fa557ef61e7b91fdfb3613c5a14acf6f986193a40aeb0b481dc6cbac3",
88+
"0x5a0550de1c789afc64bd64128091f584d5a5a9b17788c267a4e974ccbf2c134d",
8989
)
9090
})
9191

9292
it("should produce deterministic hashes", () => {
9393
const manifest = {
94-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
94+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
9595
name: "test",
9696
description: "A test tool",
9797
endpoint: "https://test.example.com",

src/__tests__/inspect.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { afterEach, describe, expect, it, vi } from "vitest"
22
import { computeManifestHash } from "../lib/onchain/hash.js"
33

44
const VALID_MANIFEST = {
5-
type: "https://eips.ethereum.org/EIPS/eip-XXXX#tool-manifest-v1",
5+
type: "https://eips.ethereum.org/EIPS/eip-draft#tool-manifest-v1",
66
name: "test-tool",
77
description: "A test tool",
88
endpoint: "https://test.example.com",

0 commit comments

Comments
 (0)