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:
relationships extracted automatically, queryable immediately.
documents, and relationships in a single call. No stitching databases
together. Orchestrates semantic, structured, and hybrid retrieval.
workspace — like a shared Google Doc for your data.
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).
Run at the start of any task that:
> ⚠️ **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
Try calling the Toolbelt MCP tool toolbelt_list_namespaces.
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:
POST https://app.toolbelt.ai/api/onboard
Content-Type: application/json
{}
Response shape:
{
"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.
**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):
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:
{
"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
. Reload your MCP connection to activate it." Most
clients pick up changes on next request; some need a restart.
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.
Anonymous accounts expire (30 days). To make persistent and increase
quota, prompt the user for an email and call:
POST https://app.toolbelt.ai/api/onboard/claim
Authorization: Bearer <token>
Content-Type: application/json
{"email": "user@example.com"}
User receives a verification email. Then:
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.
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 |
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
>
> 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."
Emit a brief connection status to the user:
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.
The bearer token returned by Phase 2 is a real credential. Treat it
with the same care as an API key.
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).
account's default workspace). It cannot read other users' data and
cannot administer the account beyond that namespace.
toolbelt entry fromthe MCP config file shown in Phase 3 — the agent loses access on
next reload, OR (b) sign in at
the token from the account UI.
the explicit user yes from Phase 3.
it only as tb_... (first 3 chars + ellipsis) in any user-facing
output. Never log or display the full value.
Toolbelt persists what an agent uploads or records. That persistence
is the value — and the risk if it's misused. Rules:
emails, clipboard contents, or any data the user didn't explicitly
ask you to use with Toolbelt. Ask: "Want me to upload
to your Toolbelt namespace for this query?"
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.
weren't relevant to what the user asked. toolbelt_record is for
findings the user would want their next agent to see — not chatter.
in 30 days. To delete sooner, the user can sign in at
controls there. Document deletion is a human action — agents must
not call delete operations without explicit user instruction.
Toolbelt's real value shows when multiple agents share state:
toolbelt_record → it lands on thenamespace timeline.
teammate — reads it via toolbelt_timeline or toolbelt_search and
builds on it.
toolbelt_share and forwardthe resulting URL.
Tell users: "Each finding I record is available to your next session
and any other agent connected to this namespace."
The toolbelt_share URL is a credential. Treat it accordingly:
access requires a valid token. toolbelt_share mints a token bound
to one namespace.
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.
toolbelt_share. Ask the userwhich 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.
to view active share tokens and revoke any they no longer want.
| Purpose | URL |
|---|---|
| --- | --- |
| Marketing site + pricing | |
| Docs (concepts, tools, self-hosting) | |
| Human web UI (sign in, billing, namespace UI) | |
| 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 |
| 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 noreply@toolbelt.ai, 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. |
Stay in your lane:
managed by the MCP client config.
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.
POST /api/onboard, `POST /api/onboard/claim, POST /api/onboard/claim/verify`. Everything else
is MCP.
共 1 个版本