Tools
Tools define specific capabilities for your agents. A tool gives your agent the ability to do tasks. Tools are reusable — you can attach the same tool to multiple agents.
A tool exposes a single capability the LLM can invoke. Every tool carries a name and a purpose. The body of the tool can take one of three forms:
- Text content — A natural-language prompt that describes the action. The LLM interprets it directly. Best for advisory or reasoning tools that don't produce structured output.
- JSON schema — An OpenAI-style function-calling schema declaring the parameters the LLM should pass. Best for structured calls into upstream systems where the response shape matters.
- Python handler — Executable Python code. The LLM calls a single
handler(event, context)entry point and receives whatever you return. Enabling a Python handler locks the Tool Content section, since the spec is generated from the handler.
A tool's body is one of these — you choose Text or JSON, and enabling a Python handler drives the JSON schema for you.
For the full authoring reference — the Python handler contract, JSON schema patterns, worked examples, and attached files — see Tool Authoring Reference.
What You Can Build
Tools extend an agent beyond what the underlying LLM knows or can compute on its own — giving it access to your firm's conventions, your upstream systems, and deterministic code that runs the same way every time. A few illustrative examples:
- Drawing review checklist (Text) — Capture your firm's conventions for reviewing engineering drawings: title block fields, dimensioning standards, GD&T usage, sheet-size and revision rules. The agent applies the same checklist on every drawing instead of re-deriving "what good looks like" from the model's general knowledge — and updating the rules in one place updates every agent the tool is attached to.
- Create Jira ticket (JSON schema) — A function-calling spec that declares
project,summary,description,priority, andassigneewith the exact enums your workflow allows. The agent collects the right fields from the conversation and the call into your ticketing system has the shape it expects — no copy-paste between chat and a web form, no malformed payloads. - Beam deflection solver (Python handler) — A handler that takes load, length, modulus, and cross-section and returns a deflection curve. The LLM hands the math to code, the code returns numbers it can trust, and the agent narrates the result. Use this pattern whenever the answer must be repeatable and auditable — finance calculations, unit conversions, table lookups against an attached materials CSV, or any computation where "the model did it in its head" isn't good enough.
- Web / API search (Python handler) — A handler that takes a query and optional filters, calls out to a search API or vendor REST endpoint, and returns the top hits with title, URL, and snippet. Use this pattern whenever the agent needs information that lives outside the conversation and outside the model's training cutoff — current standards documents, an internal knowledge base, supplier catalogs, regulatory filings.
Each kind plays to a different strength: text encodes judgment, JSON encodes contracts with other systems, and Python encodes deterministic work. A well-built agent typically carries a mix.
Creating a Tool
- Go to the Create page and switch to the Tools tab.
- Click the New button and select Tool.
- Fill in the following fields:
- Name — A short, descriptive name for the tool.
- Version — Read-only. The platform manages this for you.
- Purpose (Sent to the LLM for context) — A brief explanation of what this tool does. This text is passed to the LLM so it can decide when to apply the tool.
- Define the tool body — either Text or JSON content, or enable a Python handler (see below).
- Optionally add trigger conditions and tags.
- Click Create.
Tool Content
The Tool Content section is where you define the tool body. When you are not using a Python handler, two buttons let you pick the mode:
- Text — A free-form prompt. Type the instruction or knowledge that powers the tool into the Content field.
- JSON — A function-calling schema. Build it with the schema editor, which offers a tree view (Schema) and a raw JSON view (Raw), plus Add field, Add list, and Remove last actions.
A tool may only specify text or JSON content. Switching modes clears the other field, so you will be asked to confirm before discarding content. New tools default to Text mode; an existing tool opens in whichever mode it already uses.
For experienced users, we recommend using JSON tool specifications per the function-calling format. See the Tool Authoring Reference for a worked JSON example.
Python Handler
Enable Python handler to back the tool with Python code that the LLM can execute. When enabled, the Tool Content section is locked to a JSON schema generated from your handler — you populate it with one click rather than authoring it by hand.
- Upload your handler in the Attached Files section above the code editor. Each upload event accepts exactly one file — either a single
.pyfile, or a single.ziparchive when the handler ships with helpers, fixtures, or data files. Zip uploads are unpacked in the browser and re-uploaded under one shared folder, so the runtime preserves the directory structure and relative imports resolve as expected. - Click Generate Docs from Python Code. The LLM reads the handler's docstring and parameter annotations and produces the JSON schema (and a description) into the locked Tool Content section. Review the spec against the handler docstring — they should agree.
- Save the tool. Once saved, attach it to an Agent in the Agents tab to make it callable in conversations.
The entry point is a single function named handler with the signature handler(event: dict, context: dict) -> dict.
See the Tool Authoring Reference for the full handler contract, package import rules, attached files, and worked examples.
Trigger Conditions
Trigger conditions tell the agent when a tool should activate. Click Add Condition to add one or more conditions to a tool. Each condition is a plain-text description of a scenario ("When should this tool trigger?").
For example, a "Code Review" tool might have trigger conditions like:
- "When the user asks for a code review"
- "When the user shares a code snippet and asks for feedback"
- "When the user asks about best practices for a piece of code"
These conditions help the agent decide when to bring this tool into play versus relying on its other tools or general knowledge.
Managing Tools
Your tools appear in the left sidebar when the Tools tab is selected, grouped into sections such as Your Tools, Shared with You, and any organization or Third Loop tools available to you. You can:
- Select a tool to view and edit it.
- Rename a tool from its "⋯" menu.
- Share a tool from its "⋯" menu to grant other users or teams Edit or View access. Tools shared with you appear under Shared with You; you can Leave a shared tool from its menu.
- Delete a tool from its "⋯" menu. You will be asked to confirm.
- Search for tools using the search bar.
Tags
Add tags to your tools for organization. Tags help you categorize tools by topic, department, or however makes sense for your use case. Type a tag and press Enter to add it.