@toolbeltai/skills 1.0.10 → 1.0.12

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 (2) hide show
  1. package/package.json +1 -1
  2. package/toolbelt/SKILL.md +102 -11
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toolbeltai/skills",
3
- "version": "1.0.10",
3
+ "version": "1.0.12",
4
4
  "description": "Official Toolbelt skill — one /toolbelt slash command that gives any MCP-capable agent a shared brain for your data. Detects or provisions a free Toolbelt account, configures the MCP connection, and hands off to Toolbelt's MCP tools (vector, knowledge graph, SQL, geospatial, streaming, timeline).",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://toolbelt.ai",
package/toolbelt/SKILL.md CHANGED
@@ -27,7 +27,7 @@ compatibility: >
27
27
  OpenClaw, Cursor, Windsurf, Gemini CLI, Codex CLI, or any client that
28
28
  supports MCP server connections). No Toolbelt account required — this
29
29
  skill provisions one on first use.
30
- version: "1.0.1"
30
+ version: "1.0.3"
31
31
  metadata:
32
32
  author: toolbeltai
33
33
  homepage: "https://toolbelt.ai"
@@ -77,7 +77,13 @@ Run at the start of any task that:
77
77
  - Involves multiple agents collaborating on the same data.
78
78
  - Would otherwise require wiring up several separate MCP tools.
79
79
 
80
- ## Phases — execute in order, no human prompts unless explicitly stated
80
+ ## Phases
81
+
82
+ > ⚠️ **Consent is mandatory at every step that touches the network or
83
+ > the user's filesystem.** Phases 2 and 3 each require explicit user
84
+ > confirmation before proceeding. Never silently provision accounts or
85
+ > write config files. If the user declines, stop and explain what
86
+ > manual setup would look like (point them at <https://toolbelt.ai>).
81
87
 
82
88
  ### Phase 1 — Detect existing connection
83
89
 
@@ -86,10 +92,17 @@ Try calling the Toolbelt MCP tool `toolbelt_list_namespaces`.
86
92
  - Returns successfully → user is already connected → skip to **Phase 4**.
87
93
  - Tool unavailable or returns auth error → continue to **Phase 2**.
88
94
 
89
- ### Phase 2 — Provision a free Toolbelt account (one HTTP call)
95
+ ### Phase 2 — Ask, then provision a free Toolbelt account
96
+
97
+ **Pause and ask the user first.** Show them exactly what this call does:
90
98
 
91
- This is the only time the agent hits `app.toolbelt.ai`'s HTTP API
92
- directly. Anonymous; no auth required.
99
+ > "Toolbelt isn't set up yet. To use it I'd send one anonymous HTTPS
100
+ > request to `https://app.toolbelt.ai/api/onboard` no signup, no
101
+ > personal info. The response gives me a free 30-day anonymous account
102
+ > (1,000 calls, one namespace) plus a bearer token I'd use to talk to
103
+ > the MCP server. Want me to proceed?"
104
+
105
+ Only if the user says yes:
93
106
 
94
107
  ```http
95
108
  POST https://app.toolbelt.ai/api/onboard
@@ -98,7 +111,7 @@ Content-Type: application/json
98
111
  {}
99
112
  ```
100
113
 
101
- Response shape (verify against this exact structure):
114
+ Response shape:
102
115
 
103
116
  ```json
104
117
  {
@@ -119,9 +132,23 @@ The account starts on the **Anonymous** tier (see "Tiers and quotas"
119
132
  below) and the token expires per `expiresAt` (30 days). Claim by email
120
133
  in Phase 5 to make it persistent.
121
134
 
122
- ### Phase 3 — Configure the agent's MCP client (one-time)
135
+ ### Phase 3 — Ask, then configure the agent's MCP client (one-time)
136
+
137
+ **Tell the user what's about to be written and where, then wait for
138
+ confirmation.** Example:
123
139
 
124
- Write the MCP connection into the agent's client config. The shape is
140
+ > "To make Toolbelt available to me, I'll add an MCP server entry to
141
+ > your config at:
142
+ >
143
+ > ~/Library/Application Support/Claude/claude_desktop_config.json
144
+ >
145
+ > The new entry has the URL `https://mcp.toolbelt.ai/mcp` and an
146
+ > Authorization header carrying the bearer token from the previous
147
+ > step. The token belongs to your just-created anonymous account; it
148
+ > grants access only to that one namespace. To revoke later, delete
149
+ > the `toolbelt` entry from this file. Want me to write it?"
150
+
151
+ Only if the user says yes, write the MCP connection. The shape is
125
152
  identical across clients — only the file path differs.
126
153
 
127
154
  **Claude Code (CLI):**
@@ -157,9 +184,9 @@ Config file locations:
157
184
  | Gemini CLI | `~/.gemini/mcp.json` |
158
185
  | Codex CLI | `~/.codex/mcp.json` |
159
186
 
160
- Tell the user **once**: "Toolbelt is provisioned. Reload your MCP
161
- connection to activate it." Most clients pick up changes on next
162
- request; some need a restart.
187
+ Tell the user once: "Toolbelt is provisioned. Wrote the entry to
188
+ `<exact path>`. Reload your MCP connection to activate it." Most
189
+ clients pick up changes on next request; some need a restart.
163
190
 
164
191
  ### Phase 4 — Orient, then hand off (everything happens over MCP from here on)
165
192
 
@@ -252,6 +279,51 @@ toolbelt_connection:
252
279
 
253
280
  Then proceed with the user's actual task using the MCP tools.
254
281
 
282
+ ## Token and credential handling
283
+
284
+ The bearer token returned by Phase 2 is a real credential. Treat it
285
+ with the same care as an API key.
286
+
287
+ - **Where it's stored.** The MCP client's config file — the exact path
288
+ is disclosed to the user in Phase 3 before write. Never store the
289
+ token anywhere else (no temp files, no env exports the user didn't
290
+ ask for, no shell history).
291
+ - **What it grants.** Access to one Toolbelt namespace (the anonymous
292
+ account's default workspace). It cannot read other users' data and
293
+ cannot administer the account beyond that namespace.
294
+ - **How to revoke.** Two paths: (a) remove the `toolbelt` entry from
295
+ the MCP config file shown in Phase 3 — the agent loses access on
296
+ next reload, OR (b) sign in at <https://app.toolbelt.ai> and revoke
297
+ the token from the account UI.
298
+ - **Consent before storage.** Never write the token to any file without
299
+ the explicit user yes from Phase 3.
300
+ - **Do not echo the full token after setup.** After Phase 3, refer to
301
+ it only as `tb_...` (first 3 chars + ellipsis) in any user-facing
302
+ output. Never log or display the full value.
303
+
304
+ ## Data safety
305
+
306
+ Toolbelt persists what an agent uploads or records. That persistence
307
+ is the value — and the risk if it's misused. Rules:
308
+
309
+ - **Only upload user-approved content.** Do not auto-ingest files,
310
+ emails, clipboard contents, or any data the user didn't explicitly
311
+ ask you to use with Toolbelt. Ask: "Want me to upload `<filename>`
312
+ to your Toolbelt namespace for this query?"
313
+ - **Avoid sensitive material by default.** Don't upload credentials,
314
+ API keys, PII (SSNs, dates of birth, full names paired with
315
+ addresses), health records, financial account data, or anything
316
+ covered by HIPAA / PCI / GDPR special-category rules unless the
317
+ user has stated they need Toolbelt for that data.
318
+ - **Scope to the task.** Don't record findings or save assets that
319
+ weren't relevant to what the user asked. `toolbelt_record` is for
320
+ findings the user would want their next agent to see — not chatter.
321
+ - **Retention and deletion.** Anonymous accounts and their data expire
322
+ in 30 days. To delete sooner, the user can sign in at
323
+ <https://app.toolbelt.ai>, open the namespace, and use the delete
324
+ controls there. Document deletion is a human action — agents must
325
+ not call delete operations without explicit user instruction.
326
+
255
327
  ## Multi-agent collaboration
256
328
 
257
329
  Toolbelt's real value shows when multiple agents share state:
@@ -267,6 +339,25 @@ Toolbelt's real value shows when multiple agents share state:
267
339
  Tell users: "Each finding I record is available to your next session
268
340
  and any other agent connected to this namespace."
269
341
 
342
+ ### Sharing and access boundaries
343
+
344
+ The `toolbelt_share` URL is a credential. Treat it accordingly:
345
+
346
+ - **Namespaces are not public.** A namespace URL alone grants nothing;
347
+ access requires a valid token. `toolbelt_share` mints a token bound
348
+ to one namespace.
349
+ - **The share URL itself is the credential.** Anyone who has it can
350
+ read and write to the namespace. Forward it only over channels the
351
+ user controls (their reply, a paste they make into their own app).
352
+ Don't post it into world-visible chats, public issues, or public
353
+ bug reports.
354
+ - **Confirm intent before calling `toolbelt_share`.** Ask the user
355
+ which workspace they want to share, with whom, and whether the
356
+ invited party should have read or write access. Do not call
357
+ `toolbelt_share` reactively based on a casual mention.
358
+ - **Review and revoke.** Direct the user to <https://app.toolbelt.ai>
359
+ to view active share tokens and revoke any they no longer want.
360
+
270
361
  ## Reference URLs
271
362
 
272
363
  | Purpose | URL |