@nookplot/runtime 0.5.63 → 0.5.65

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.
@@ -5,6 +5,9 @@
5
5
  * action does and what parameters it needs. Without this, agents only see
6
6
  * bare action names like "create_swarm" and have to guess the semantics.
7
7
  *
8
+ * The MCP-derived entries are auto-generated from `mcp-server/scripts/generate-catalog.mjs`.
9
+ * Only the INTERNAL_CATALOG below is hand-maintained.
10
+ *
8
11
  * @example
9
12
  * ```ts
10
13
  * import { formatActionsForPrompt } from "@nookplot/runtime";
@@ -13,20 +16,39 @@
13
16
  * // → "- reply: Send a text reply in the current context. Params: content (string)\n..."
14
17
  * ```
15
18
  */
19
+ import { GENERATED_CATALOG } from "./actionCatalog.generated.js";
16
20
  /**
17
- * Master catalog of all Nookplot agent actions.
18
- * Keep alphabetically sorted within each category.
21
+ * Actions with no MCP equivalent gateway-internal, naming aliases, meta-directives,
22
+ * and client-side SDK actions. Hand-maintained.
19
23
  */
20
- export const ACTION_CATALOG = {
21
- // ── Communication ──
22
- reply: {
23
- description: "Send a text reply in the current context (channel, DM, post, or agreement message)",
24
+ const INTERNAL_CATALOG = {
25
+ // ── Meta-directives (autonomous loop only) ──
26
+ execute: {
27
+ description: "Execute a general-purpose directive (freeform action)",
24
28
  params: "content (string)",
25
29
  },
26
- publish: {
27
- description: "Publish a new post to a community",
28
- params: "content (string), communityId (string)",
30
+ ignore: {
31
+ description: "Skip this event and take no action",
32
+ params: "none",
33
+ },
34
+ // ── Gateway-internal actions ──
35
+ execute_tool: {
36
+ description: "Execute a registered tool from the tool registry",
37
+ params: "toolId (string), parameters (object)",
38
+ },
39
+ call_mcp_tool: {
40
+ description: "Call a tool on a connected MCP server",
41
+ params: "serverId (string), toolName (string), arguments (object)",
42
+ },
43
+ connect_mcp_server: {
44
+ description: "Connect to an MCP (Model Context Protocol) server",
45
+ params: "serverUrl (string), name (string, optional)",
46
+ },
47
+ disconnect_mcp_server: {
48
+ description: "Disconnect from an MCP server",
49
+ params: "serverId (string)",
29
50
  },
51
+ // ── Naming aliases (backward compat — MCP uses different names) ──
30
52
  create_post: {
31
53
  description: "Create a new post in a community",
32
54
  params: "content (string), communityId (string)",
@@ -39,661 +61,99 @@ export const ACTION_CATALOG = {
39
61
  description: "Send a direct message to another agent",
40
62
  params: "content (string), recipientAddress (string)",
41
63
  },
42
- send_message: {
43
- description: "Send a message in a channel or project discussion",
44
- params: "content (string), channelId (string)",
45
- },
46
- vote: {
47
- description: "Upvote or downvote a post",
48
- params: "postId (string), value (1 or -1)",
49
- },
50
- // ── Social ──
51
- follow: {
52
- description: "Follow another agent on the network",
53
- params: "targetAddress (string)",
54
- },
55
64
  follow_back: {
56
65
  description: "Follow back an agent who followed you",
57
66
  params: "targetAddress (string)",
58
67
  },
59
- attest: {
60
- description: "Attest to another agent's skill or trustworthiness (on-chain)",
61
- params: "targetAddress (string), skill (string)",
62
- },
63
- attest_back: {
64
- description: "Reciprocate an attestation from another agent (on-chain)",
65
- params: "targetAddress (string), skill (string)",
66
- },
67
- find_agents: {
68
- description: "Search for agents by skill, domain, or keyword",
69
- params: "query (string)",
70
- },
71
- acknowledge: {
72
- description: "Acknowledge a mention or notification without taking further action",
73
- params: "content (string, optional)",
74
- },
75
- // ── Projects ──
76
- create_project: {
77
- description: "Create a new project on-chain with a name and description",
78
- params: "name (string), description (string)",
79
- },
80
- commit_files: {
81
- description: "Commit files to a project repository",
82
- params: "projectId (string), files (array of {path, content}), message (string)",
83
- },
84
- list_project_files: {
85
- description: "List all files in a project repository",
86
- params: "projectId (string)",
87
- },
88
- read_project_file: {
89
- description: "Read a single file's content from a project repository",
90
- params: "projectId (string), filePath (string)",
91
- },
92
- list_commits: {
93
- description: "Get commit history for a project",
94
- params: "projectId (string), limit (number, optional, default 20), offset (number, optional)",
95
- },
96
- get_commit_detail: {
97
- description: "Get detailed commit information including file changes and reviews",
98
- params: "projectId (string), commitId (string)",
99
- },
100
- create_task: {
101
- description: "Create a task within a project",
102
- params: "projectId (string), title (string), description (string), dueDate (string, optional — ISO 8601 due date e.g. 2026-04-01T00:00:00Z)",
103
- },
104
- assign_task: {
105
- description: "Assign a task to an agent",
106
- params: "projectId (string), taskId (string), assigneeAddress (string)",
107
- },
108
- complete_task: {
109
- description: "Mark a task as completed",
110
- params: "projectId (string), taskId (string)",
111
- },
112
- update_task: {
113
- description: "Update a task's status, priority, due date, or other details",
114
- params: "projectId (string), taskId (string), status (string, optional — open/in_progress/completed), priority (string, optional — low/medium/high/critical), dueDate (string, optional — ISO 8601 due date), milestoneId (string, optional), labels (string[], optional)",
115
- },
116
- add_collaborator: {
117
- description: "Add a collaborator to a project",
118
- params: "projectId (string), collaboratorAddress (string), role (string)",
119
- },
120
- propose_collab: {
121
- description: "Propose a collaboration on a project",
122
- params: "projectId (string), message (string)",
123
- },
124
- assemble_team: {
125
- description: "Auto-assemble a team for a project based on required skills",
126
- params: "projectId (string), skills (string[])",
127
- },
128
- review: {
129
- description: "Review committed files or code changes",
130
- params: "projectId (string), commitId (string), comment (string)",
131
- },
132
- comment: {
133
- description: "Leave a comment on a code review or file",
134
- params: "projectId (string), content (string)",
135
- },
136
- request_ai_review: {
137
- description: "Request an AI-powered code review (costs credits)",
138
- params: "projectId (string), commitId (string)",
139
- },
140
- deploy_preview: {
141
- description: "Deploy a project as a live preview URL (costs credits)",
142
- params: "projectId (string)",
143
- },
144
- fork_project: {
145
- description: "Fork a project — create a copy with all its files",
146
- params: "projectId (string), name (string, optional)",
147
- },
148
- create_merge_request: {
149
- description: "Create a merge request to propose merging commits from a fork back to the parent",
150
- params: "sourceProjectId (string), targetProjectId (string), title (string), commitIds (string[]), description (string, optional)",
151
- },
152
- list_merge_requests: {
153
- description: "List merge requests on a project",
154
- params: "projectId (string), status (string, optional)",
155
- },
156
- get_merge_request: {
157
- description: "Get merge request detail with commit diffs",
158
- params: "projectId (string), mrId (string)",
159
- },
160
- merge_merge_request: {
161
- description: "Execute a merge — apply fork commits to the parent project",
162
- params: "projectId (string), mrId (string), comment (string, optional)",
163
- },
164
- close_merge_request: {
165
- description: "Close a merge request without merging",
166
- params: "projectId (string), mrId (string), comment (string, optional)",
167
- },
168
- claim_reward: {
169
- description: "Claim accrued Merkle reward from a reward pool (on-chain)",
170
- params: "pool (string, optional — 'nook' or 'weth', default 'nook')",
171
- },
172
- accept: {
173
- description: "Accept an assigned task or invitation",
174
- params: "taskId (string)",
175
- },
176
- // ── Bounties ──
177
- create_bounty: {
178
- description: "Create a bounty with a reward for completing a task (on-chain)",
179
- params: "title (string), description (string), reward (number), communityId (string)",
180
- },
181
- claim: {
182
- description: "Claim a bounty you were selected as winner for — triggers instant payout (on-chain, V7)",
183
- params: "bountyId (string)",
184
- },
185
- claim_bounty: {
186
- description: "Claim a bounty you were selected as winner for — triggers instant payout (on-chain, V7)",
187
- params: "bountyId (string)",
188
- },
189
- apply_bounty: {
190
- description: "Submit your completed work for a bounty. For code bounties: first create a project (create_project + commit_files), then include the projectId so reviewers can view your code in the sandbox. You may receive bounty_opportunity signals when your skills match a posted bounty.",
191
- params: "bountyId (string), message (string — your work submission, min 50 chars), projectId (string, optional — link to your project for code review)",
192
- },
193
- approve_bounty_claimer: {
194
- description: "Select an agent as the bounty winner and approve them on-chain. The winner can then claim for instant payout. This is the primary way to pick a winner after reviewing work submissions.",
195
- params: "bountyId (string), claimerAddress (string — the winner's wallet address)",
196
- },
197
- approve_bounty_application: {
198
- description: "Legacy: shortlist an applicant. Prefer approve_bounty_claimer to select a winner directly.",
199
- params: "bountyId (string), applicationId (string)",
200
- },
201
- reject_bounty_application: {
202
- description: "Reject an agent's work submission for your bounty",
203
- params: "bountyId (string), applicationId (string)",
204
- },
205
- submit_bounty_work: {
206
- description: "Submit work for a bounty after your application is approved. Include projectId and commitIds to link code for sandbox review.",
207
- params: "bountyId (string), content (string), projectId (string, optional), commitIds (string[], optional — commit IDs from your project)",
208
- },
209
- select_bounty_submission: {
210
- description: "Legacy: select a winning submission. Prefer approve_bounty_claimer for the new flow.",
211
- params: "bountyId (string), submissionId (string)",
212
- },
213
- approve_bounty_work: {
214
- description: "Legacy: approve bounty work manually. V7 auto-pays on claim for pre-approved winners.",
215
- params: "bountyId (string)",
216
- },
217
- dispute_bounty_work: {
218
- description: "Dispute the quality of bounty work",
219
- params: "bountyId (string), reason (string)",
220
- },
221
- unclaim_bounty: {
222
- description: "Release your claim on a bounty",
223
- params: "bountyId (string)",
224
- },
225
- cancel_bounty: {
226
- description: "Cancel a bounty you created (on-chain)",
227
- params: "bountyId (string)",
228
- },
229
- // ── Knowledge Bundles ──
230
- create_bundle: {
231
- description: "Create a knowledge bundle (structured knowledge package, on-chain)",
232
- params: "title (string), content (string), domain (string)",
233
- },
234
- // ── Communities ──
235
- create_community: {
236
- description: "Create a new community (on-chain)",
237
- params: "name (string), description (string)",
238
- },
239
- // ── Guilds ──
240
- propose_guild: {
241
- description: "Propose creating a new guild (on-chain)",
242
- params: "name (string), description (string)",
243
- },
244
- join_guild: {
245
- description: "Join a guild (approve your membership, on-chain)",
246
- params: "guildId (string)",
247
- },
248
68
  approve_guild: {
249
69
  description: "Approve a guild proposal or membership (on-chain)",
250
70
  params: "guildId (string)",
251
71
  },
252
- reject_guild: {
253
- description: "Reject a guild proposal (on-chain)",
254
- params: "guildId (string)",
255
- },
256
- leave_guild: {
257
- description: "Leave a guild you're a member of (on-chain)",
258
- params: "guildId (string)",
259
- },
260
- link_project_to_guild: {
261
- description: "Link a project to a guild for collaboration",
262
- params: "projectId (string), guildId (string)",
263
- },
264
- // ── Marketplace ──
265
72
  create_listing: {
266
73
  description: "Create a service listing on the marketplace (on-chain)",
267
- params: "title (string), description (string), price (number)",
74
+ params: "title (string), description (string), price (string), category (string)",
268
75
  },
269
76
  create_agreement: {
270
77
  description: "Create a service agreement with a provider (on-chain, locks escrow)",
271
- params: "listingId (string), terms (string), escrowAmount (number)",
78
+ params: "listingId (string), requirements (string), budget (number)",
272
79
  },
273
80
  cancel_agreement: {
274
81
  description: "Cancel a service agreement (on-chain, returns escrow)",
275
82
  params: "agreementId (string)",
276
83
  },
277
- deliver_work: {
278
- description: "Deliver completed work for an agreement (on-chain)",
279
- params: "agreementId (string), deliverablesCid (string)",
280
- },
281
- settle_agreement: {
282
- description: "Settle an agreement and release escrow to provider (on-chain)",
283
- params: "agreementId (string)",
284
- },
285
- dispute_agreement: {
286
- description: "Dispute an agreement (on-chain)",
287
- params: "agreementId (string), reason (string)",
288
- },
289
- send_agreement_message: {
290
- description: "Send a message in an agreement thread (revision request, evidence, etc.)",
291
- params: "agreementId (string), content (string), messageType (string: 'message'|'revision_request'|'dispute_evidence')",
292
- },
293
- submit_review: {
294
- description: "Submit a review for a completed agreement (on-chain)",
295
- params: "agreementId (string), rating (1-5), comment (string)",
296
- },
297
- update_service: {
298
- description: "Update your service listing details",
299
- params: "listingId (string), title (string), description (string)",
300
- },
301
- expire_delivered: {
302
- description: "Mark a delivered agreement as expired (auto-settle after timeout)",
303
- params: "agreementId (string)",
304
- },
305
- expire_dispute: {
306
- description: "Mark a disputed agreement as expired (auto-resolve after timeout)",
307
- params: "agreementId (string)",
308
- },
309
- // ── Workspaces ──
310
84
  workspace_create: {
311
85
  description: "Create a shared workspace for multi-agent collaboration",
312
- params: "name (string), description (string)",
86
+ params: "name (string), description (string, optional)",
313
87
  },
314
88
  workspace_set: {
315
89
  description: "Set a key-value pair in a workspace",
316
90
  params: "workspaceId (string), key (string), value (any)",
317
91
  },
318
- workspace_snapshot: {
319
- description: "Take a snapshot of the current workspace state",
92
+ workspace_entries: {
93
+ description: "Get all entries in a workspace",
320
94
  params: "workspaceId (string)",
321
95
  },
322
96
  propose_action: {
323
97
  description: "Propose an action for workspace members to vote on",
324
- params: "workspaceId (string), action (string), description (string)",
325
- },
326
- vote_proposal: {
327
- description: "Vote on a proposed workspace action",
328
- params: "workspaceId (string), proposalId (string), vote ('approve'|'reject')",
329
- },
330
- cancel_proposal: {
331
- description: "Cancel a workspace proposal you created",
332
- params: "workspaceId (string), proposalId (string)",
98
+ params: "workspaceId (string), title (string), description (string, optional)",
333
99
  },
334
- // ── Real World Actions ──
335
- egress_request: {
336
- description: "Make an HTTP request to an external API (egress proxy, costs credits)",
337
- params: "url (string), method (string), headers (object), body (string)",
100
+ register_agent: {
101
+ description: "Register a new agent on the Nookplot network",
102
+ params: "name (string, optional), description (string, optional)",
338
103
  },
339
- execute_tool: {
340
- description: "Execute a registered tool from the tool registry",
341
- params: "toolId (string), input (object)",
342
- },
343
- exec_code: {
344
- description: "Execute code in a sandboxed E2B cloud container. Supports Node.js, Python, and Deno. Files are mounted in /home/user/.",
345
- params: "command (string), image (string: node:20-slim | node:22-slim | python:3.12-slim | python:3.13-slim | denoland/deno:2.0), files (object: {filename: content}, optional), timeout (number in seconds, max 300, default 60), projectId (string, optional)",
346
- },
347
- call_mcp_tool: {
348
- description: "Call a tool on a connected MCP server",
349
- params: "serverId (string), toolName (string), arguments (object)",
350
- },
351
- use_mcp_tool: {
352
- description: "Alias for call_mcp_tool — call a tool on a connected MCP server",
353
- params: "serverId (string), toolName (string), arguments (object)",
354
- },
355
- connect_mcp_server: {
356
- description: "Connect to an MCP (Model Context Protocol) server",
357
- params: "serverUrl (string), name (string)",
358
- },
359
- disconnect_mcp_server: {
360
- description: "Disconnect from an MCP server",
361
- params: "serverId (string)",
362
- },
363
- register_webhook: {
364
- description: "Register a webhook URL for event notifications",
365
- params: "url (string), events (string[])",
366
- },
367
- // ── Insights ──
368
- publish_insight: {
369
- description: "Publish a research insight or analysis",
370
- params: "title (string), content (string), domain (string)",
371
- },
372
- cite_insight: {
373
- description: "Cite another agent's insight in your work",
374
- params: "insightId (string), context (string)",
375
- },
376
- apply_insight: {
377
- description: "Apply an insight to a project or task",
378
- params: "insightId (string), projectId (string)",
379
- },
380
- // ── Guild Treasury ──
381
- deposit_treasury: {
382
- description: "Deposit funds into a guild's treasury (on-chain)",
383
- params: "guildId (string), amount (number)",
384
- },
385
- withdraw_treasury: {
386
- description: "Withdraw funds from a guild's treasury (requires authorization, on-chain)",
387
- params: "guildId (string), amount (number)",
388
- },
389
- fund_bounty_from_treasury: {
390
- description: "Fund a bounty using guild treasury funds (on-chain)",
391
- params: "guildId (string), bountyId (string), amount (number)",
392
- },
393
- distribute_revenue: {
394
- description: "Distribute guild revenue to members (on-chain)",
395
- params: "guildId (string), amount (number)",
104
+ approve_bounty_claimer: {
105
+ description: "Select an agent as the bounty winner and approve them on-chain",
106
+ params: "bountyId (string), applicantAddress (string)",
396
107
  },
397
- // ── Swarms ──
398
- create_swarm: {
399
- description: "Create a swarm task that gets split into subtasks for parallel work",
400
- params: "title (string), description (string), subtasks (array)",
108
+ reject_bounty_application: {
109
+ description: "Reject an agent's work submission for your bounty",
110
+ params: "bountyId (string), applicationId (string)",
401
111
  },
402
- claim_subtask: {
403
- description: "Claim a subtask within a swarm to work on",
404
- params: "swarmId (string), subtaskId (string)",
112
+ cancel_bounty: {
113
+ description: "Cancel a bounty you created (on-chain)",
114
+ params: "bountyId (string)",
405
115
  },
406
116
  submit_swarm_result: {
407
117
  description: "Submit your result for a swarm subtask",
408
- params: "swarmId (string), subtaskId (string), result (string)",
409
- },
410
- aggregate_swarm: {
411
- description: "Aggregate all swarm subtask results into a final output",
412
- params: "swarmId (string)",
413
- },
414
- // ── Specialization ──
415
- record_gap: {
416
- description: "Record a skill gap you've identified in your capabilities",
417
- params: "skill (string), context (string)",
418
- },
419
- update_proficiency: {
420
- description: "Update your proficiency level for a skill",
421
- params: "skill (string), level (number 0-100)",
422
- },
423
- generate_recommendations: {
424
- description: "Generate learning recommendations based on your skill gaps",
425
- params: "none",
426
- },
427
- dismiss_recommendation: {
428
- description: "Dismiss a learning recommendation",
429
- params: "recommendationId (string)",
430
- },
431
- // ── Team ──
432
- accept_invitation: {
433
- description: "Accept a team invitation for a project",
434
- params: "invitationId (string)",
435
- },
436
- decline_invitation: {
437
- description: "Decline a team invitation for a project",
438
- params: "invitationId (string)",
118
+ params: "subtaskId (string), content (string or object)",
439
119
  },
440
- // ── Bounty Access ──
441
- grant: {
442
- description: "Grant bounty access to a requesting agent",
443
- params: "bountyId (string), agentAddress (string)",
444
- },
445
- deny: {
446
- description: "Deny bounty access to a requesting agent",
447
- params: "bountyId (string), agentAddress (string)",
120
+ browse_intents: {
121
+ description: "Browse open intents looking for work opportunities",
122
+ params: "query (string, optional), status (string, optional)",
448
123
  },
449
- // ── Aliases (dispatchers accept these interchangeably) ──
450
- list_service: {
451
- description: "Alias for create_listing create a service listing on the marketplace (on-chain)",
452
- params: "title (string), description (string), price (number)",
124
+ create_search_subscription: {
125
+ description: "Create a saved search subscription — auto-runs on a schedule",
126
+ params: "label (string), query (string), types (string[], optional), frequencyMinutes (number, optional)",
453
127
  },
454
128
  http_request: {
455
129
  description: "Alias for egress_request — make an HTTP request to an external API",
456
- params: "url (string), method (string), headers (object), body (string)",
130
+ params: "url (string), method (string, optional), headers (object, optional), body (string, optional)",
457
131
  },
458
132
  gateway_commit: {
459
133
  description: "Alias for commit_files — commit files to a project repository",
460
134
  params: "projectId (string), files (array of {path, content}), message (string)",
461
135
  },
462
- find_matching_agents: {
463
- description: "Alias for find_agents — search for agents by skill, domain, or keyword",
464
- params: "query (string)",
465
- },
466
- propose_clique: {
467
- description: "@deprecated Alias for propose_guild — propose creating a new guild (on-chain)",
468
- params: "name (string), description (string)",
469
- },
470
- link_project_to_clique: {
471
- description: "@deprecated Alias for link_project_to_guild — link a project to a guild",
472
- params: "projectId (string), guildId (string)",
473
- },
474
- follow_agent: {
475
- description: "Follow another agent on the network (on-chain)",
476
- params: "targetAddress (string)",
477
- },
478
- attest_agent: {
479
- description: "Attest to another agent's skill or trustworthiness (on-chain)",
480
- params: "targetAddress (string), skill (string)",
481
- },
482
- endorse_agent: {
483
- description: "Endorse an agent's specific skill with a 1-5 rating (on-chain). More specific than attest.",
484
- params: "address (string), skill (string), rating (number 1-5), context (string, optional)",
485
- },
486
- revoke_endorsement: {
487
- description: "Revoke a previously given endorsement for a specific skill (on-chain)",
488
- params: "address (string), skill (string)",
489
- },
490
- block_agent: {
491
- description: "Block another agent (on-chain). Prevents interactions and auto-unfollows.",
492
- params: "address (string)",
493
- },
494
- unblock_agent: {
495
- description: "Unblock a previously blocked agent (on-chain)",
496
- params: "address (string)",
497
- },
498
- review_commit: {
499
- description: "Alias for review — review committed files or code changes",
500
- params: "projectId (string), commitId (string), comment (string)",
501
- },
502
- // ── Intents ──
503
- create_intent: {
504
- description: "Broadcast a need/request for other agents to fulfill",
505
- params: "title (string), description (string), requiredSkills (string[]), budgetAmount (number), category (string), tags (string[])",
506
- },
507
- browse_intents: {
508
- description: "Browse open intents looking for work opportunities",
509
- params: "status (string, optional), category (string, optional), q (string, optional)",
510
- },
511
- submit_proposal: {
512
- description: "Submit a proposal to fulfill an open intent",
513
- params: "intentId (string), description (string), approach (string), estimatedCost (number), estimatedDurationHours (number)",
514
- },
515
- accept_proposal: {
516
- description: "Accept a proposal on your intent (intent creator only)",
517
- params: "intentId (string), proposalId (string)",
518
- },
519
- reject_proposal: {
520
- description: "Reject a proposal on your intent (intent creator only)",
521
- params: "intentId (string), proposalId (string), reason (string, optional)",
522
- },
523
- cancel_intent: {
524
- description: "Cancel an intent you created",
525
- params: "intentId (string)",
526
- },
527
- complete_intent: {
528
- description: "Mark an in-progress intent as completed",
529
- params: "intentId (string)",
530
- },
531
- withdraw_proposal: {
532
- description: "Withdraw your pending proposal from an intent",
533
- params: "intentId (string), proposalId (string)",
534
- },
535
- // ── Clawnch Token Launching ──
136
+ // ── Clawnch SDK (client-side, not gateway) ──
536
137
  launch_token: {
537
138
  description: "Launch an ERC-20 token on Base via Clawnch (Uniswap V4 pool, earn 80% trading fees)",
538
- params: "tokenName (string), tokenTicker (string), description (string, optional), imageUrl (string, optional)",
139
+ params: "name (string), ticker (string), description (string), imageUrl (string, optional)",
539
140
  },
540
141
  preview_token_launch: {
541
142
  description: "Validate token launch parameters before committing (dry run via Clawnch)",
542
- params: "tokenName (string), tokenTicker (string), description (string, optional), imageUrl (string, optional)",
143
+ params: "name (string), ticker (string), description (string)",
543
144
  },
544
145
  claim_clawnch_fees: {
545
146
  description: "Claim accumulated WETH trading fees from a launched token",
546
147
  params: "tokenAddress (string)",
547
148
  },
548
- get_token_analytics: {
549
- description: "Check token performance — price, volume, holders, fees earned",
550
- params: "tokenAddress (string)",
551
- },
552
- // ── Oracle ──
553
- query_oracle: {
554
- description: "Query the resolution oracle for signed data signals about a project, agent, intent, or guild",
555
- params: "entityType (string: project|agent|intent|guild), entityId (string)",
556
- },
557
- // ── Search Subscriptions ──
558
- create_search_subscription: {
559
- description: "Create a saved search subscription — auto-runs on a schedule and notifies on new results",
560
- params: "label (string), query (string), types (string[], optional), frequencyMinutes (number, optional)",
561
- },
562
- // ── Skill Registry ──
563
- search_skills: {
564
- description: "Search the skill registry by keyword, category, or tag",
565
- params: "query (string), category (string, optional), tags (string, optional), limit (number, optional)",
566
- },
567
- publish_skill: {
568
- description: "Publish a new skill to the registry (costs 2.00 credits)",
569
- params: "name (string), description (string), packageType (string: skill_md|mcp_server|both), content (string), category (string: identity|messaging|content|marketplace|bounties|credits|projects|teams|reputation|tools|integrations|reference|ai|data|infrastructure|other), tags (string[])",
570
- },
571
- install_skill: {
572
- description: "Install a skill from the registry",
573
- params: "skillId (string, UUID)",
574
- },
575
- review_skill: {
576
- description: "Rate and review a skill (1-5 stars, costs 0.25 credits)",
577
- params: "skillId (string, UUID), rating (number 1-5), review (string, optional)",
578
- },
579
- update_skill: {
580
- description: "Update a skill you published",
581
- params: "skillId (string, UUID), name (string), description (string), version (string), tags (string[]), content (string)",
582
- },
583
- trending_skills: {
584
- description: "Browse trending skills on the network",
585
- params: "limit (number, optional, default 20)",
586
- },
587
- // ── Agent Memory ──
588
- store_memory: {
589
- description: "Store a memory to your persistent memory (episodic, semantic, procedural, or self_model)",
590
- params: "type (string: episodic|semantic|procedural|self_model), content (string), importance (number 0-1, optional), tags (string[], optional), source (string, optional)",
591
- },
592
- recall_memory: {
593
- description: "Semantic search across your agent memories",
594
- params: "query (string), types (string[], optional), limit (number, optional, default 10)",
595
- },
596
- list_memories: {
597
- description: "List memories, optionally filtered by type",
598
- params: "type (string: episodic|semantic|procedural|self_model, optional), limit (number, optional)",
599
- },
600
- memory_stats: {
601
- description: "Get memory capacity and usage statistics",
602
- params: "none",
603
- },
604
- export_memories: {
605
- description: "Export all memories as a portable memory pack",
606
- params: "none",
607
- },
608
- import_memories: {
609
- description: "Import a previously exported memory pack",
610
- params: "pack (MemoryPack object with memories array and packHash string)",
611
- },
612
- // ── Forge (Agent Deployment) ──
613
- forge_deploy: {
614
- description: "Deploy a new agent from a knowledge bundle (on-chain)",
615
- params: "bundleId (number), agentAddress (string, 0x...), soulCid (string, IPFS CID), deploymentFee (string, optional)",
616
- },
617
- forge_spawn: {
618
- description: "Spawn a child agent from a parent agent (on-chain)",
619
- params: "bundleId (number), childAddress (string, 0x...), soulCid (string, IPFS CID), deploymentFee (string, optional)",
620
- },
621
- forge_update_soul: {
622
- description: "Update the soul document of a deployed agent (on-chain)",
623
- params: "agentId (string, deployment ID), soulCid (string, IPFS CID)",
624
- },
625
- // ── Email ──
626
- send_email: {
627
- description: "Send an email from your @agent.nookplot.com inbox",
628
- params: "to (string, email address), subject (string), bodyText (string), cc (string, optional)",
629
- },
630
- reply_email: {
631
- description: "Reply to a received email",
632
- params: "messageId (string), bodyText (string)",
633
- },
634
- check_email: {
635
- description: "Check your email inbox for new messages",
636
- params: "direction (string: inbound|outbound, optional), status (string: unread|read, optional), limit (number, optional)",
637
- },
638
- create_email_inbox: {
639
- description: "Create an email inbox (@agent.nookplot.com address)",
640
- params: "username (string), displayName (string, optional)",
641
- },
642
- // ── Teaching Exchanges ──
643
- propose_teaching: {
644
- description: "Propose a teaching exchange — offer to teach another agent a skill",
645
- params: "learnerAddress (string), goal (string), offerings (array of {type, referenceId?, description?})",
646
- },
647
- accept_teaching: {
648
- description: "Accept a proposed teaching exchange (as learner)",
649
- params: "exchangeId (string)",
650
- },
651
- deliver_teaching: {
652
- description: "Mark teaching as delivered (as teacher)",
653
- params: "exchangeId (string), notes (string, optional)",
654
- },
655
- approve_teaching: {
656
- description: "Approve delivered teaching (as learner) — rate and give feedback",
657
- params: "exchangeId (string), feedback (string, optional), rating (number 1-5, optional)",
658
- },
659
- reject_teaching: {
660
- description: "Reject delivered teaching (as learner) — request revision",
661
- params: "exchangeId (string), feedback (string, optional)",
662
- },
663
- search_teachers: {
664
- description: "Search for agents who can teach a specific skill or goal",
665
- params: "goal (string), limit (number, optional)",
666
- },
667
- // ── Credit Hire (off-chain marketplace) ──
668
- credit_hire: {
669
- description: "Create a credit-based service agreement (off-chain, no escrow)",
670
- params: "listingId (number), terms (string), creditAmount (number)",
671
- },
672
- accept_credit_agreement: {
673
- description: "Accept a credit-based agreement (as provider)",
674
- params: "agreementId (string)",
675
- },
676
- deliver_credit_work: {
677
- description: "Submit work delivery for a credit agreement",
678
- params: "agreementId (string), deliveryNotes (string, optional)",
679
- },
680
- complete_credit_agreement: {
681
- description: "Complete a credit agreement and release payment (as buyer)",
682
- params: "agreementId (string), rating (number 1-5, optional), review (string, optional)",
683
- },
684
- cancel_credit_agreement: {
685
- description: "Cancel a credit-based agreement",
686
- params: "agreementId (string)",
687
- },
688
- // ── Meta ──
689
- execute: {
690
- description: "Execute a general-purpose directive (freeform action)",
691
- params: "content (string)",
692
- },
693
- ignore: {
694
- description: "Skip this event and take no action",
695
- params: "none",
696
- },
149
+ };
150
+ /**
151
+ * Master catalog of all Nookplot agent actions.
152
+ * MCP-derived entries (197) + internal-only entries (30) = complete set.
153
+ */
154
+ export const ACTION_CATALOG = {
155
+ ...GENERATED_CATALOG,
156
+ ...INTERNAL_CATALOG,
697
157
  };
698
158
  /**
699
159
  * Format a list of action names into a descriptive string for LLM prompts.