@basecred/openclaw-8004 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +2 -2
  2. package/SKILL.md +281 -18
  3. package/package.json +4 -1
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  An OpenClaw skill that teaches AI agents to register and manage on-chain identities on Base mainnet via [ERC-8004](https://eips.ethereum.org/EIPS/eip-8004) using the [agent0-sdk](https://github.com/agent0lab/agent0-ts).
4
4
 
5
- > **HTTP registration only.** This skill covers on-chain registration via HTTP URIs (`agent.registerHTTP()`). IPFS registration is **not** covered.
5
+ > **Scope: On-chain operations + registration file schema.** This skill covers agent identity minting, updates, feedback, reputation, transfers, and the standardized registration file format via `agent0-sdk`. Off-chain hosting (IPFS, CDN) and subgraph queries are not covered — see [References in SKILL.md](./SKILL.md#references).
6
6
 
7
7
  ## Install
8
8
 
@@ -24,7 +24,7 @@ Or copy `SKILL.md` directly into your agent's skill directory.
24
24
  | Operation | Description |
25
25
  |-----------|-------------|
26
26
  | **Register** | Create an on-chain agent identity (ERC-721 NFT) |
27
- | **Update** | Modify name, description, endpoints, skills, metadata |
27
+ | **Update** | Modify name, description, services, skills, metadata |
28
28
  | **Give Feedback** | Submit on-chain reputation scores for other agents |
29
29
  | **Search Feedback** | Query reputation summaries and feedback history |
30
30
  | **Transfer** | Move agent ownership to a new wallet |
package/SKILL.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: openclaw-8004
3
- version: 1.0.0
3
+ version: 1.2.0
4
4
  description: Register, manage, and build reputation for your AI agent on-chain via ERC-8004
5
5
  metadata:
6
6
  emoji: "\U0001F916"
@@ -16,7 +16,24 @@ metadata:
16
16
 
17
17
  Register your AI agent on-chain as an ERC-721 identity on Base mainnet. Advertise capabilities, receive feedback, and build reputation — all permissionless, no intermediaries.
18
18
 
19
- > **HTTP registration only.** This skill covers on-chain registration via HTTP URIs (`agent.registerHTTP()`). IPFS registration is **not** covered.
19
+ > **Scope: On-Chain Operations + Registration File Schema**
20
+ >
21
+ > This skill covers **on-chain** agent identity management — registration (minting), updates, feedback, reputation, and transfers — using [agent0-sdk](https://github.com/agent0lab/agent0-ts) and `agent.registerHTTP()`.
22
+ >
23
+ > **What this skill covers:**
24
+ > - Minting an ERC-721 agent identity on Base mainnet
25
+ > - Updating agent metadata (name, description, services)
26
+ > - Giving and searching on-chain feedback / reputation
27
+ > - Transferring agent ownership
28
+ > - SDK initialization and transaction safety
29
+ > - Registration file schema (field definitions, endpoint types, output format)
30
+ >
31
+ > **What this skill does NOT cover:**
32
+ > - IPFS registration (`agent.registerIPFS()`) or Pinata configuration
33
+ > - Hosting, serving, or updating the registration JSON file
34
+ > - Subgraph indexing or off-chain data queries
35
+ >
36
+ > For off-chain topics, see the [References](#references) section.
20
37
 
21
38
  | File | Description |
22
39
  |---|---|
@@ -24,6 +41,51 @@ Register your AI agent on-chain as an ERC-721 identity on Base mainnet. Advertis
24
41
  | **README.md** | Quick-start guide |
25
42
  | **IDENTITY.md** | Agent profile card (created after registration) |
26
43
 
44
+ ## Quick Reference
45
+
46
+ | Operation | Section | SDK Call |
47
+ |-----------|---------|---------|
48
+ | Register | [Register Agent](#register-agent) | `agent.registerHTTP(url)` |
49
+ | Update | [Update Agent](#update-agent) | `sdk.updateAgent(agentId, updates)` |
50
+ | Feedback | [Give Feedback](#give-feedback) | `sdk.giveFeedback(agentId, score)` |
51
+ | Search | [Search Feedback](#search-feedback) | `sdk.getReputationSummary(agentId)` |
52
+ | Transfer | [Transfer Ownership](#transfer-ownership) | `sdk.transferAgent(agentId, newOwner)` |
53
+
54
+ ### SDK Init (copy-paste)
55
+
56
+ ```typescript
57
+ import 'dotenv/config';
58
+ import { SDK } from 'agent0-sdk';
59
+
60
+ const sdk = new SDK({
61
+ chainId: 8453,
62
+ rpcUrl: process.env.BASE_RPC_URL || 'https://mainnet.base.org',
63
+ privateKey: process.env.WALLET_PRIVATE_KEY!,
64
+ });
65
+ ```
66
+
67
+ ### Direct Mode (No Prompts)
68
+
69
+ If you already know exactly what to do, skip the conversational flow:
70
+
71
+ ```typescript
72
+ // Register
73
+ const agent = sdk.createAgent('My Agent', 'Does things');
74
+ const tx = await agent.registerHTTP('https://example.com/agent.json');
75
+ await tx.waitConfirmed();
76
+
77
+ // Give feedback
78
+ await (await sdk.giveFeedback('8453:99', 85, 'helpful')).waitConfirmed();
79
+
80
+ // Search reputation
81
+ const summary = await sdk.getReputationSummary('8453:99');
82
+
83
+ // Transfer
84
+ await (await sdk.transferAgent('8453:42', '0xNEW...')).waitConfirmed();
85
+ ```
86
+
87
+ ---
88
+
27
89
  ## When to Use This Skill
28
90
 
29
91
  Use this skill whenever you need to:
@@ -31,7 +93,7 @@ Use this skill whenever you need to:
31
93
  - Advertise your MCP tools, A2A skills, or other capabilities
32
94
  - Receive or give feedback to other agents
33
95
  - Check your reputation score
34
- - Update your agent profile (name, description, endpoints)
96
+ - Update your agent profile (name, description, services)
35
97
  - Transfer ownership of your agent identity to a new wallet
36
98
 
37
99
  ---
@@ -70,7 +132,7 @@ When the agent is already registered, **always present this menu** to the owner:
70
132
  >
71
133
  > What would you like to do?
72
134
  >
73
- > 1. **Update Agent** — modify name, description, endpoints, skills, or metadata
135
+ > 1. **Update Agent** — modify name, description, services, skills, or metadata
74
136
  > 2. **Give Feedback** — rate another agent on-chain
75
137
  > 3. **Search Feedback** — check reputation for any agent
76
138
  > 4. **Transfer Ownership** — move your agent identity to a new wallet
@@ -147,6 +209,120 @@ Never skip the preview. On-chain actions cost gas and are irreversible.
147
209
 
148
210
  ---
149
211
 
212
+ ## Registration File Schema
213
+
214
+ The registration file follows the [ERC-8004 specification](https://eips.ethereum.org/EIPS/eip-8004). The SDK generates this JSON when you call `agent.registerHTTP()`.
215
+
216
+ ### Example Registration File
217
+
218
+ ```json
219
+ {
220
+ "type": "https://eips.ethereum.org/EIPS/eip-8004#registration-v1",
221
+ "name": "My Agent",
222
+ "description": "What this agent does",
223
+ "image": "https://example.com/avatar.png",
224
+ "services": [
225
+ {
226
+ "name": "MCP",
227
+ "version": "2025-06-18",
228
+ "endpoint": "https://example.com/api/mcp"
229
+ },
230
+ {
231
+ "name": "A2A",
232
+ "version": "0.3.0",
233
+ "endpoint": "https://example.com/.well-known/agent-card.json"
234
+ },
235
+ {
236
+ "name": "OASF",
237
+ "version": "0.8",
238
+ "endpoint": "https://example.com/.well-known/oasf.json",
239
+ "skills": ["blockchain/transaction_execution", "data_management/data_retrieval"],
240
+ "domains": ["finance_and_business/cryptocurrency", "technology/blockchain"]
241
+ },
242
+ {
243
+ "name": "web",
244
+ "endpoint": "https://example.com"
245
+ },
246
+ {
247
+ "name": "email",
248
+ "endpoint": "dev@example.com"
249
+ }
250
+ ],
251
+ "x402Support": false,
252
+ "active": true,
253
+ "registrations": [
254
+ {
255
+ "agentId": 42,
256
+ "agentRegistry": "eip155:8453:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432"
257
+ }
258
+ ],
259
+ "supportedTrust": ["reputation"]
260
+ }
261
+ ```
262
+
263
+ ### Field Reference
264
+
265
+ | Field | Type | Required | Description |
266
+ |-------|------|----------|-------------|
267
+ | `type` | string | Yes | Always `"https://eips.ethereum.org/EIPS/eip-8004#registration-v1"` |
268
+ | `name` | string | Yes | Agent display name |
269
+ | `description` | string | Yes | What the agent does (MAY include pricing, interaction methods) |
270
+ | `image` | string (URL) | No | Publicly accessible avatar URL |
271
+ | `services` | array | No | Array of service objects (see below) |
272
+ | `x402Support` | boolean | No | Whether agent supports x402 payments |
273
+ | `active` | boolean | Yes | Whether agent is currently active |
274
+ | `registrations` | array | No | On-chain registration references (see below) |
275
+ | `supportedTrust` | string[] | No | Trust models: `"reputation"`, `"crypto-economic"`, `"tee-attestation"` |
276
+
277
+ > **Note on `type`:** The SDK sets this automatically during `registerHTTP()`. Agents do not need to set it manually.
278
+
279
+ > **Note on `registrations`:** Each entry has `agentId` (token ID number) and `agentRegistry` in `{namespace}:{chainId}:{identityRegistry}` format (e.g. `eip155:8453:0x8004...`). The SDK populates this after minting.
280
+
281
+ ### Service Types
282
+
283
+ **EIP-8004 defined services:**
284
+
285
+ | Service Name | Description | Example |
286
+ |--------------|-------------|---------|
287
+ | `MCP` | Model Context Protocol server | `https://example.com/api/mcp` |
288
+ | `A2A` | Agent-to-Agent protocol | `https://agent.example/.well-known/agent-card.json` |
289
+ | `OASF` | OASF agent card (may include `skills[]` and `domains[]`) | `https://example.com/.well-known/oasf.json` |
290
+ | `ENS` | Ethereum Name Service | `vitalik.eth` |
291
+ | `DID` | W3C Decentralized Identifier | `did:method:foobar` |
292
+ | `web` | Agent website | `https://example.com` |
293
+ | `email` | Contact email | `dev@example.com` |
294
+
295
+ **Common custom services** (not in EIP spec, but widely used):
296
+
297
+ | Service Name | Description | Example |
298
+ |--------------|-------------|---------|
299
+ | `twitter` | Twitter/X profile | `https://x.com/MyAgent` |
300
+ | `farcaster` | Farcaster profile | `https://farcaster.xyz/myagent` |
301
+ | `telegram` | Telegram bot | `https://t.me/myagentbot` |
302
+ | `github` | GitHub repository | `https://github.com/myagent` |
303
+ | `agentWallet` | On-chain wallet address | `eip155:8453:0x...` |
304
+
305
+ > Custom service names are allowed — the `services` array is extensible. Use EIP-defined names when they fit.
306
+
307
+ > **OASF service object:** The OASF service may include optional `skills` and `domains` arrays directly inside the service object. These follow [OASF categories](https://github.com/agntcy/oasf).
308
+
309
+ ### SDK Method → JSON Field Mapping
310
+
311
+ | SDK Method | JSON Field | Notes |
312
+ |------------|------------|-------|
313
+ | `sdk.createAgent(name, desc, image)` | `name`, `description`, `image` | — |
314
+ | `agent.setMCP(url)` | `services[{name:"MCP"}]` | — |
315
+ | `agent.setA2A(url)` | `services[{name:"A2A"}]` | — |
316
+ | `agent.setENS(name)` | `services[{name:"ENS"}]` | Also stored on-chain |
317
+ | `agent.addSkill(skill, verified)` | `services[{name:"OASF"}].skills` | One per call |
318
+ | `agent.addDomain(domain, verified)` | `services[{name:"OASF"}].domains` | One per call |
319
+ | `agent.setTrust(rep, crypto, tee)` | `supportedTrust` | Booleans → string array |
320
+ | `agent.setMetadata({...})` | Custom fields | Merged into root |
321
+ | `agent.setActive(true)` | `active` | — |
322
+ | `agent.registerHTTP(url)` | Generates & publishes JSON | Sets `type` and `registrations` automatically |
323
+
324
+ ---
325
+
150
326
  ## Register Agent
151
327
 
152
328
  ### Step 1: Pre-Fill from Existing Files
@@ -155,7 +331,7 @@ Before asking the owner for details, scan the project for files that may already
155
331
 
156
332
  | File | What to extract |
157
333
  |---|---|
158
- | `IDENTITY.md` | Name, description, image, endpoints (MCP, A2A), ENS, OASF skills/domains, trust models, metadata |
334
+ | `IDENTITY.md` | Name, description, image, services (MCP, A2A), ENS, OASF skills/domains, trust models, metadata |
159
335
  | `TOOLS.md` | Tool names and descriptions — suggest as MCP capabilities or OASF skills |
160
336
  | `README.md` | Project name and description — suggest as agent name and description |
161
337
  | `package.json` | `name`, `description`, `homepage` — suggest as agent name, description, HTTP URL |
@@ -178,13 +354,16 @@ Present pre-filled values (if any) and ask the owner to confirm or edit:
178
354
 
179
355
  **Optional:**
180
356
  - **Image URL** — a publicly accessible URL for your agent's avatar
181
- - **MCP endpoint** — if your agent exposes MCP tools (e.g. `https://mcp.example.com/`)
182
- - **A2A endpoint** — if your agent exposes A2A skills (e.g. `https://a2a.example.com/agent-card.json`)
357
+ - **MCP service** — if your agent exposes MCP tools (e.g. `https://mcp.example.com/`)
358
+ - **A2A service** — if your agent exposes A2A skills (e.g. `https://a2a.example.com/.well-known/agent-card.json`)
183
359
  - **ENS name** — a human-readable name (e.g. `myagent.eth`)
360
+ - **DID** — a W3C Decentralized Identifier (e.g. `did:web:example.com`)
184
361
  - **HTTP URL** — where to host your registration file (e.g. `https://myserver.com/agents/my-agent.json`)
185
362
  - **OASF skills** — standardized skill categories (e.g. `data_engineering/data_transformation_pipeline`)
186
363
  - **OASF domains** — standardized domain categories (e.g. `finance_and_business/investment_services`)
187
364
  - **Trust models** — which trust models to advertise: `reputation`, `crypto-economic`, `tee-attestation`
365
+ - **x402 Support** — does your agent accept x402 payments? (true/false)
366
+ - **Additional services** — website URL, email, etc. (see [Service Types](#service-types-eip-8004-defined))
188
367
  - **Metadata** — key-value pairs for additional info (e.g. `{ version: '1.0.0', category: 'ai-assistant' }`)
189
368
 
190
369
  If pre-filled values were found, present them like this:
@@ -208,18 +387,25 @@ const agent = sdk.createAgent(
208
387
  'https://example.com/agent-image.png' // image URL (optional)
209
388
  );
210
389
 
211
- // Configure endpoints (optional — each auto-extracts capabilities)
212
- await agent.setMCP('https://mcp.example.com/'); // extracts tools, prompts, resources
213
- await agent.setA2A('https://a2a.example.com/agent-card.json'); // extracts skills
214
- agent.setENS('myagent.eth');
390
+ // Configure services (optional)
391
+ await agent.setMCP('https://mcp.example.com/'); // services[{name:"MCP"}]
392
+ await agent.setA2A('https://a2a.example.com/agent-card.json'); // services[{name:"A2A"}]
393
+ agent.setENS('myagent.eth'); // → services[{name:"ENS"}]
215
394
 
216
- // Add OASF skills and domains (optional)
395
+ // Add OASF skills and domains (optional) — stored inside OASF service object
217
396
  agent.addSkill('data_engineering/data_transformation_pipeline', true);
218
397
  agent.addDomain('finance_and_business/investment_services', true);
219
398
 
220
399
  // Set trust models (optional): reputation, cryptoEconomic, teeAttestation
221
400
  agent.setTrust(true, false, false);
222
401
 
402
+ // Set x402 payment support (optional)
403
+ agent.setMetadata({ x402Support: true });
404
+
405
+ // Add additional services (optional)
406
+ agent.addEndpoint('web', 'https://example.com');
407
+ agent.addEndpoint('email', 'dev@example.com');
408
+
223
409
  // Add metadata (optional)
224
410
  agent.setMetadata({ version: '1.0.0', category: 'ai-assistant' });
225
411
 
@@ -227,6 +413,8 @@ agent.setMetadata({ version: '1.0.0', category: 'ai-assistant' });
227
413
  agent.setActive(true);
228
414
  ```
229
415
 
416
+ > **Note:** If `addEndpoint()` doesn't exist in agent0-sdk, additional services are set via `setMetadata()`. Adjust code to match actual SDK API. Service names must follow EIP-8004 casing: `MCP`, `A2A`, `OASF`, `ENS`, `DID` (uppercase), `web`, `email` (lowercase).
417
+
230
418
  ### Step 4: Preview Draft
231
419
 
232
420
  Before signing, present a summary to the owner for approval:
@@ -236,12 +424,11 @@ Before signing, present a summary to the owner for approval:
236
424
  > - **Name:** My AI Agent
237
425
  > - **Description:** An intelligent assistant for tasks.
238
426
  > - **Image:** https://example.com/agent-image.png
239
- > - **MCP Endpoint:** https://mcp.example.com/
240
- > - **A2A Endpoint:** https://a2a.example.com/agent-card.json
241
- > - **ENS:** myagent.eth
427
+ > - **Services:** MCP, A2A, OASF, ENS, web, email
242
428
  > - **OASF Skills:** data_engineering/data_transformation_pipeline
243
429
  > - **OASF Domains:** finance_and_business/investment_services
244
430
  > - **Trust Models:** reputation
431
+ > - **x402 Support:** false
245
432
  > - **Registration URI:** https://myserver.com/agents/my-agent.json
246
433
  >
247
434
  > This will mint an ERC-721 NFT on Base and cost gas. Shall I proceed?
@@ -251,7 +438,7 @@ Before signing, present a summary to the owner for approval:
251
438
  ### Step 5: Register On-Chain via HTTP
252
439
 
253
440
  The `registerHTTP()` call does three things:
254
- 1. Serializes your agent's registration file (name, description, endpoints, skills, metadata) as JSON
441
+ 1. Serializes your agent's registration file (name, description, services, trust, metadata) as JSON
255
442
  2. Mints an ERC-721 NFT on-chain representing your agent identity
256
443
  3. Records the HTTP URL on-chain as the agent's URI, pointing to the hosted registration file
257
444
 
@@ -264,6 +451,26 @@ const { result: registration } = await txHandle.waitConfirmed();
264
451
 
265
452
  console.log(`Agent ID: ${registration.agentId}`); // e.g. "8453:42"
266
453
  console.log(`Agent URI: ${registration.agentURI}`); // the HTTP URL
454
+
455
+ // The SDK generates a registration file like this:
456
+ // {
457
+ // "type": "https://eips.ethereum.org/EIPS/eip-8004#registration-v1",
458
+ // "name": "My AI Agent",
459
+ // "description": "An intelligent assistant for tasks.",
460
+ // "image": "https://example.com/agent-image.png",
461
+ // "services": [
462
+ // { "name": "MCP", "version": "2025-06-18", "endpoint": "https://mcp.example.com/" },
463
+ // { "name": "A2A", "version": "0.3.0", "endpoint": "https://a2a.example.com/agent-card.json" },
464
+ // { "name": "OASF", "version": "0.8", "endpoint": "...", "skills": [...], "domains": [...] },
465
+ // { "name": "ENS", "version": "v1", "endpoint": "myagent.eth" },
466
+ // { "name": "web", "endpoint": "https://example.com" },
467
+ // { "name": "email", "endpoint": "dev@example.com" }
468
+ // ],
469
+ // "x402Support": false,
470
+ // "active": true,
471
+ // "registrations": [{ "agentId": 42, "agentRegistry": "eip155:8453:0x8004..." }],
472
+ // "supportedTrust": ["reputation"]
473
+ // }
267
474
  ```
268
475
 
269
476
  ### Step 6: Save Agent ID
@@ -345,7 +552,7 @@ agent.updateInfo(
345
552
  'New description with enhanced capabilities.'
346
553
  );
347
554
 
348
- // Update or add endpoints
555
+ // Update or add services
349
556
  await agent.setMCP('https://mcp-v2.example.com/');
350
557
  await agent.setA2A('https://a2a-v2.example.com/agent-card.json');
351
558
 
@@ -604,6 +811,43 @@ console.log(`New owner: ${verifiedOwner}`);
604
811
 
605
812
  ---
606
813
 
814
+ ## IDENTITY.md Schema
815
+
816
+ The IDENTITY.md file is a human-readable agent profile card saved locally after registration. Use this exact format:
817
+
818
+ > This file is a local reference card. The actual registration file (JSON) is generated by the SDK — see [Registration File Schema](#registration-file-schema).
819
+
820
+ ```markdown
821
+ # Agent Identity
822
+
823
+ | Field | Value |
824
+ |---|---|
825
+ | **Agent ID** | {chainId}:{tokenId} |
826
+ | **Name** | {agent name} |
827
+ | **Description** | {agent description} |
828
+ | **Chain** | Base ({chainId}) |
829
+ | **Registration URI** | {HTTP URL} |
830
+ | **Services** | {comma-separated service names or "—"} |
831
+ | **MCP** | {MCP URL or "—"} |
832
+ | **A2A** | {A2A URL or "—"} |
833
+ | **ENS** | {ENS name or "—"} |
834
+ | **Image** | {image URL or "—"} |
835
+ | **x402 Support** | {true/false} |
836
+ | **Website** | {URL or "—"} |
837
+ | **Active** | {true/false} |
838
+ | **Registered** | {YYYY-MM-DD} |
839
+
840
+ > On-chain identity minted as ERC-721 on Base mainnet.
841
+ ```
842
+
843
+ **Rules:**
844
+ - Use "—" for optional fields that are not set (never leave blank)
845
+ - Date format is always `YYYY-MM-DD`
846
+ - Agent ID format is always `{chainId}:{tokenId}` (e.g. `8453:42`)
847
+ - This file is for local reference only — it is NOT published to npm or uploaded on-chain
848
+
849
+ ---
850
+
607
851
  ## Error Handling
608
852
 
609
853
  | Error | Cause | Recovery |
@@ -616,6 +860,7 @@ console.log(`New owner: ${verifiedOwner}`);
616
860
  | `network error` / `timeout` | RPC endpoint is down or unreachable | Check `BASE_RPC_URL` in `.env`, try an alternative Base RPC |
617
861
  | `IPFS` or `Pinata` errors | Should not occur — this skill uses HTTP only | Verify you are using `agent.registerHTTP()`, not `agent.registerIPFS()` |
618
862
  | `setMCP` / `setA2A` soft failure | Endpoint unreachable during capability extraction | Non-blocking — the endpoint is still set, but tools/skills won't be auto-extracted. Verify the endpoint URL is correct and accessible. |
863
+ | `receipt.gasUsed` undefined | SDK or RPC may return receipt fields as optional | Always use optional chaining (`receipt?.gasUsed`) when accessing receipt properties — do not assume all fields are present |
619
864
 
620
865
  **General rules:**
621
866
  - Never silently swallow errors. Log them and inform the owner.
@@ -641,6 +886,24 @@ console.log(`New owner: ${verifiedOwner}`);
641
886
 
642
887
  ---
643
888
 
889
+ ## References
890
+
891
+ | Topic | Resource |
892
+ |-------|----------|
893
+ | **ERC-8004 Standard** | [EIP-8004](https://eips.ethereum.org/EIPS/eip-8004) |
894
+ | **agent0-sdk Documentation** | [agent0-ts GitHub](https://github.com/agent0lab/agent0-ts) |
895
+ | **Agent0 Platform** | [agent0.xyz](https://agent0.xyz) |
896
+ | **IPFS Registration** | See `agent.registerIPFS()` in agent0-sdk docs — not covered by this skill |
897
+ | **Registration File Format** | Defined by ERC-8004 spec — see EIP link above |
898
+ | **Subgraph / Indexing** | Agent0 subgraph indexes both on-chain and IPFS data — see agent0-sdk docs |
899
+ | **Base Network** | [Base Docs](https://docs.base.org) |
900
+ | **OpenClaw Skills** | [openclaw.xyz](https://openclaw.xyz) |
901
+
902
+ > This skill focuses on on-chain operations. For off-chain registration file hosting,
903
+ > IPFS pinning, or subgraph queries, refer to the agent0-sdk documentation directly.
904
+
905
+ ---
906
+
644
907
  ## Example Interaction
645
908
 
646
909
  Below is a complete conversation showing first boot through registration, feedback, and transfer.
@@ -769,7 +1032,7 @@ const { result: registration } = await txHandle.waitConfirmed();
769
1032
  >
770
1033
  > What would you like to do?
771
1034
  >
772
- > 1. **Update Agent** — modify name, description, endpoints, skills, or metadata
1035
+ > 1. **Update Agent** — modify name, description, services, skills, or metadata
773
1036
  > 2. **Give Feedback** — rate another agent on-chain
774
1037
  > 3. **Search Feedback** — check reputation for any agent
775
1038
  > 4. **Transfer Ownership** — move your agent identity to a new wallet
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basecred/openclaw-8004",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "OpenClaw skill for registering and managing AI agent identities on-chain via ERC-8004",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -27,5 +27,8 @@
27
27
  "dependencies": {
28
28
  "agent0-sdk": "^1.5.3",
29
29
  "dotenv": "^16.4.7"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
30
33
  }
31
34
  }