Custom tools

Custom tools let an assistant or agent reach outside the platform — calling your own API, posting to a webhook, or sending a notification — on top of the built-in tools (knowledge search, memory, and so on) that are always available.

Types

  • HTTP — a fixed external endpoint with a method and URL. Its URL can contain {paramName}-style placeholders, which get filled in from the model's own arguments (whatever matches the tool's input schema); anything the model passes that isn't used as a path parameter is added as query parameters (for GET/DELETE) or merged into the JSON body (for POST/PUT/PATCH).
  • Webhook — simpler and fixed-shape: always a POST, and the model's entire input becomes the JSON body, verbatim.
  • Send email — emails people the model names, but only the ones your policy allows: people already known to your workspace (members, and leads you have marked contacted or qualified), addresses at domains you list, or anyone with a person approving every email. Each person can receive at most 3 emails a day.
  • Notify — sends a message by email, Slack, Discord or Telegram. You list the destinations (a member, an address, a Slack or Discord channel, a Telegram chat) and give each a label; the model can only choose one of those labels and write the message, never a destination of its own.

HTTP and webhook tools (and Notify, for Slack, Discord and Telegram) can use a connection (see BYOK) for authentication, so the request carries a real auth header without the model ever seeing the secret.

Tools can also come from a remote MCP server, which publishes a set of tools for you to connect. For reusable written instructions rather than actions, see Skills.

Input schema

Every custom tool has an input schema — a description of what arguments the model may pass when it calls the tool. This is what actually shows up as the tool's "parameters" to the model; it's independent from the tool's request configuration (its URL, method, etc.), and for HTTP tools specifically, it's also what supplies the values for any path parameters and query/body fields.

Approval

Any custom tool can require approval: instead of running immediately, the model's call pauses until a human approves or denies it. HTTP and webhook tools default to not requiring approval; notify defaults to requiring it, since sending a message to a person is a real, hard-to-undo side effect. You can change either default per tool.