v1

latestOpenAPI 3.0.12026-07-226992320.0 KB
Integration Tools

Create Tool

Creates a new API tool under the specified integration. Define the HTTP endpoint, method, and parameter schema the agent will use when invoking the tool. Returns the created tool including its toolId, which is required for subsequent get, update, delete, and execute calls.

post/v1/integrations/{integrationId}/tools

Path parameters

integrationIdstring required

Unique identifier of the integration to create the tool under.

Request body

namestring required

Action-oriented, snake_case name that uniquely identifies this tool within the integration. AI agents use this name to select the correct tool when deciding which operation to invoke. Must be unique within the integration. Good examples: 'get_customer', 'create_order', 'cancel_subscription'.

descriptionstring required

Explanation of what this tool does and the exact conditions under which an AI agent should invoke it. Agents rely on this description to match a task to the correct tool — be specific about the action, the resource it operates on, and any inputs the agent must supply.

method'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' required

HTTP method used when invoking this tool's endpoint. GET retrieves a resource without side effects. POST creates a new resource. PUT fully replaces an existing resource. PATCH partially updates an existing resource. DELETE removes a resource.

urlstring required

Full URL of the API endpoint this tool calls. Supports {{variable}} placeholders for path segments the agent resolves at runtime (e.g., {{customerId}} in the path). Path variables embedded here do not need to be redeclared in queryParams.

bodyParamsobject

Request body payload sent when this tool is invoked, as a JSON object. Values support {{variable}} placeholders that the agent resolves at runtime. Provide only for POST, PUT, and PATCH tools. Leave empty or omit for GET and DELETE — body content is ignored for those methods.

Example request

{
  "name": "get_customer",
  "description": "Fetches a Shopify customer record by customer ID. Call this tool when you need to look up customer details such as name, email, or order history.",
  "method": "GET",
  "url": "https://my-store.myshopify.com/admin/api/2024-01/customers/{{customerId}}.json",
  "headers": [
    {
      "key": "Content-Type",
      "value": "application/json"
    }
  ],
  "queryParams": [
    {
      "key": "status",
      "value": "{{status}}"
    }
  ],
  "bodyParams": {
    "first_name": "{{firstName}}",
    "email": "{{email}}"
  }
}

Response

Created

toolIdstring

Unique identifier for this tool. Use this value as toolId when executing, updating, or deleting this tool.

integrationIdstring

Unique identifier of the integration this tool belongs to. Use this value as integrationId when making requests scoped to the parent integration.

namestring

Action-oriented name for this tool that identifies the operation it performs. AI agents use this name to match a task to the correct tool. Follows snake_case convention (e.g., 'get_customer', 'create_order').

descriptionstring

Explanation of what this tool does and when an AI agent should invoke it. Agents rely on this description to decide whether this tool matches the current task. A good description names the action, the resource it operates on, and required inputs.

method'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'

HTTP method used when invoking this tool's endpoint. GET retrieves a resource without side effects. POST creates a new resource. PUT fully replaces an existing resource. PATCH partially updates an existing resource. DELETE removes a resource.

urlstring

Full URL of the API endpoint this tool calls, including any {{variable}} placeholders that the agent resolves at runtime using the declared parameters. Path segments wrapped in {{}} (e.g., {{orderId}}) are substituted before the request is sent.

scope'local' | 'community'

Visibility scope of this tool. 'local' means the tool is private to your account and only accessible within your integrations. 'community' means the tool is shared and discoverable by other users.

headersJsonNode

Dynamic key-value pairs that were passed to the agent at call start for personalisation. Keys correspond to variable names defined in the agent's configuration (e.g., 'customer_name', 'account_id'). Null or empty if no dynamic variables were provided when the call was created.

queryParamsJsonNode

Dynamic key-value pairs that were passed to the agent at call start for personalisation. Keys correspond to variable names defined in the agent's configuration (e.g., 'customer_name', 'account_id'). Null or empty if no dynamic variables were provided when the call was created.

bodyParamsJsonNode

Dynamic key-value pairs that were passed to the agent at call start for personalisation. Keys correspond to variable names defined in the agent's configuration (e.g., 'customer_name', 'account_id'). Null or empty if no dynamic variables were provided when the call was created.

createdAtstring date-time

UTC timestamp when this tool was created, in ISO 8601 format. Use for auditing or determining how long the tool has been active.

updatedAtstring date-time

UTC timestamp when this tool was last modified, in ISO 8601 format. Use to detect configuration changes or invalidate cached tool definitions.

Example response

{
  "toolId": "tool_X9pLm2Wq8Rt3",
  "integrationId": "intg_AuUKK371Spr5",
  "name": "get_order_details",
  "description": "Fetches order details from Shopify by order ID. Call this tool when you need to retrieve order status, line items, or shipping info.",
  "method": "GET",
  "url": "https://my-store.myshopify.com/admin/api/2024-01/orders/{{orderId}}.json",
  "scope": "local",
  "headers": {
    "customer_name": "Michael",
    "account_id": "ACC-001"
  },
  "queryParams": {
    "customer_name": "Michael",
    "account_id": "ACC-001"
  },
  "bodyParams": {
    "customer_name": "Michael",
    "account_id": "ACC-001"
  },
  "createdAt": "2024-04-20T10:00:00.000Z",
  "updatedAt": "2024-04-21T08:30:00.000Z"
}