When to create a custom tool
You have an internal API or service. If a step in your workflow means calling an internal endpoint, a ticketing system, or a proprietary data source, a custom tool gives the agent a typed, reliable way to do it instead of hand-written curl commands. You repeat the same multi-step operation. Recurring logic like normalizing scan output, enriching a finding, or querying an asset inventory is more reliable as a single tool than as instructions the agent re-derives each time. You want to wrap proprietary tooling. Custom tools let you expose your own scanners or scripts to the agent with a clear contract, so it knows exactly what inputs to pass and what to expect back.Anatomy of a custom tool
Every custom tool Neo builds has the same structure:- Source code: a TypeScript or Python function that contains the tool’s logic and runs inside your sandbox.
- Input schema: the typed parameters the agent must provide when it calls the tool.
- Output schema: the shape of the result the tool returns, so the agent can reason about it.
- When to use: a description of the situations this tool is for, so the agent knows when to reach for it.
- Timeout: how long the tool is allowed to run before it is stopped.
- Language: whether the toolkit’s tools are written in TypeScript or Python.
- Dependencies: packages the tools need, installed when the toolkit is set up.
- Setup code: initialization that runs before the tools, such as configuring a client.
- Environment variables: configuration and credentials made available to the tools at runtime.
- Metadata: tags and descriptions for organizing and discovering toolkits.
How to create a custom tool
You create and manage custom tools through Neo itself by describing what you want: the operation the tool should perform, its inputs, and what it should return. Neo writes the function, defines the input and output schema, registers it inside a toolkit, and tests it to confirm it runs. You can be as specific or as high-level as you like, and Neo fills in the gaps based on your description. For example:How tools are loaded
Once created, a custom tool can reach your agents in three ways:- On-demand: the agent discovers and calls the tool only when a task needs it.
- Pinned: the tool loads automatically on every task.
- Attached: the tool is scoped to a specific custom agent, so only that agent sees it.

