Tool Creation
Tools are the building blocks of everything in Assist. A tool is a piece of code that connects to an external system, processes data, or performs an action. Once you create a tool, it can be used by AI agents, sandcastle apps, MCP servers, and anyone on your team.
You write tools in TypeScript. They run in a secure, sandboxed environment managed by Assist -- not on your laptop, not on a shared server. Each tool has its own permissions, version history, and execution logs.
Who can create tools
- Any workspace member can create tools.
- Tools belong to the workspace. Anyone in the workspace can discover and use them.
What you can do with a tool
- Connect to any external API or system (with network permissions configured)
- Accept structured input parameters
- Access environment variables and API keys securely
- Return data to the AI agent, sandcastle app, or MCP client that called it
- Version your code with commit messages and roll back if something breaks
- Test the tool before publishing it
What tools cannot do
- Access the local filesystem of any machine
- Make network requests to domains that are not explicitly allowed
- Access environment variables that are not configured for the tool
- Run longer than 30 seconds per execution
- Use more than 512 MB of memory per execution
How tools work
When you create a tool, you write a handler function that receives input data and environment variables, does its work, and returns a result. The code runs in a Deno sandbox -- an isolated environment that only has access to the network domains and environment variables you configure.
Tools go through a versioning lifecycle: you write code, save it as a draft, commit it with a message, and publish it to make it live. You can always roll back to a previous version. Every execution is logged with its input, output, duration, and status so you can debug issues and track usage.
Other systems in Assist discover your tools automatically. When an AI agent needs to find a tool, it searches by description and the system returns the best matches. You do not need to manually wire tools into agents or apps -- they find tools on their own.