Skip to main content

Tools Commands

See Tools module docs for permissions and data model.

soat create-tool

Create a tool

  • Method: POST
  • Path: /api/v1/tools

Usage

soat create-tool --name <string>

Options

--project-id

Public ID of the project

  • Source: body
  • Required: no
  • Type: string
--name

Tool name

  • Source: body
  • Required: yes
  • Type: string
--type

Tool type (default http)

  • Source: body
  • Required: no
  • Type: enum("http", "client", "mcp", "soat", "pipeline", "discussion")
--description

What the tool does

  • Source: body
  • Required: no
  • Type: string
--parameters

JSON Schema for tool input

  • Source: body
  • Required: no
  • Type: object
--execute

Execution config for http tools. Supported fields: url (required), method (default POST), headers, and body_mode. The url may contain \{paramName\} placeholders (e.g. /users/\{userId\}) that are replaced at call time with the corresponding tool argument value (URL-encoded). Arguments consumed as path parameters are excluded from the query string and request body. body_mode is json (default) or multipart. In multipart mode the merged tool arguments are sent as a multipart/form-data body: scalar fields become plain form fields and a field shaped like \{ content_type, filename, data_base64 \} is decoded from base64 and attached as a file part (the hardcoded Content-Type: application/json is dropped so fetch sets the multipart boundary itself).

  • Source: body
  • Required: no
  • Type: object
--mcp

MCP server config (url, headers)

  • Source: body
  • Required: no
  • Type: object
--actions

Allowlist of actions. For soat tools: SOAT platform action names (required). For mcp tools: an optional allowlist of MCP tool names to scope the server surface — omit or set null to expose every tool the MCP server offers. Ignored for other tool types.

  • Source: body
  • Required: no
  • Type: array<string>
--preset-parameters

Fixed parameters merged into every soat tool call. Keys matching fields in the action's input schema are removed from the schema shown to the model and injected automatically at execution time.

  • Source: body
  • Required: no
  • Type: object
--pipeline

Pipeline definition for pipeline tools. See the pipeline field on the Tool schema for the full structure.

  • Source: body
  • Required: no
  • Type: object
--discussion-id

For discussion tools: the ID of the discussion to invoke.

  • Source: body
  • Required: no
  • Type: string
--output-mapping

Universal JSON Logic mapping applied to the tool's raw result. See the output_mapping field on the Tool schema for details.

  • Source: body
  • Required: no
  • Type: object

soat list-tools

List tools

  • Method: GET
  • Path: /api/v1/tools

Usage

soat list-tools

Options

--project-id

Project public ID to filter by

  • Source: query
  • Required: no
  • Type: string

soat get-tool

Get a tool

  • Method: GET
  • Path: /api/v1/tools/{tool_id}

Usage

soat get-tool --tool-id <string>

Options

--tool-id

  • Source: path
  • Required: yes
  • Type: string

soat update-tool

Update a tool

  • Method: PATCH
  • Path: /api/v1/tools/{tool_id}

Usage

soat update-tool --tool-id <string>

Options

--tool-id

  • Source: path
  • Required: yes
  • Type: string
--name

  • Source: body
  • Required: no
  • Type: string
--type

  • Source: body
  • Required: no
  • Type: enum("http", "client", "mcp", "soat", "pipeline")
--description

  • Source: body
  • Required: no
  • Type: string \| null
--parameters

  • Source: body
  • Required: no
  • Type: object
--execute

Execution config for http tools. Supported fields: url (required), method (default POST), headers, and body_mode. The url may contain \{paramName\} placeholders (e.g. /users/\{userId\}) that are replaced at call time with the corresponding tool argument value (URL-encoded). Arguments consumed as path parameters are excluded from the query string and request body. body_mode is json (default) or multipart. In multipart mode the merged tool arguments are sent as a multipart/form-data body: scalar fields become plain form fields and a field shaped like \{ content_type, filename, data_base64 \} is decoded from base64 and attached as a file part (the hardcoded Content-Type: application/json is dropped so fetch sets the multipart boundary itself).

  • Source: body
  • Required: no
  • Type: object
--mcp

  • Source: body
  • Required: no
  • Type: object
--actions

Allowlist of actions. For soat tools: SOAT platform action names. For mcp tools: an optional allowlist of MCP tool names to scope the server surface (null exposes every tool). Ignored for other tool types.

  • Source: body
  • Required: no
  • Type: array<string>
--preset-parameters

Fixed parameters merged into every soat tool call. Keys matching fields in the action's input schema are removed from the schema shown to the model and injected automatically at execution time.

  • Source: body
  • Required: no
  • Type: object
--pipeline

Pipeline definition for pipeline tools. See the pipeline field on the Tool schema for the full structure.

  • Source: body
  • Required: no
  • Type: object
--discussion-id

For discussion tools: the ID of the discussion to invoke.

  • Source: body
  • Required: no
  • Type: string \| null
--output-mapping

Universal JSON Logic mapping applied to the tool's raw result. See the output_mapping field on the Tool schema for details.

  • Source: body
  • Required: no
  • Type: object

soat delete-tool

Delete a tool

  • Method: DELETE
  • Path: /api/v1/tools/{tool_id}

Usage

soat delete-tool --tool-id <string>

Options

--tool-id

  • Source: path
  • Required: yes
  • Type: string

soat call-tool

Call a tool

  • Method: POST
  • Path: /api/v1/tools/{tool_id}/call

Usage

soat call-tool --tool-id <string>

Options

--tool-id

  • Source: path
  • Required: yes
  • Type: string
--action

For soat tools: the action name (must be in the tool's actions list). For mcp tools: the MCP tool name to invoke (must be in the tool's actions allowlist when one is set). Ignored for http tools.

  • Source: body
  • Required: no
  • Type: string
--input

Input parameters for the tool call. These are merged with the tool's preset_parameters before execution (caller-supplied values take precedence).

  • Source: body
  • Required: no
  • Type: object<string, unknown>