Like humans, your AI agents are limited by the quality of their tools. We're building an open toolbox that lets them do their best work.
$ npm i @include-tools/toolbox ✓ toolbox installed $ toolbox install github.com/include-tools/google ✓ Connected as [email protected] (personal) ✓ Connected as [email protected] (work)
toolset.json to pick exactly which tools your agent has and how it uses them.toolbox install github.com/include-tools/google inside the working directory of your agent.cloudflare/agents contributor (where code mode began).Using more than one account is first-class in toolbox. Authorize a second account, and toolbox automatically adds a <provider>_account field to the Code Mode SDK, so your agent can choose the right account by name (e.g. Personal and Work). No messing around with multiple MCP servers.
wait.User reviews emails to be sent in approval queues, but is unhappy with one.
The wait tool returns the feedback, so the LLM starts again automatically.
A new approval appears with the requested revision.
Your agent touches real data — real email, real calendar, real accounts. We designed the trust layer before the catalog, so every tool you install arrives with the same boundaries in place.
None of these are magic. Each one does one specific thing, and together they mean a compromised prompt can't quietly drain your inbox.
Authorize multiple accounts of the same service with toolbox auth. Your agent addresses them by name in code — gmail.send({ google_account: "work", … }) — so work and personal never get mixed up at the call site.
Every tool package ships with a manifest of SHA-256 hashes. Those hashes land in your *.toolset.lock on install, and Toolbox re-hashes the cached bytes on every tool load — not just install, every invocation — refusing to run on mismatch. The code you reviewed once is the code that runs every time, byte-for-byte.
Your credentials live in an age-encrypted store the Toolbox daemon opens once per daemon start. Unlock with a password or a single OS-level gesture; lock it again when you step away. While locked, no tool can reach your accounts — not your own, and not a compromised one. While unlocked, the daemon hands credentials to the transport layer per-tool — your agent and the notebook never see the raw secret.
Tools run in an isolated JavaScript runtime with no filesystem, process, or OS access by default. Credentials are attached at the network layer from an encrypted store outside the runtime — your tool code (and your agent) never sees the raw secret.
Every tool declares the hosts it's allowed to reach. Calls outside that allowlist are blocked at the runtime layer. This is the boundary that makes isolation meaningful — a rogue fetch to an attacker-controlled domain simply doesn't go through.
Your agent's working state — variables it computed, files it fetched, intermediate results — lives in a durable workspace. If a tool call fails halfway through a task, the agent can keep the successful work, inspect the error, adjust its code, and retry from the point of failure instead of starting over.
Each tool exposes a typed TypeScript manifest. Multi-account is part of the call signature, not a side channel. Network and data-access rules are declared per-tool in the manifest and enforced at the runtime layer — not by hoping the agent behaves.
Packages are distributed on npm under @include-tools/* and installable via toolbox install github.com/include-tools/<name>. Lockfile-pinned, reproducible, check-into-git.
github.com/include-tools/google-workspacetoolset.json — like package.json, but for agents. (and better)Every project has a package.json that declares its dependencies, pins versions, and makes the build reproducible. Your agent needs the same.
A toolset.json pins which packages your agent can use and at which exact version, and lists the specific tools it exposes — with a companion lockfile that verifies every install. Check it into your repo. Share it with your team. Reproduce environments. Scope per project. Updates only happen when you run the package manager — never silently behind your back.
The toolset.json also configures how your tools work.
Want to limit a tool to just posting on two slack channels, easy. Ask for approval when sending external emails, but free range internally? easy.
{
"name": "my-app",
"dependencies": {
"react": "^18.2.0",
"lodash": "^4.17.0",
"zod": "^3.22.0"
}
}{
"packages": {
"github.com/include-tools/google-workspace": "1.2.0"
}
}The bytes you installed are the bytes that run — every time. Each tool package ships with a manifest that lists every tool's SHA-256 hash; Toolbox re-hashes the cached bytes on every tool load — not just at install — and refuses to run on mismatch. (Cryptographic signing is planned. Today's guarantee is reproducibility of bytes, not identity of authors.)
include.tools plugs into the agent runtime you already use. One install command — no framework rewrite, no config file archaeology.
Works with OpenClaw via Pi-extension, direct integration coming. Works with any harness that can make MCP tool calls.
Toolbox is a local server that runs on your computer. Your API keys, OAuth credentials, your logs, and your sessions all stored locally. We don't host execution. We don't proxy your tool calls remotely. There is no middleman.
Here's the path every agent super-tool call takes.
When your agent harness launches, a toolbox session process starts (MCP / Pi-extension over stdio). The toolbox session provides the super-tool to your agent harness. When your agent makes a tool call, a persistent sandboxed TypeScript notebook executes it as a cell. Any tool calls invoked in that cell run in a separate sandbox. This ensures agents and tools can only communicate via serialized JS arguments, and lets us adjust the network and filesystem surface for each sandbox separately.
A separate toolbox server process holds your encrypted secrets, unlocking on start with a passphrase and surviving toolbox session process restarts. It attaches credentials at the transport layer, so neither the notebook nor any tool sandbox ever sees a credential. Every outbound tool request is checked against a per-tool deny-by-default host allowlist declared in the tool's manifest.
We're letting developers in as we're ready. Leave your email — we'll reach out when the public launch is live.
We'll delete your email after sending one notification, promise.