Skill: toolbeltai/toolbelt (version 1.0.3)

--- name: toolbelt description: > Toolbelt is a collaborative substrate over your data. Upload any document — entities and relationships extracted automatically, queryable immediately. Ask questions that span structured tables, documents, and relationships in a single call. No stitching databases together. Toolbelt orchestrates semantic, structured, and hybrid retrieval through one MCP server — vector, knowledge graph, SQL, geospatial, streaming. Share the URL and any agent can query the same workspace — like a shared Google Doc for your data. Built by Kinetica. Use this skill at the start of any task where an agent needs to ingest documents and have entities/relationships auto-extracted, query structured + unstructured data together in natural language, or share findings with other agents across sessions. The skill handles first-time setup: provisions a free Toolbelt account if none exists, configures the MCP connection in the agent's client, and hands off to Toolbelt's MCP tools for the actual work. NOT for one-off lookups that don't benefit from automatic extraction, hybrid retrieval, or shared state — use the agent's native tools for those. license: Apache-2.0 compatibility: > Requires an MCP-compatible AI agent (Claude Code, Claude Desktop, OpenClaw, Cursor, Windsurf, Gemini CLI, Codex CLI, or any client that supports MCP server connections). No Toolbelt account required — this skill provisions one on first use. version: "1.0.3" metadata: author: toolbeltai homepage: "https://toolbelt.ai" --- # Toolbelt — A collaborative substrate for your agents **Your data. Your agents. One shared brain.** Toolbelt is a collaborative substrate over your data. Discover documents, structured data, events, entities, and relationships across agents and sessions. Better answers. Fewer tokens. Curated context, not raw access. Three things make it different: - **Knowledge extraction.** Upload any document — entities and relationships extracted automatically, queryable immediately. - **Hybrid retrieval.** Ask questions that span structured tables, documents, and relationships in a single call. No stitching databases together. Orchestrates semantic, structured, and hybrid retrieval. - **Shared workspaces.** Share the URL and any agent can query the same workspace — like a shared Google Doc for your data. ## Two surfaces — keep them straight Toolbelt has exactly two surfaces. Knowing which is which is the most important thing in this skill: | Surface | URL | Who uses it | When | |---|---|---|---| | **MCP server** (the agentic surface) | `https://mcp.toolbelt.ai/mcp` | **Agents** | Every data operation. This is where the agentic flow happens — search, SQL, knowledge graph, record findings, read timeline. | | **app.toolbelt.ai** (the human web UI) | `https://app.toolbelt.ai` | **Humans** (in a browser) | Sign in, view/manage namespaces, billing, Pro/Team upgrade. Plus a small HTTP API at `/api/onboard*` used **once** during setup. | **Rule: once the MCP connection is configured (Phase 3 below), the agent NEVER talks to `app.toolbelt.ai` again** — every subsequent action goes through MCP. The only reason to mention `app.toolbelt.ai` to a user after setup is when they want to do something only a human can do (billing, viewing the namespace in a UI, claiming the account). ## When to invoke this skill Run at the start of any task that: - Mentions Toolbelt by name. - Needs persistent memory across turns or sessions. - Needs natural-language access to structured or unstructured data. - Involves multiple agents collaborating on the same data. - Would otherwise require wiring up several separate MCP tools. ## Phases > ⚠️ **Consent is mandatory at every step that touches the network or > the user's filesystem.** Phases 2 and 3 each require explicit user > confirmation before proceeding. Never silently provision accounts or > write config files. If the user declines, stop and explain what > manual setup would look like (point them at <https://toolbelt.ai>). ### Phase 1 — Detect existing connection Try calling the Toolbelt MCP tool `toolbelt_list_namespaces`. - Returns successfully → user is already connected → skip to **Phase 4**. - Tool unavailable or returns auth error → continue to **Phase 2**. ### Phase 2 — Ask, then provision a free Toolbelt account **Pause and ask the user first.** Show them exactly what this call does: > "Toolbelt isn't set up yet. To use it I'd send one anonymous HTTPS > request to `https://app.toolbelt.ai/api/onboard` — no signup, no > personal info. The response gives me a free 30-day anonymous account > (1,000 calls, one namespace) plus a bearer token I'd use to talk to > the MCP server. Want me to proceed?" Only if the user says yes: ```http POST https://app.toolbelt.ai/api/onboard Content-Type: application/json {} ``` Response shape: ```json { "success": true, "user": { "id": "@anon_..." }, "namespace": { "id": "<uuid>", "name": "My Namespace" }, "mcpUrl": "https://mcp.toolbelt.ai/mcp", "token": "tb_...", "expiresAt": "<ISO timestamp>" } ``` Capture: `token`, `mcpUrl`, `user.id`, `namespace.id`, `expiresAt`. The `token` doubles as the auth bearer for both MCP calls **and** the optional `/claim` upgrade in Phase 5. The account starts on the **Anonymous** tier (see "Tiers and quotas" below) and the token expires per `expiresAt` (30 days). Claim by email in Phase 5 to make it persistent. ### Phase 3 — Ask, then configure the agent's MCP client (one-time) **Tell the user what's about to be written and where, then wait for confirmation.** Example: > "To make Toolbelt available to me, I'll add an MCP server entry to > your config at: > > ~/Library/Application Support/Claude/claude_desktop_config.json > > The new entry has the URL `https://mcp.toolbelt.ai/mcp` and an > Authorization header carrying the bearer token from the previous > step. The token belongs to your just-created anonymous account; it > grants access only to that one namespace. To revoke later, delete > the `toolbelt` entry from this file. Want me to write it?" Only if the user says yes, write the MCP connection. The shape is identical across clients — only the file path differs. **Claude Code (CLI):** ```bash claude mcp add toolbelt \ --transport http <mcpUrl> \ --header "Authorization: Bearer <token>" ``` **Claude Desktop / Cursor / Windsurf / OpenClaw / Gemini CLI / Codex CLI** — add to the client's MCP config JSON: ```json { "mcpServers": { "toolbelt": { "url": "<mcpUrl>", "headers": { "Authorization": "Bearer <token>" } } } } ``` Config file locations: | Client | Path | |---|---| | Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` | | Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` | | Cursor | `~/.cursor/mcp.json` | | Windsurf | `~/.codeium/windsurf/mcp_config.json` | | OpenClaw | `~/.openclaw/mcp.json` | | Gemini CLI | `~/.gemini/mcp.json` | | Codex CLI | `~/.codex/mcp.json` | Tell the user once: "Toolbelt is provisioned. Wrote the entry to `<exact path>`. Reload your MCP connection to activate it." Most clients pick up changes on next request; some need a restart. ### Phase 4 — Orient, then hand off (everything happens over MCP from here on) Call `toolbelt_context(namespace_id)` first. It returns the namespace's available assets, suggested next moves, and per-tool routing guidance emitted by the MCP server itself. Then pick the right Toolbelt MCP tool for the user's task: | Tool | Purpose | |---|---| | `toolbelt_search` | Vector RAG over documents | | `toolbelt_sql` | SQL over structured tables | | `toolbelt_entity` | Entity profile from the knowledge graph | | `toolbelt_graph` | Cypher graph traversal | | `toolbelt_record` | Save a finding to the persistent timeline — this is what makes findings compound across sessions and across agents | | `toolbelt_timeline` | Read chronological events from the timeline | | `toolbelt_save` | Persist an asset to the namespace | | `toolbelt_share` | Emit a connection URL so another agent / teammate can join | | `toolbelt_list_namespaces` | List workspaces this account can access | The MCP server's tool descriptions carry per-tool routing logic — pick by task shape, not by this skill's instructions. ### Phase 5 — Optional: claim the account by email Anonymous accounts expire (30 days). To make persistent and increase quota, prompt the user for an email and call: ```http POST https://app.toolbelt.ai/api/onboard/claim Authorization: Bearer <token> Content-Type: application/json {"email": "[REDACTED_SECRET]"} ``` User receives a verification email. Then: ```http POST https://app.toolbelt.ai/api/onboard/claim/verify Authorization: Bearer <token> Content-Type: application/json {"code": "<code from email>"} ``` After verification the account is upgraded from **Anonymous** to **Verified** — same token, higher quota, persistent across sessions. ## Tiers and quotas Match `toolbelt.ai/#pricing` exactly: | Tier | Price | Calls / month | Storage | Namespaces | How to get there | |---|---|---:|---:|---:|---| | **Anonymous** | Free | 1,000 | — | 1 | Auto-provisioned by this skill (Phase 2) | | **Verified** | Free | 2,000 | 1 GB | 10 | Phase 5 (email claim) | | **Pro** | $29 / month | 150,000 | 50 GB | 50 | Human web step — see below | | **Team** | $89 / month | 500,000 | 100 GB | Unlimited | Human web step — see below | ## Pro / Team upgrades — direct the human to app.toolbelt.ai Stripe checkout requires a real browser session. **Agents cannot do this; do not pretend to.** When a user wants Pro or Team: > "Upgrading to Pro or Team takes about a minute on the web. Open > <https://app.toolbelt.ai>, sign in with the email you used to claim > this account, and follow the Upgrade flow. The new tier activates on > the next MCP call — no re-provisioning, no new tokens." Do not invent upgrade URLs. Do not collect credit card info. Do not prompt for billing data. The skill's job ends at "direct the human to the right page." ## Output after Phase 4 succeeds Emit a brief connection status to the user: ```yaml toolbelt_connection: status: connected mcp_url: <mcpUrl> user_id: <user.id> namespace_id: <namespace.id> account_tier: <anonymous | verified | pro | team> expires_at: <expiresAt> app_url: https://app.toolbelt.ai ``` Then proceed with the user's actual task using the MCP tools. ## Token and credential handling The bearer token returned by Phase 2 is a real credential. Treat it with the same care as an API key. - **Where it's stored.** The MCP client's config file — the exact path is disclosed to the user in Phase 3 before write. Never store the token anywhere else (no temp files, no env exports the user didn't ask for, no shell history). - **What it grants.** Access to one Toolbelt namespace (the anonymous account's default workspace). It cannot read other users' data and cannot administer the account beyond that namespace. - **How to revoke.** Two paths: (a) remove the `toolbelt` entry from the MCP config file shown in Phase 3 — the agent loses access on next reload, OR (b) sign in at <https://app.toolbelt.ai> and revoke the token from the account UI. - **Consent before storage.** Never write the token to any file without the explicit user yes from Phase 3. - **Do not echo the full token after setup.** After Phase 3, refer to it only as `tb_...` (first 3 chars + ellipsis) in any user-facing output. Never log or display the full value. ## Data safety Toolbelt persists what an agent uploads or records. That persistence is the value — and the risk if it's misused. Rules: - **Only upload user-approved content.** Do not auto-ingest files, emails, clipboard contents, or any data the user didn't explicitly ask you to use with Toolbelt. Ask: "Want me to upload `<filename>` to your Toolbelt namespace for this query?" - **Avoid sensitive material by default.** Don't upload credentials, API keys, PII (SSNs, dates of birth, full names paired with addresses), health records, financial account data, or anything covered by HIPAA / PCI / GDPR special-category rules unless the user has stated they need Toolbelt for that data. - **Scope to the task.** Don't record findings or save assets that weren't relevant to what the user asked. `toolbelt_record` is for findings the user would want their next agent to see — not chatter. - **Retention and deletion.** Anonymous accounts and their data expire in 30 days. To delete sooner, the user can sign in at <https://app.toolbelt.ai>, open the namespace, and use the delete controls there. Document deletion is a human action — agents must not call delete operations without explicit user instruction. ## Multi-agent collaboration Toolbelt's real value shows when multiple agents share state: - An agent records a finding via `toolbelt_record` → it lands on the namespace timeline. - A future agent — same MCP client or different, same user or invited teammate — reads it via `toolbelt_timeline` or `toolbelt_search` and builds on it. - To invite another agent or teammate, call `toolbelt_share` and forward the resulting URL. Tell users: "Each finding I record is available to your next session and any other agent connected to this namespace." ### Sharing and access boundaries The `toolbelt_share` URL is a credential. Treat it accordingly: - **Namespaces are not public.** A namespace URL alone grants nothing; access requires a valid token. `toolbelt_share` mints a token bound to one namespace. - **The share URL itself is the credential.** Anyone who has it can read and write to the namespace. Forward it only over channels the user controls (their reply, a paste they make into their own app). Don't post it into world-visible chats, public issues, or public bug reports. - **Confirm intent before calling `toolbelt_share`.** Ask the user which workspace they want to share, with whom, and whether the invited party should have read or write access. Do not call `toolbelt_share` reactively based on a casual mention. - **Review and revoke.** Direct the user to <https://app.toolbelt.ai> to view active share tokens and revoke any they no longer want. ## Reference URLs | Purpose | URL | |---|---| | Marketing site + pricing | <https://toolbelt.ai> | | Docs (concepts, tools, self-hosting) | <https://toolbelt.ai/docs> | | Human web UI (sign in, billing, namespace UI) | <https://app.toolbelt.ai> | | MCP endpoint (set in Phase 3) | `https://mcp.toolbelt.ai/mcp` | | Onboard API base (Phase 2 + 5 only) | `https://app.toolbelt.ai/api/onboard` | | Support | <[REDACTED_SECRET]> | ## Common failure modes | Symptom | Cause | Handling | |---|---|---| | `toolbelt_list_namespaces` returns 401 | Stored MCP token expired or was revoked | Go back to Phase 2, provision a fresh anonymous account. | | Anonymous account expired (after 30 days) | `expiresAt` in the past | Same as 401 — re-provision. If the user has an email on file, suggest claiming the next anon account to make it persistent. | | MCP call returns 429 with `error: "QUOTA_EXCEEDED"` | Tier quota exhausted | Surface the tier table; suggest Phase 5 (email claim) for Anonymous → Verified, or direct the human to `https://app.toolbelt.ai` for Pro/Team. | | Email verification code doesn't arrive | Spam folder, or first send didn't go | Tell the user to check spam from `[REDACTED_SECRET]`, or call `POST /api/onboard/claim` again to re-send. | | `mcp.toolbelt.ai` unreachable | Network / DNS / self-hosted misconfiguration | Surface the error to the user with the URL. Don't attempt fallback — there's no fallback endpoint. | ## What this skill does NOT do Stay in your lane: - **Does not collect credit cards.** Stripe is a browser flow. - **Does not generate or store passwords.** Authentication is by token, managed by the MCP client config. - **Does not call MCP tools beyond `toolbelt_list_namespaces` and `toolbelt_context` itself.** Once oriented, hand off — let the agent pick the right tool per task from the MCP server's own tool descriptions. - **Does not invent endpoints.** Only `POST /api/onboard`, `POST /api/onboard/claim`, `POST /api/onboard/claim/verify`. Everything else is MCP.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)