@noelclaw/mcp 2.4.0 → 3.0.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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@noelclaw/mcp.svg)](https://www.npmjs.com/package/@noelclaw/mcp)
4
4
 
5
- 62 MCP tools for crypto, DeFi, and AI — runs as a skill in Claude, Cursor, Windsurf, or any MCP-compatible client.
5
+ 74 MCP tools for your AI — persistent memory, DeFi execution on Base, multi-agent research, automations, and on-chain actions.
6
6
 
7
7
  No API key required to start. Ask your AI in plain English.
8
8
 
@@ -14,11 +14,46 @@ npx -y @noelclaw/mcp
14
14
 
15
15
  ## Install
16
16
 
17
- ### Claude Code (CLI)
17
+ ### Terminal
18
+ ```bash
19
+ npx -y @noelclaw/mcp
20
+ ```
21
+
22
+ ### Claude Code
18
23
  ```bash
19
24
  claude mcp add noelclaw -- npx -y @noelclaw/mcp
20
25
  ```
21
26
 
27
+ ### Aeon
28
+
29
+ Open **Settings → MCP Servers** and add:
30
+
31
+ ```json
32
+ {
33
+ "mcpServers": {
34
+ "noelclaw": {
35
+ "command": "npx",
36
+ "args": ["-y", "@noelclaw/mcp"]
37
+ }
38
+ }
39
+ }
40
+ ```
41
+
42
+ ### Hermes
43
+
44
+ Open **Settings → MCP Servers** and add:
45
+
46
+ ```json
47
+ {
48
+ "mcpServers": {
49
+ "noelclaw": {
50
+ "command": "npx",
51
+ "args": ["-y", "@noelclaw/mcp"]
52
+ }
53
+ }
54
+ }
55
+ ```
56
+
22
57
  ### Claude Desktop
23
58
 
24
59
  Add to `%APPDATA%\Claude\claude_desktop_config.json` (Windows) or `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac):
@@ -34,7 +69,7 @@ Add to `%APPDATA%\Claude\claude_desktop_config.json` (Windows) or `~/Library/App
34
69
  }
35
70
  ```
36
71
 
37
- ### Cursor / Windsurf / Any MCP Client
72
+ ### Any Other MCP Client
38
73
 
39
74
  ```json
40
75
  {
@@ -53,7 +88,7 @@ Restart your client. Tools load automatically.
53
88
 
54
89
  ## What It Does
55
90
 
56
- Ask your AI anything about Base, DeFi, and crypto — it routes to the right tool automatically.
91
+ Ask your AI anything — it routes to the right tool automatically.
57
92
 
58
93
  ```
59
94
  what's the ETH gas price and latest block on Base?
@@ -62,18 +97,19 @@ what's the ETH gas price and latest block on Base?
62
97
  show me the best yield vaults on Base right now
63
98
  → Clearstar USDC Reactor: 7.57% APY ($2.6M TVL)
64
99
  → Moonwell Flagship USDC: 4.63% APY ($9.1M TVL)
65
- → ...10 vaults ranked by APY
66
100
 
67
- what are the lending rates on Moonwell?
68
- EURC: 16.57% supply / 20.46% borrow (91.5% util)
69
- → USDC: 5.43% supply / 6.73% borrow
101
+ remember my Aerodrome thesis for next time
102
+ saved to Vault · auto-loaded every session
103
+
104
+ set up weekly $100 ETH DCA every Monday
105
+ → ✓ automation created · runs weekly 09:00 UTC
106
+
107
+ swap 0.5 ETH to USDC on Base
108
+ → ✓ swapped → 1,842 USDC · tx confirmed in 2s
70
109
 
71
110
  swarm research topic: "ETH vs SOL which wins 2025"
72
111
  → Triggers multi-agent research, saves findings to your vault
73
112
 
74
- humanize this text: "Leveraging cutting-edge blockchain..."
75
- → Returns clean, natural prose — no AI tells
76
-
77
113
  generate a Solidity ERC-20 with burn and pause features
78
114
  → Returns production-ready OpenZeppelin contract
79
115
  ```
@@ -82,139 +118,204 @@ generate a Solidity ERC-20 with burn and pause features
82
118
 
83
119
  ## Tools
84
120
 
85
- ### Base Chain (4 tools)
121
+ Three pillars: **Remember** · **Act** · **Know**
122
+
123
+ ---
124
+
125
+ ### 🧠 REMEMBER — Persistent Memory
126
+
127
+ Your AI loads your context before you type a single word.
128
+
129
+ #### Vault — Structured Notes (15 tools)
86
130
 
87
- | Tool | Description |
131
+ > Save research, decisions, and notes. Every entry is versioned and auto-tagged.
132
+
133
+ | Name | Description |
134
+ |------|-------------|
135
+ | **Vault Save** `vault_save` | Save a note or research entry |
136
+ | **Vault Read** `vault_read` | Read an entry by key |
137
+ | **Vault List** `vault_list` | List recent entries |
138
+ | **Vault Search** `vault_search` | Full-text search across your vault |
139
+ | **Vault History** `vault_history` | Version history for an entry |
140
+ | **Vault Diff** `vault_diff` | Compare two versions of an entry |
141
+ | **Vault Export** `vault_export` | Export vault as JSON or markdown |
142
+ | **Store Credential** `vault_store_credential` | Securely store an API key or secret |
143
+ | **Get Credential** `vault_get_credential` | Retrieve a stored credential |
144
+ | **Vault Publish** `vault_publish` | Publish an entry as a public note |
145
+ | **Vault Explore** `vault_explore` | Browse by tag or category |
146
+ | **Vault Pin** `vault_pin` | Pin an important entry to the top |
147
+ | **Vault Delete** `vault_delete` | Delete an entry |
148
+ | **Vault Link** `vault_link` | Link two entries together |
149
+ | **Vault Tag** `vault_tag` | Add or update tags on an entry |
150
+
151
+ #### Memory — Semantic Search (7 tools)
152
+
153
+ > Find anything by meaning, not keywords. "What did I say about ETH yield?" just works.
154
+
155
+ | Name | Description |
88
156
  |------|-------------|
89
- | `base_chain_stats` | Live ETH price, gas price, latest block on Base mainnet |
90
- | `base_query_vaults` | Top Morpho yield vaults ranked by APY with TVL filter |
91
- | `base_list_markets` | Moonwell lending and borrowing rates with utilization |
92
- | `base_prepare_deposit` | Prepare a deposit transaction into a Morpho vault |
157
+ | **Memory Add** `memory_add` | Add text, notes, or auto-fetch a URL into semantic memory |
158
+ | **Memory Search** `memory_search` | Search by meaning natural language queries |
159
+ | **Memory Context** `memory_context` | Load entries relevant to the current session |
160
+ | **Memory Profile** `memory_profile` | Your full memory profile preferences, history, patterns |
161
+ | **Memory List** `memory_list` | List recent memory entries |
162
+ | **Memory Delete** `memory_delete` | Remove a memory entry |
163
+ | **Memory Insight** `memory_insight` | AI-generated insights from your memory patterns |
93
164
 
94
- ### Market & AI (5 tools)
165
+ #### OS Session Lifecycle (3 tools)
95
166
 
96
- | Tool | Description |
167
+ | Name | Description |
97
168
  |------|-------------|
98
- | `get_market_data` | Live prices for BTC, ETH, SOL, and other tokens |
99
- | `get_token_data` | Token infoprice, volume, market cap |
100
- | `ask_noel` | Crypto AI analystopinions, trade ideas, market outlook |
101
- | `get_insight` | On-chain signal data and market insights |
102
- | `swarm_research` | Multi-agent research on any topic — auto-saves to vault |
169
+ | **Boot** `noel_boot` | Start a session loads market data, memory, and automations in one command |
170
+ | **Status** `noel_status` | Full system dashboard memory, swarm health, active automations |
171
+ | **Shutdown** `noel_shutdown` | End a sessionsaves summary to vault, stops swarm cleanly |
172
+
173
+ ---
103
174
 
104
- ### DeFi Execution (5 tools)
175
+ ### ACT Execute & Automate
105
176
 
106
- > Transactions are signed client-sideno private key ever leaves your machine.
177
+ Tell it what to do. It runs on schedule, on-chain, or right now.
107
178
 
108
- | Tool | Description |
179
+ #### Automations (6 tools)
180
+
181
+ | Name | Description |
109
182
  |------|-------------|
110
- | `get_portfolio` | View wallet holdings and token balances |
111
- | `estimate_swap` | Get a swap quote via 0x before executing |
112
- | `swap_tokens` | Execute a token swap on Base via 0x |
113
- | `send_token` | Send ETH or ERC-20 tokens to any address |
114
- | `scan_wallet` | Analyze a wallet — holdings, activity, risk signals |
183
+ | **Create Automation** `create_automation` | Create a price alert, DCA schedule, or recurring task in plain English |
184
+ | **List Automations** `list_automations` | View all active automations |
185
+ | **Pause Automation** `pause_automation` | Pause or resume an automation |
186
+ | **Delete Automation** `delete_automation` | Delete an automation |
187
+ | **Automation Runs** `get_automation_runs` | Execution history |
188
+ | **Run Now** `run_automation` | Trigger an automation manually |
189
+
190
+ #### DeFi Execution (7 tools)
191
+
192
+ > Transactions are signed client-side — your private key never leaves your machine.
115
193
 
116
- ### Vault Persistent Memory (13 tools)
194
+ | Name | Description |
195
+ |------|-------------|
196
+ | **Portfolio** `get_portfolio` | View wallet holdings and token balances |
197
+ | **Estimate Swap** `estimate_swap` | Get a swap quote via 0x before executing |
198
+ | **Swap Tokens** `swap_tokens` | Execute a token swap on Base |
199
+ | **Send Token** `send_token` | Send ETH or ERC-20 to any address |
200
+ | **Scan Wallet** `scan_wallet` | Analyze a wallet — holdings, activity, risk signals |
201
+ | **Analyze Wallet** `analyze_wallet` | Deep wallet analysis with on-chain patterns |
202
+ | **DeFi Yields** `get_defi_yields` | Find the best yield opportunities on Base |
117
203
 
118
- > Save research, notes, and data across sessions. Every save auto-versions.
204
+ #### Base Chain (4 tools)
119
205
 
120
- | Tool | Description |
206
+ | Name | Description |
121
207
  |------|-------------|
122
- | `vault_save` | Save a key-value entry to your personal vault |
123
- | `vault_read` | Read a vault entry by key |
124
- | `vault_list` | List recent vault entries |
125
- | `vault_search` | Full-text search across your vault |
126
- | `vault_context` | Load all vault entries relevant to a topic |
127
- | `vault_remember` | Natural-language save — "remember that ETH support is at $1800" |
128
- | `vault_history` | Version history for a vault entry |
129
- | `vault_diff` | Diff two versions of a vault entry |
130
- | `vault_export` | Export vault entries as JSON or markdown |
131
- | `vault_publish` | Publish a vault entry as a public note |
132
- | `vault_explore` | Browse vault by tag or category |
133
- | `store_credential` | Securely store an API key or secret |
134
- | `get_credential` | Retrieve a stored credential |
135
-
136
- ### Swarm — Multi-Agent System (8 tools)
137
-
138
- > Multi-agent coordination with shared memory. Agents research, monitor, and analyze in parallel.
139
-
140
- | Tool | Description |
208
+ | **Chain Stats** `base_chain_stats` | Live ETH price, gas price, latest block |
209
+ | **Query Vaults** `base_query_vaults` | Top Morpho yield vaults ranked by APY |
210
+ | **List Markets** `base_list_markets` | Moonwell lending and borrowing rates |
211
+ | **Prepare Deposit** `base_prepare_deposit` | Prepare a deposit into a Morpho vault |
212
+
213
+ #### Wallet & Notifications (2 tools)
214
+
215
+ | Name | Description |
141
216
  |------|-------------|
142
- | `start_swarm` | Start the multi-agent swarm for autonomous monitoring |
143
- | `stop_swarm` | Stop the active swarm session |
144
- | `get_swarm_status` | Status, shared memory snapshot, and execution scores |
145
- | `trigger_agent` | Run one agent now (market-monitor, sentiment-tracker, risk-verifier, etc.) |
146
- | `write_swarm_memory` | Write to the swarm's shared memory |
147
- | `get_swarm_memory` | Read from swarm shared memory |
148
- | `get_execution_scores` | Self-improvement scores across all skills |
149
- | `get_swarm_brief` | Summary of everything the swarm has researched |
150
-
151
- ### Automation (5 tools)
152
-
153
- | Tool | Description |
217
+ | **Wallet Address** `get_wallet_address` | Get or generate your MCP wallet address |
218
+ | **Set Telegram** `set_telegram` | Connect Telegram for automation notifications |
219
+
220
+ #### Playbooks (6 tools)
221
+
222
+ > Reusable sequences with safety rules applied before any action runs.
223
+
224
+ | Name | Description |
154
225
  |------|-------------|
155
- | `create_automation` | Create a trigger-based automation price alert, DCA, scheduled task |
156
- | `list_automations` | View all active automations |
157
- | `pause_automation` | Pause or resume an automation |
158
- | `delete_automation` | Delete an automation |
159
- | `get_automation_runs` | Execution history for automations |
226
+ | **Create Task** `create_task_packet` | Convert intent into a structured task with constraints |
227
+ | **List Tasks** `list_task_packets` | List all task packets |
228
+ | **List Playbooks** `list_playbooks` | Browse available playbooks |
229
+ | **Run Playbook** `run_playbook` | Execute a playbook by ID |
230
+ | **Noel Ledger** `get_noel_ledger` | Credits and full audit trail |
231
+ | **Sentinel Rules** `get_sentinel_rules` | View safety rules applied before actions |
232
+
233
+ ---
160
234
 
161
- ### Framework & Sentinel (6 tools)
235
+ ### 🔍 KNOW Research & Intelligence
162
236
 
163
- > Sentinel-gated agent execution — every action checked against rules before it runs.
237
+ Always informed before you act.
164
238
 
165
- | Tool | Description |
239
+ #### Market & Prices (5 tools)
240
+
241
+ | Name | Description |
242
+ |------|-------------|
243
+ | **Market Data** `get_market_data` | Live prices for BTC, ETH, SOL, and other tokens |
244
+ | **Token Data** `get_token_data` | Token info — price, volume, market cap |
245
+ | **Compare Tokens** `compare_tokens` | Side-by-side comparison of two tokens |
246
+ | **Market Overview** `market_overview` | Top movers, sentiment, dominance snapshot |
247
+ | **Token History** `token_history` | Historical price data for any token |
248
+
249
+ #### Scanner (4 tools)
250
+
251
+ | Name | Description |
166
252
  |------|-------------|
167
- | `create_task_packet` | Convert intent into a structured task with permissions and constraints |
168
- | `list_task_packets` | List all task packets |
169
- | `list_playbooks` | List available execution playbooks |
170
- | `get_framework_runs` | Execution history for framework runs |
171
- | `get_noel_ledger` | Credits ledger and full audit trail |
172
- | `run_sentinel` | Run a Sentinel gate check before an action |
253
+ | **Score Token** `score_token` | Risk and quality score for any token |
254
+ | **Check Token** `check_token` | Contract audit flags and honeypot detection |
255
+ | **Scan Dips** `scan_dips` | Tokens dipping with recovery signals |
256
+ | **Scan Momentum** `scan_momentum` | Tokens with strong upward momentum |
173
257
 
174
- ### Scanner (3 tools)
258
+ #### Research & Insight (3 tools)
175
259
 
176
- | Tool | Description |
260
+ | Name | Description |
177
261
  |------|-------------|
178
- | `score_token` | Risk and quality score for any token |
179
- | `check_token` | Contract audit flags and honeypot detection |
180
- | `scan_dips` | Find tokens currently dipping with recovery signals |
262
+ | **Ask Noel** `ask_noel` | AI crypto analyst opinions, trade ideas, market outlook |
263
+ | **Market Thesis** `market_thesis` | Investment thesis for any token or sector |
264
+ | **Trade Plan** `trade_plan` | Structured trade plan with entry, exit, and risk levels |
181
265
 
182
- ### MiroShark Simulation (3 tools)
266
+ #### Agent Network (15 tools)
183
267
 
184
- > Multi-agent scenario simulation — describe any scenario, get back AI agents acting as market participants, traders, journalists, and social actors.
268
+ > Spin up multiple AI agents that research and monitor in parallel.
185
269
 
186
- | Tool | Description |
270
+ | Name | Description |
187
271
  |------|-------------|
188
- | `miroshark_simulate` | Simulate a scenario from plain English. Returns a simulation ID |
189
- | `miroshark_status` | Poll progress agent activity feed, round count, AI brief on completion |
190
- | `miroshark_stop` | Stop a running simulation |
272
+ | **Start Swarm** `start_swarm` | Start the agent network |
273
+ | **Stop Swarm** `stop_swarm` | Stop the active swarm |
274
+ | **Swarm Status** `get_swarm_status` | Status and shared memory snapshot |
275
+ | **Trigger Agent** `trigger_agent` | Run a specific agent now |
276
+ | **Write Memory** `write_swarm_memory` | Write to shared agent memory |
277
+ | **Read Memory** `get_swarm_memory` | Read from shared agent memory |
278
+ | **Execution Scores** `get_execution_scores` | Performance scores across all agents |
279
+ | **Swarm Research** `swarm_research` | Multi-agent research on any topic — saves to vault |
280
+ | **Swarm Brief** `swarm_brief` | Summary of everything the swarm has found |
281
+ | **Broadcast** `swarm_broadcast` | Send a message to all active agents |
282
+ | **Swarm Pulse** `swarm_pulse` | Heartbeat — active agents and last activity |
283
+ | **Swarm Reflect** `swarm_reflect` | Agents self-evaluate what went well |
284
+ | **Swarm Watch** `swarm_watch` | Watch a token or topic for changes |
285
+ | **List Agents** `list_agents` | Browse available specialist agents |
286
+ | **Hire Agent** `hire_agent` | Hire an agent for a specific task |
287
+
288
+ ---
289
+
290
+ ### 🛠 BUILD — Developer & Content Tools
191
291
 
192
- ### Coder (6 tools)
292
+ #### Coder (7 tools)
193
293
 
194
- | Tool | Description |
294
+ | Name | Description |
195
295
  |------|-------------|
196
- | `scaffold_project` | Scaffold a DeFi or Web3 project |
197
- | `generate_component` | Generate a React component with wagmi/viem |
198
- | `generate_contract` | Generate a Solidity smart contract |
199
- | `audit_contract` | Audit a Solidity contract for vulnerabilities |
200
- | `explain_code` | Explain any code in plain English |
201
- | `review_code` | Code review with actionable feedback |
296
+ | **Scaffold Project** `scaffold_project` | Scaffold a DeFi or Web3 project |
297
+ | **Generate Component** `generate_component` | React component with wagmi/viem |
298
+ | **Generate Contract** `generate_contract` | Solidity smart contract |
299
+ | **Audit Contract** `audit_contract` | Contract vulnerability audit |
300
+ | **Explain Code** `explain_code` | Explain any code in plain English |
301
+ | **Generate MCP Skill** `generate_mcp_skill` | Generate a new MCP tool from plain English |
302
+ | **Review Code** `review_code` | Code review with actionable feedback |
202
303
 
203
- ### Agents Marketplace (2 tools)
304
+ #### Content & Humanizer (3 tools)
204
305
 
205
- | Tool | Description |
306
+ | Name | Description |
206
307
  |------|-------------|
207
- | `list_agents` | Browse available AI agents |
208
- | `hire_agent` | Hire an agent for a specific task |
308
+ | **Humanize Text** `humanize_text` | Strip AI patterns — makes output sound human |
309
+ | **Write Thread** `write_thread` | Write a Twitter/X thread on any topic |
310
+ | **Write Post** `write_post` | Write a punchy social post |
209
311
 
210
- ### Utilities (4 tools)
312
+ #### MiroShark — Market Simulation (3 tools)
211
313
 
212
- | Tool | Description |
314
+ | Name | Description |
213
315
  |------|-------------|
214
- | `humanize_text` | Remove AI writing patterns fixes 29 common AI tells |
215
- | `get_wallet_address` | Get or generate your MCP wallet address |
216
- | `set_telegram` | Connect Telegram for notifications |
217
- | `post_tweet` | Post a tweet via connected Twitter account |
316
+ | **Simulate** `miroshark_simulate` | Run a multi-agent market simulation from plain English |
317
+ | **Simulation Status** `miroshark_status` | Poll progress and get the AI brief on completion |
318
+ | **Stop Simulation** `miroshark_stop` | Stop a running simulation |
218
319
 
219
320
  ---
220
321
 
@@ -232,8 +333,7 @@ For additional capabilities, add to the `env` block in your MCP config:
232
333
  "args": ["-y", "@noelclaw/mcp"],
233
334
  "env": {
234
335
  "NOELCLAW_API_KEY": "noel_sk_...",
235
- "ANTHROPIC_API_KEY": "sk-ant-...",
236
- "BANKR_API_KEY": "bk_usr_..."
336
+ "ANTHROPIC_API_KEY": "sk-ant-..."
237
337
  }
238
338
  }
239
339
  }
@@ -242,10 +342,9 @@ For additional capabilities, add to the `env` block in your MCP config:
242
342
 
243
343
  | Variable | Purpose |
244
344
  |----------|---------|
245
- | `NOELCLAW_API_KEY` | Unlocks swarm, automation, framework, and agent tools. Get one at [noelclaw.com](https://noelclaw.com) |
345
+ | `NOELCLAW_API_KEY` | Unlocks swarm, automation, framework, and agent tools. Get one at [app.noelclaw.com](https://app.noelclaw.com) |
246
346
  | `ANTHROPIC_API_KEY` | AI tools use your Claude quota — you pay, not the server |
247
- | `BANKR_API_KEY` | Alternative LLM provider |
248
- | `NOELCLAW_SESSION_TOKEN` | Session token from noelclaw.com (alternative to API key) |
347
+ | `NOELCLAW_SESSION_TOKEN` | Session token from app.noelclaw.com (alternative to API key) |
249
348
  | `NOELCLAW_CONVEX_URL` | Override the backend URL (for self-hosted deployments) |
250
349
 
251
350
  ---
@@ -255,7 +354,7 @@ For additional capabilities, add to the `env` block in your MCP config:
255
354
  | Problem | Fix |
256
355
  |---------|-----|
257
356
  | Tools not appearing | Restart your MCP client after adding the config |
258
- | Swarm returns auth error | Add `NOELCLAW_API_KEY` — get one at noelclaw.com |
357
+ | Swarm returns auth error | Add `NOELCLAW_API_KEY` — get one at app.noelclaw.com |
259
358
  | Server starts but no output | Expected — server waits for MCP stdin, not HTTP |
260
359
  | Old version loading | Run `npx clear-npx-cache` then restart your client |
261
360
 
@@ -265,4 +364,5 @@ For additional capabilities, add to the `env` block in your MCP config:
265
364
 
266
365
  - npm: [npmjs.com/package/@noelclaw/mcp](https://www.npmjs.com/package/@noelclaw/mcp)
267
366
  - GitHub: [github.com/noelclaw/mcp](https://github.com/noelclaw/mcp)
268
- - Platform: [noelclaw.com](https://noelclaw.com)
367
+ - App: [app.noelclaw.com](https://app.noelclaw.com)
368
+ - Docs: [docs.noelclaw.fun](https://docs.noelclaw.fun)
package/dist/server.js CHANGED
@@ -38,21 +38,21 @@ function containsSensitiveRequest(args) {
38
38
  exports.ALL_TOOLS = [
39
39
  ...market_js_1.MARKET_TOOLS, // 5 — get_market_data, get_token_data, compare_tokens, market_overview, token_history
40
40
  ...insight_js_1.INSIGHT_TOOLS, // 3 — ask_noel, market_thesis, trade_plan
41
- ...defi_js_1.DEFI_TOOLS, // 7 — get_portfolio, estimate_swap, swap_tokens, send_token, scan_wallet, analyze_wallet, get_defi_yields
41
+ ...defi_js_1.DEFI_TOOLS, // 6 — get_portfolio, estimate_swap, swap_tokens, send_token, analyze_wallet, get_defi_yields
42
42
  ...automation_js_1.AUTOMATION_TOOLS, // 6 — create, list, pause, delete, get_runs, run
43
- ...swarm_js_1.SWARM_TOOLS, // 13 — start, stop, status, read/write memory, scores, research, brief, trigger_agent, broadcast, pulse, reflect, watch
44
- ...framework_js_1.FRAMEWORK_TOOLS, // 6task packets, playbooks, sentinel, ledger
45
- ...vault_js_1.VAULT_TOOLS, // 15 — save, read, list, search, history, diff, export, store_credential, get_credential, publish, explore, pin, delete, link, tag
43
+ ...swarm_js_1.SWARM_TOOLS, // 6 — start, stop, status, research, trigger_agent, brief
44
+ ...framework_js_1.FRAMEWORK_TOOLS, // 3list_playbooks, run_playbook, get_noel_ledger
45
+ ...vault_js_1.VAULT_TOOLS, // 12 — save, read, list, search, history, diff, export, store_credential, get_credential, pin, delete, tag
46
46
  ...wallet_js_1.WALLET_TOOLS, // 2 — get_wallet_address, set_telegram
47
47
  ...miroshark_js_1.MIROSHARK_TOOLS, // 3 — simulate, status, stop
48
48
  ...humanizer_js_1.HUMANIZER_TOOLS, // 3 — humanize_text, write_thread, write_post
49
49
  ...agents_js_1.AGENT_TOOLS, // 2 — list_agents, hire_agent
50
50
  ...scanner_js_1.SCANNER_TOOLS, // 4 — score_token, check_token, scan_dips, scan_momentum
51
- ...coder_js_1.CODER_TOOLS, // 7scaffold_project, generate_component, generate_contract, audit_contract, explain_code, review_code, generate_mcp_skill
51
+ ...coder_js_1.CODER_TOOLS, // 5 — generate_contract, audit_contract, explain_code, review_code, generate_mcp_skill
52
52
  ...base_js_1.BASE_TOOLS, // 4 — query_vaults, list_markets, prepare_deposit, chain_stats
53
53
  ...memory_js_1.MEMORY_TOOLS, // 7 — memory_add, memory_search, memory_context, memory_profile, memory_list, memory_delete, memory_insight
54
54
  ...os_js_1.OS_TOOLS, // 3 — noel_status, noel_boot, noel_shutdown
55
- // total: 90
55
+ // total: 74
56
56
  ];
57
57
  const HANDLER_MAP = new Map([
58
58
  ...market_js_1.MARKET_TOOLS.map(t => [t.name, market_js_1.handleMarketTool]),
@@ -27,53 +27,6 @@ function err(text) {
27
27
  }
28
28
  // ── Tool definitions ──────────────────────────────────────────────────────────
29
29
  exports.CODER_TOOLS = [
30
- {
31
- name: "scaffold_project",
32
- description: "Generate a complete project scaffold for a described idea — file tree + key file contents. " +
33
- "Supports: Solidity contract projects, MCP skill packages, React/Next.js dApps, Convex backends, CLI tools.",
34
- inputSchema: {
35
- type: "object",
36
- properties: {
37
- description: {
38
- type: "string",
39
- description: "What to build — be specific: tech stack, purpose, target chain, key features",
40
- },
41
- stack: {
42
- type: "string",
43
- enum: ["solidity", "mcp-skill", "react-dapp", "convex-backend", "node-cli", "auto"],
44
- description: "Tech stack. Use 'auto' to let Noel decide based on description.",
45
- },
46
- extras: {
47
- type: "string",
48
- description: "Optional: extra requirements, constraints, or preferred libraries",
49
- },
50
- },
51
- required: ["description"],
52
- },
53
- },
54
- {
55
- name: "generate_component",
56
- description: "Generate a production-ready React/TypeScript component. Returns the full .tsx file content. " +
57
- "Includes props typing, Tailwind styling, and any hooks needed.",
58
- inputSchema: {
59
- type: "object",
60
- properties: {
61
- description: {
62
- type: "string",
63
- description: "What the component does, what it shows, and how it should behave",
64
- },
65
- name: {
66
- type: "string",
67
- description: "Component name in PascalCase, e.g. 'TokenPriceCard'",
68
- },
69
- context: {
70
- type: "string",
71
- description: "Optional: existing imports, store usage, or API calls the component should use",
72
- },
73
- },
74
- required: ["description", "name"],
75
- },
76
- },
77
30
  {
78
31
  name: "generate_contract",
79
32
  description: "Generate a Solidity smart contract from a description. Returns the full .sol file. " +
@@ -190,16 +143,6 @@ exports.CODER_TOOLS = [
190
143
  },
191
144
  ];
192
145
  // ── Handlers ──────────────────────────────────────────────────────────────────
193
- const ScaffoldSchema = zod_1.z.object({
194
- description: zod_1.z.string().min(10),
195
- stack: zod_1.z.enum(["solidity", "mcp-skill", "react-dapp", "convex-backend", "node-cli", "auto"]).optional(),
196
- extras: zod_1.z.string().optional(),
197
- });
198
- const ComponentSchema = zod_1.z.object({
199
- description: zod_1.z.string().min(5),
200
- name: zod_1.z.string().min(1),
201
- context: zod_1.z.string().optional(),
202
- });
203
146
  const ContractSchema = zod_1.z.object({
204
147
  description: zod_1.z.string().min(5),
205
148
  name: zod_1.z.string().min(1),
@@ -225,54 +168,6 @@ const McpSkillSchema = zod_1.z.object({
225
168
  });
226
169
  async function handleCoderTool(name, args) {
227
170
  switch (name) {
228
- case "scaffold_project": {
229
- const p = ScaffoldSchema.safeParse(args);
230
- if (!p.success)
231
- return err(`Invalid input: ${p.error.message}`);
232
- const { description, stack = "auto", extras } = p.data;
233
- const prompt = `Generate a complete project scaffold for the following:\n\n` +
234
- `Description: ${description}\n` +
235
- `Stack: ${stack}\n` +
236
- (extras ? `Extra requirements: ${extras}\n` : "") +
237
- `\nOutput format:\n` +
238
- `1. Brief overview (2-3 sentences)\n` +
239
- `2. Full file tree with all files listed\n` +
240
- `3. Full content of each key file (package.json, main entry, config, one core module)\n` +
241
- `4. Setup instructions (3-5 steps)\n\n` +
242
- `Use real, runnable code. No TODO placeholders.`;
243
- try {
244
- const response = await (0, llm_js_1.callLLM)(CODER_SYSTEM, prompt, 4096);
245
- return ok(response);
246
- }
247
- catch (e) {
248
- return err(`scaffold_project failed: ${e.message}`);
249
- }
250
- }
251
- case "generate_component": {
252
- const p = ComponentSchema.safeParse(args);
253
- if (!p.success)
254
- return err(`Invalid input: ${p.error.message}`);
255
- const { description, name: componentName, context } = p.data;
256
- const prompt = `Generate a production-ready React TypeScript component.\n\n` +
257
- `Component name: ${componentName}\n` +
258
- `Description: ${description}\n` +
259
- (context ? `Context / existing code to integrate with:\n${context}\n` : "") +
260
- `\nRequirements:\n` +
261
- `- Full .tsx file, no omissions\n` +
262
- `- TypeScript props interface\n` +
263
- `- Tailwind CSS for styling\n` +
264
- `- Use lucide-react for icons if needed\n` +
265
- `- Framer Motion for animations if the component is interactive\n` +
266
- `- Named export (not default)\n` +
267
- `Output only the .tsx file content, no prose before or after.`;
268
- try {
269
- const response = await (0, llm_js_1.callLLM)(CODER_SYSTEM, prompt, 3000);
270
- return ok(response);
271
- }
272
- catch (e) {
273
- return err(`generate_component failed: ${e.message}`);
274
- }
275
- }
276
171
  case "generate_contract": {
277
172
  const p = ContractSchema.safeParse(args);
278
173
  if (!p.success)
@@ -50,11 +50,6 @@ exports.DEFI_TOOLS = [
50
50
  required: ["token", "toAddress", "amount"],
51
51
  },
52
52
  },
53
- {
54
- name: "scan_wallet",
55
- description: "AI-powered portfolio scan — concentration risk, volatility exposure, Base ecosystem opportunities, and a concrete 3-step action plan based on your actual holdings. Requires wallet auth.",
56
- inputSchema: { type: "object", properties: {}, required: [] },
57
- },
58
53
  {
59
54
  name: "analyze_wallet",
60
55
  description: "AI-powered analysis of any public wallet on Base — not just your own. " +
@@ -186,39 +181,6 @@ async function handleDefiTool(name, args) {
186
181
  }],
187
182
  };
188
183
  }
189
- case "scan_wallet": {
190
- const data = await (0, convex_js_1.callConvex)("/wallet/scan", "GET", undefined, "scan_wallet");
191
- if (data.error) {
192
- return { content: [{ type: "text", text: `Scan failed: ${data.error}` }], isError: true };
193
- }
194
- const total = (data.totalUsd ?? 0).toFixed(2);
195
- const topHoldings = (data.holdings ?? [])
196
- .slice(0, 5)
197
- .map((h) => `• **${h.token}**: $${(h.valueUsd ?? 0).toFixed(2)}${h.pct != null ? ` (${h.pct}%)` : ""}`)
198
- .join("\n");
199
- const header = [
200
- `**Portfolio Scan** — Total: $${total}`,
201
- `Wallet: \`${data.address ?? "unknown"}\``,
202
- ``,
203
- `**Holdings:**`,
204
- topHoldings,
205
- ``,
206
- ].join("\n");
207
- let body;
208
- if (data.analysis) {
209
- body = data.analysis;
210
- }
211
- else if (data.analysisError) {
212
- body = `*AI analysis unavailable: ${data.analysisError}*`;
213
- }
214
- else {
215
- body = "*AI analysis not available*";
216
- }
217
- const footer = data.tokensUsed
218
- ? `\n\n*Tokens used: ${data.tokensUsed} · Scanned: ${data.scannedAt ?? ""}*`
219
- : "";
220
- return { content: [{ type: "text", text: header + body + footer }] };
221
- }
222
184
  case "analyze_wallet": {
223
185
  const parsed = AnalyzeWalletSchema.safeParse(args);
224
186
  if (!parsed.success)