name | yes | string | — | — | Tool identifier the agent will invoke. |
description | yes | string | — | — | What the tool does, shown to the agent. |
type | yes | enum | one of api_endpoint, code, derived | — | api_endpoint = HTTP call; code = sandboxed JS/Python; derived = wraps a platform built-in tool (base_tool + param_overrides) with preset params. |
url | no | string | — | — | For api_endpoint: target URL (legacy field, prefer endpoint_url). |
endpoint_url | no | string | — | — | For api_endpoint: target URL. |
method | no | enum | one of GET, POST, PUT, DELETE | — | For api_endpoint: HTTP method. |
headers | no | array of object | — | — | For api_endpoint: extra HTTP headers as [{key, value}] pairs. |
code | no | string | — | — | For code: source. Must export an async handle(input, ctx) function. The ctx argument lets the snippet call any enabled platform built-in via ctx.tools.<builtin_name>(input) and write audit lines via ctx.audit(event, data). |
language | no | enum | one of javascript, python | — | For code: runtime language. Auto-detected if omitted. |
input_schema | no | array of object | — | — | Tool input parameters, as an ordered LIST (not a JSON-schema object). Each item describes one argument the agent supplies. The platform builds the tool’s input schema from this list; a non-array is treated as zero parameters. Ignored for type=‘derived’ (the wrapped base_tool defines the schema) — pass []. Item fields below. |
enabled | no | boolean | — | — | When false, the tool is registered but not callable at chat time. |
collapsed | no | boolean | — | — | UI hint — start this entry collapsed in the dashboard. |
visible_to_user | no | boolean | — | — | When true, tool calls and results are shown to the power-user in the chat. |
base_tool | no | string | — | — | For type=‘derived’ tools: the built-in tool name this entry wraps (must be a wrappable:true entry from STATIC_INTERNAL_TOOLS — web_search, web_fetch, calculate, execute_code, email_send, email_status, email_read, present_public_file, show_file_excerpt, show_image, surface_file). |
param_overrides | no | array of object | — | — | For type=‘derived’ tools: per-parameter presets applied to the base_tool. Each item: {param: string, mode: ‘lock’|‘default’|‘append’, value: string}. lock=fixed (hidden from the agent); default=preset the agent may override; append=preset concatenated onto the agent’s value. |
result_note | no | string | — | — | Optional note appended to the tool result before the agent sees it. |
engine | no | enum | one of internal, anthropic | — | For type=‘derived’ tools wrapping web_search or web_fetch: which engine the wrapped tool uses. ‘anthropic’ uses Anthropic’s server-side bundle; ‘internal’ uses the platform tool stack. Mirrors builtin_tools.web_search_engine but scoped to this derived tool. |
anthropic_search_config | no | object | — | — | For type=‘derived’ tools wrapping web_search with engine=‘anthropic’: config merged into the Anthropic web_search wire object. Same shape as builtin_tools.web_search_anthropic_config. Item fields below. |
anthropic_fetch_config | no | object | — | — | For type=‘derived’ tools wrapping web_fetch with engine=‘anthropic’: config merged into the Anthropic web_fetch wire object. Item fields below. |