# Create a new version of a toolbox

`POST /toolboxes/{name}/versions`

Creates a new toolbox version, provisioning the toolbox itself if it does not already exist.

## Parameters

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `name` | `string` | Yes | The name of the toolbox. If the toolbox does not exist, it will be created. |

### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `api-version` | `string` | Yes | The API version to use for this operation. |

## Request Body

Content-Type: `application/json` *(required)*

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `description` | `string` | No | A human-readable description of the toolbox. |
| `metadata` | `object` | No | Arbitrary key-value metadata to associate with the toolbox. |
| `tools` | `(CodeInterpreterToolboxTool \| FileSearchToolboxTool \| WebSearchToolboxTool \| ShellToolboxTool \| MCPToolboxTool \| AzureAISearchToolboxTool \| OpenApiToolboxTool \| A2AToolboxTool \| A2APreviewToolboxTool \| BrowserAutomationPreviewToolboxTool \| BrowserAutomationToolboxTool \| ReminderPreviewToolboxTool \| WorkIQPreviewToolboxTool \| FabricIQPreviewToolboxTool \| WebIQPreviewToolboxTool \| ToolboxSearchPreviewToolboxTool \| ToolSearchToolboxTool)[]` | Yes | The list of tools to include in this version. |
| `skills` | `ToolboxSkillReference[]` | No | The list of skill sources to include in this version. A skill reference specifies a skill name and optionally a version. If version is omitted, the skill's default version is used. |
| `policies` | `ToolboxPolicies` | No | Policy configuration for a toolbox, including content safety and other governance settings. |

### `tools` — `(CodeInterpreterToolboxTool | FileSearchToolboxTool | WebSearchToolboxTool | ShellToolboxTool | MCPToolboxTool | AzureAISearchToolboxTool | OpenApiToolboxTool | A2AToolboxTool | A2APreviewToolboxTool | BrowserAutomationPreviewToolboxTool | BrowserAutomationToolboxTool | ReminderPreviewToolboxTool | WorkIQPreviewToolboxTool | FabricIQPreviewToolboxTool | WebIQPreviewToolboxTool | ToolboxSearchPreviewToolboxTool | ToolSearchToolboxTool)[]`

The list of tools to include in this version.

**One of the following:**

#### `code_interpreter` — `code_interpreter (CodeInterpreterToolboxTool)`

A code interpreter tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `code_interpreter` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `allowed_callers` | `enum` | No | _Enum:_ `direct`, `programmatic` |
| `container` | `string \| OpenAI.AutoCodeInterpreterToolParam` | No | The code interpreter container. Can be a container ID or an object that specifies uploaded file IDs to make available to your code, along with an optional `memory_limit` setting. If not provided, the service assumes auto. |

##### `container` — `string | OpenAI.AutoCodeInterpreterToolParam`

The code interpreter container. Can be a container ID or an object that specifies uploaded file IDs to make available to your code, along with an optional `memory_limit` setting. If not provided, the service assumes auto.

**One of the following:**

###### `string` — `string`

| Type | Description |
|------|-------------|
| `string` | — |

###### `OpenAI.AutoCodeInterpreterToolParam` — `OpenAI.AutoCodeInterpreterToolParam`

Configuration for a code interpreter container. Optionally specify the IDs of the files to run the code on.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Always `auto`. _Default:_ `"auto"` _Constant:_ `auto` |
| `file_ids` | `string[]` | No | An optional list of uploaded files to make available to your code. |
| `memory_limit` | `enum` | No | _Enum:_ `1g`, `4g`, `16g`, `64g` |
| `network_policy` | `OpenAI.ContainerNetworkPolicyDisabledParam \| OpenAI.ContainerNetworkPolicyAllowlistParam` | No | Network access policy for the container. |

- **`network_policy`** — `OpenAI.ContainerNetworkPolicyDisabledParam | OpenAI.ContainerNetworkPolicyAllowlistParam`

Network access policy for the container.

**One of the following:**

- **`disabled`** — `disabled (OpenAI.ContainerNetworkPolicyDisabledParam)`

Network access policy for the container.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Disable outbound network access. Always `disabled`. _Constant:_ `disabled` |

- **`allowlist`** — `allowlist (OpenAI.ContainerNetworkPolicyAllowlistParam)`

Network access policy for the container.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Allow outbound network access only to specified domains. Always `allowlist`. _Constant:_ `allowlist` |
| `allowed_domains` | `string[]` | Yes | A list of allowed domains when type is `allowlist`. |

#### `file_search` — `file_search (FileSearchToolboxTool)`

A file search tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `file_search` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `max_num_results` | `OpenAI.integer` | No | _Format:_ `int64` |
| `ranking_options` | `OpenAI.RankingOptions` | No |  |
| `filters` | `OpenAI.ComparisonFilter \| OpenAI.CompoundFilter \| null` | No |  |
| `vector_store_ids` | `string[]` | No | The IDs of the vector stores to search. |

##### `ranking_options` — `OpenAI.RankingOptions`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `ranker` | `OpenAI.RankerVersionType` | No | _Enum:_ `auto`, `default-2024-11-15` |
| `score_threshold` | `OpenAI.numeric` | No | _Format:_ `double` |
| `hybrid_search` | `OpenAI.HybridSearchOptions` | No |  |

###### `hybrid_search` — `OpenAI.HybridSearchOptions`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `embedding_weight` | `OpenAI.numeric` | Yes | _Format:_ `double` |
| `text_weight` | `OpenAI.numeric` | Yes | _Format:_ `double` |

##### `filters` — `OpenAI.ComparisonFilter | OpenAI.CompoundFilter | null`

**One of the following:**

###### `OpenAI.Filters` — `OpenAI.ComparisonFilter | OpenAI.CompoundFilter`

**One of the following:**

- **`OpenAI.ComparisonFilter`** — `OpenAI.ComparisonFilter`

A filter used to compare a specified attribute key to a given value using a defined comparison operation.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Specifies the comparison operator: `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `nin`. - `eq`: equals - `ne`: not equal - `gt`: greater than - `gte`: greater than or equal - `lt`: less than - `lte`: less than or equal - `in`: in - `nin`: not in _Default:_ `"eq"` _Enum:_ `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `nin` |
| `key` | `string` | Yes | The key to compare against the value. |
| `value` | `string \| OpenAI.numeric \| boolean \| (string \| OpenAI.numeric)[]` | Yes | The value to compare against the attribute key; supports string, number, or boolean types. |

- **`value`** — `string | OpenAI.numeric | boolean | (string | OpenAI.numeric)[]`

The value to compare against the attribute key; supports string, number, or boolean types.

**One of the following:**

- **`string`** — `string`

| Type | Description |
|------|-------------|
| `string` | — |

- **`OpenAI.numeric`** — `OpenAI.numeric`

| Type | Description |
|------|-------------|
| `OpenAI.numeric` | _Format:_ `double` |

- **`boolean`** — `boolean`

| Type | Description |
|------|-------------|
| `boolean` | — |

- **`(string | OpenAI.numeric)[]`** — `(string | OpenAI.numeric)[]`

Type: `(string | OpenAI.numeric)[]`

- **`OpenAI.CompoundFilter`** — `OpenAI.CompoundFilter`

Combine multiple filters using `and` or `or`.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Type of operation: `and` or `or`. _Enum:_ `and`, `or` |
| `filters` | `(OpenAI.ComparisonFilter \| any)[]` | Yes | Array of filters to combine. Items can be `ComparisonFilter` or `CompoundFilter`. |

- **`filters`** — `(OpenAI.ComparisonFilter | any)[]`

Array of filters to combine. Items can be `ComparisonFilter` or `CompoundFilter`.

**One of the following:**

- **`OpenAI.ComparisonFilter`** — `OpenAI.ComparisonFilter`

A filter used to compare a specified attribute key to a given value using a defined comparison operation.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Specifies the comparison operator: `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `nin`. - `eq`: equals - `ne`: not equal - `gt`: greater than - `gte`: greater than or equal - `lt`: less than - `lte`: less than or equal - `in`: in - `nin`: not in _Default:_ `"eq"` _Enum:_ `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `nin` |
| `key` | `string` | Yes | The key to compare against the value. |
| `value` | `string \| OpenAI.numeric \| boolean \| (string \| OpenAI.numeric)[]` | Yes | The value to compare against the attribute key; supports string, number, or boolean types. |

- **`value`** — `string | OpenAI.numeric | boolean | (string | OpenAI.numeric)[]`

The value to compare against the attribute key; supports string, number, or boolean types.

**One of the following:**

- **`string`** — `string`

| Type | Description |
|------|-------------|
| `string` | — |

- **`OpenAI.numeric`** — `OpenAI.numeric`

| Type | Description |
|------|-------------|
| `OpenAI.numeric` | _Format:_ `double` |

- **`boolean`** — `boolean`

| Type | Description |
|------|-------------|
| `boolean` | — |

- **`(string | OpenAI.numeric)[]`** — `(string | OpenAI.numeric)[]`

Type: `(string | OpenAI.numeric)[]`

- **`any`** — `any`

| Type | Description |
|------|-------------|
| `any` | — |

###### `null` — `null`

| Type | Description |
|------|-------------|
| `null` | — |

#### `web_search` — `web_search (WebSearchToolboxTool)`

A web search tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `web_search` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `external_web_access` | `boolean` | No | Allow live internet access for web search. Defaults to true when omitted. When false, the web search tool runs in offline/cache-only mode and will not fetch new external content. _Default:_ `true` |
| `filters` | `OpenAI.WebSearchToolFilters \| null` | No |  |
| `user_location` | `OpenAI.WebSearchApproximateLocation \| null` | No |  |
| `search_context_size` | `enum` | No | High level guidance for the amount of context window space to use for the search. One of `low`, `medium`, or `high`. `medium` is the default. _Default:_ `"medium"` _Enum:_ `low`, `medium`, `high` |
| `custom_search_configuration` | `WebSearchConfiguration` | No | A web search configuration for bing custom search |

##### `filters` — `OpenAI.WebSearchToolFilters | null`

**One of the following:**

###### `OpenAI.WebSearchToolFilters` — `OpenAI.WebSearchToolFilters`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `allowed_domains` | `string[] \| null` | No |  |

###### `null` — `null`

| Type | Description |
|------|-------------|
| `null` | — |

##### `user_location` — `OpenAI.WebSearchApproximateLocation | null`

**One of the following:**

###### `OpenAI.WebSearchApproximateLocation` — `OpenAI.WebSearchApproximateLocation`

The approximate location of the user.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of location approximation. Always `approximate`. _Default:_ `"approximate"` _Constant:_ `approximate` |
| `country` | `string \| null` | No |  |
| `region` | `string \| null` | No |  |
| `city` | `string \| null` | No |  |
| `timezone` | `string \| null` | No |  |

###### `null` — `null`

| Type | Description |
|------|-------------|
| `null` | — |

##### `custom_search_configuration` — `WebSearchConfiguration`

A web search configuration for bing custom search

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `project_connection_id` | `string` | Yes | Project connection id for grounding with bing custom search |
| `instance_name` | `string` | Yes | Name of the custom configuration instance given to config. |

#### `shell` — `shell (ShellToolboxTool)`

A shell tool stored in a toolbox. This model is additive to toolbox configuration and does not modify the OpenAI tool contract or existing toolbox tool definitions.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the tool. Always `shell`. _Constant:_ `shell` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `allowed_callers` | `enum` | No | _Enum:_ `direct`, `programmatic` |
| `environment` | `ToolboxShellContainerAutoEnvironment \| ToolboxShellContainerReferenceEnvironment` | Yes | An execution environment for a shell tool stored in a toolbox. This environment model is scoped to toolbox configuration and does not modify the OpenAI shell environment contract. |

##### `environment` — `ToolboxShellContainerAutoEnvironment | ToolboxShellContainerReferenceEnvironment`

An execution environment for a shell tool stored in a toolbox. This environment model is scoped to toolbox configuration and does not modify the OpenAI shell environment contract.

**One of the following:**

###### `container_auto` — `container_auto (ToolboxShellContainerAutoEnvironment)`

An automatically provisioned container environment for a shell tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the shell execution environment. Always `container_auto`. _Constant:_ `container_auto` |
| `file_ids` | `string[]` | No | An optional list of uploaded files to make available to your code. |
| `memory_limit` | `enum` | No | _Enum:_ `1g`, `4g`, `16g`, `64g` |
| `skills` | `(OpenAI.SkillReferenceParam \| OpenAI.InlineSkillParam)[]` | No | An optional list of skills referenced by id or inline data. |
| `network_policy` | `ToolboxShellNetworkPolicyDisabled` | No | Network access policy for an automatically provisioned toolbox shell container. |

- **`skills`** — `(OpenAI.SkillReferenceParam | OpenAI.InlineSkillParam)[]`

An optional list of skills referenced by id or inline data.

**One of the following:**

- **`skill_reference`** — `skill_reference (OpenAI.SkillReferenceParam)`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | References a skill created with the /v1/skills endpoint. _Constant:_ `skill_reference` |
| `skill_id` | `string` | Yes | The ID of the referenced skill. |
| `version` | `string` | No | Optional skill version. Use a positive integer or 'latest'. Omit for default. |

- **`inline`** — `inline (OpenAI.InlineSkillParam)`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Defines an inline skill for this request. _Constant:_ `inline` |
| `name` | `string` | Yes | The name of the skill. |
| `description` | `string` | Yes | The description of the skill. |
| `source` | `OpenAI.InlineSkillSourceParam` | Yes | Inline skill payload |

- **`source`** — `OpenAI.InlineSkillSourceParam`

Inline skill payload

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the inline skill source. Must be `base64`. _Default:_ `"base64"` _Constant:_ `base64` |
| `media_type` | `enum` | Yes | The media type of the inline skill payload. Must be `application/zip`. _Default:_ `"application/zip"` _Constant:_ `application/zip` |
| `data` | `string` | Yes | Base64-encoded skill zip bundle. |

- **`network_policy`** — `ToolboxShellNetworkPolicyDisabled`

Network access policy for an automatically provisioned toolbox shell container.

**One of the following:**

- **`disabled`** — `disabled (ToolboxShellNetworkPolicyDisabled)`

A network policy that disables outbound access from a toolbox shell container.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of network access policy. Always `disabled`. _Constant:_ `disabled` |

###### `container_reference` — `container_reference (ToolboxShellContainerReferenceEnvironment)`

An existing container environment for a shell tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the shell execution environment. Always `container_reference`. _Constant:_ `container_reference` |
| `container_id` | `string` | Yes | The ID of the referenced container. |

#### `mcp` — `mcp (MCPToolboxTool)`

An MCP tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `mcp` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `server_label` | `string` | Yes | A label for this MCP server, used to identify it in tool calls. |
| `server_url` | `string` | No | The URL for the MCP server. One of `server_url`, `connector_id`, or `tunnel_id` must be provided. _Format:_ `uri` |
| `connector_id` | `enum` | No | Identifier for service connectors, like those available in ChatGPT. One of `server_url`, `connector_id`, or `tunnel_id` must be provided. Learn more about service connectors [here](/docs/guides/tools-remote-mcp#connectors). Currently supported `connector_id` values are: - Dropbox: `connector_dropbox` - Gmail: `connector_gmail` - Google Calendar: `connector_googlecalendar` - Google Drive: `connector_googledrive` - Microsoft Teams: `connector_microsoftteams` - Outlook Calendar: `connector_outlookcalendar` - Outlook Email: `connector_outlookemail` - SharePoint: `connector_sharepoint` _Enum:_ `connector_dropbox`, `connector_gmail`, `connector_googlecalendar`, `connector_googledrive`, `connector_microsoftteams`, `connector_outlookcalendar`, `connector_outlookemail`, `connector_sharepoint` |
| `tunnel_id` | `string` | No | The Secure MCP Tunnel ID to use instead of a direct server URL. One of `server_url`, `connector_id`, or `tunnel_id` must be provided. |
| `authorization` | `string` | No | An OAuth access token that can be used with a remote MCP server, either with a custom MCP server URL or a service connector. Your application must handle the OAuth authorization flow and provide the token here. |
| `server_description` | `string` | No | Optional description of the MCP server, used to provide more context. |
| `headers` | `object \| null` | No |  |
| `allowed_tools` | `string[] \| OpenAI.MCPToolFilter \| null` | No |  |
| `allowed_callers` | `enum` | No | _Enum:_ `direct`, `programmatic` |
| `require_approval` | `OpenAI.MCPToolRequireApproval \| enum \| null` | No | _Default:_ `"always"` _Enum:_ `always`, `never` |
| `defer_loading` | `boolean` | No | Whether this MCP tool is deferred and discovered via tool search. |
| `project_connection_id` | `string` | No | The connection ID in the project for the MCP server. The connection stores authentication and other connection details needed to connect to the MCP server. |

##### `allowed_tools` — `string[] | OpenAI.MCPToolFilter | null`

**One of the following:**

###### `string[]` — `string[]`

Type: `string[]`

###### `OpenAI.MCPToolFilter` — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

###### `null` — `null`

| Type | Description |
|------|-------------|
| `null` | — |

##### `require_approval` — `OpenAI.MCPToolRequireApproval | enum | null`

**One of the following:**

###### `OpenAI.MCPToolRequireApproval` — `OpenAI.MCPToolRequireApproval`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `always` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |
| `never` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |

- **`always`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

- **`never`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

###### `enum` — `enum`

| Type | Description |
|------|-------------|
| `enum` | _Enum:_ `always`, `never` |

###### `null` — `null`

| Type | Description |
|------|-------------|
| `null` | — |

#### `azure_ai_search` — `azure_ai_search (AzureAISearchToolboxTool)`

An Azure AI Search tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `azure_ai_search` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `azure_ai_search` | `AzureAISearchToolResource` | Yes | A set of index resources used by the `azure_ai_search` tool. |

##### `azure_ai_search` — `AzureAISearchToolResource`

A set of index resources used by the `azure_ai_search` tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `indexes` | `AISearchIndexResource[]` | Yes | The indices attached to this agent. There can be a maximum of 1 index resource attached to the agent. |

###### `indexes` — `AISearchIndexResource[]`

The indices attached to this agent. There can be a maximum of 1 index resource attached to the agent.

**Array of** `AISearchIndexResource`**:**

A AI Search Index resource.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `project_connection_id` | `string` | No | An index connection ID in an IndexResource attached to this agent. |
| `index_name` | `string` | No | The name of an index in an IndexResource attached to this agent. |
| `query_type` | `enum` | No | Available query types for Azure AI Search tool. _Enum:_ `simple`, `semantic`, `vector`, `vector_simple_hybrid`, `vector_semantic_hybrid` |
| `top_k` | `integer` | No | Number of documents to retrieve from search and present to the model. _Format:_ `int32` |
| `filter` | `string` | No | filter string for search resource. [Learn more here](https://learn.microsoft.com/azure/search/search-filters). |
| `index_asset_id` | `string` | No | Index asset id for search resource. |

#### `openapi` — `openapi (OpenApiToolboxTool)`

An OpenAPI tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `openapi` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `openapi` | `OpenApiFunctionDefinition` | Yes | The input definition information for an openapi function. |

##### `openapi` — `OpenApiFunctionDefinition`

The input definition information for an openapi function.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | The name of the function to be called. |
| `description` | `string` | No | A description of what the function does, used by the model to choose when and how to call the function. |
| `spec` | `object` | Yes | The openapi function shape, described as a JSON Schema object. |
| `auth` | `OpenApiAnonymousAuthDetails \| OpenApiProjectConnectionAuthDetails \| OpenApiManagedAuthDetails` | Yes | authentication details for OpenApiFunctionDefinition |
| `default_params` | `string[]` | No | List of OpenAPI spec parameters that will use user-provided defaults |
| `functions` | `object[]` | No | List of function definitions used by OpenApi tool |

###### `auth` — `OpenApiAnonymousAuthDetails | OpenApiProjectConnectionAuthDetails | OpenApiManagedAuthDetails`

authentication details for OpenApiFunctionDefinition

**One of the following:**

- **`anonymous`** — `anonymous (OpenApiAnonymousAuthDetails)`

Security details for OpenApi anonymous authentication

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The object type, which is always 'anonymous'. _Constant:_ `anonymous` |

- **`project_connection`** — `project_connection (OpenApiProjectConnectionAuthDetails)`

Security details for OpenApi project connection authentication

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The object type, which is always 'project_connection'. _Constant:_ `project_connection` |
| `security_scheme` | `OpenApiProjectConnectionSecurityScheme` | Yes | Security scheme for OpenApi managed_identity authentication |

- **`security_scheme`** — `OpenApiProjectConnectionSecurityScheme`

Security scheme for OpenApi managed_identity authentication

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `project_connection_id` | `string` | Yes | Project connection id for Project Connection auth type |

- **`managed_identity`** — `managed_identity (OpenApiManagedAuthDetails)`

Security details for OpenApi managed_identity authentication

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The object type, which is always 'managed_identity'. _Constant:_ `managed_identity` |
| `security_scheme` | `OpenApiManagedSecurityScheme` | Yes | Security scheme for OpenApi managed_identity authentication |

- **`security_scheme`** — `OpenApiManagedSecurityScheme`

Security scheme for OpenApi managed_identity authentication

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `audience` | `string` | Yes | Authentication scope for managed_identity auth type |

###### `functions` — `object[]`

List of function definitions used by OpenApi tool

**Array of** `object`**:**

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | The name of the function to be called. |
| `description` | `string` | No | A description of what the function does, used by the model to choose when and how to call the function. |
| `parameters` | `object` | Yes | The parameters the functions accepts, described as a JSON Schema object. |

#### `a2a` — `a2a (A2AToolboxTool)`

An A2A tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `a2a` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `base_url` | `string` | No | Base URL of the agent. _Format:_ `uri` |
| `agent_card_path` | `string` | No | The path to the agent card relative to the `base_url`. If not provided, defaults to `/.well-known/agent-card.json` |
| `project_connection_id` | `string` | No | The connection ID in the project for the A2A server. The connection stores authentication and other connection details needed to connect to the A2A server. |
| `send_credentials_for_agent_card` | `boolean` | No | When `true`, Foundry sends its credentials when fetching the remote agent's Agent Card. The service defaults to `false` if a value is not specified by the caller (anonymous fetch). _Default:_ `false` |
| `a2a_version` | `enum` | Yes | Supported A2A protocol versions. _Constant:_ `1.0` |

#### `a2a_preview` — `a2a_preview (A2APreviewToolboxTool)`

An A2A tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `a2a_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `base_url` | `string` | No | Base URL of the agent. _Format:_ `uri` |
| `agent_card_path` | `string` | No | The path to the agent card relative to the `base_url`. If not provided, defaults to `/.well-known/agent-card.json` |
| `project_connection_id` | `string` | No | The connection ID in the project for the A2A server. The connection stores authentication and other connection details needed to connect to the A2A server. |
| `send_credentials_for_agent_card` | `boolean` | No | When `true`, Foundry sends its credentials when fetching the remote agent's Agent Card. The service defaults to `false` if a value is not specified by the caller (anonymous fetch). _Default:_ `false` |

#### `browser_automation_preview` — `browser_automation_preview (BrowserAutomationPreviewToolboxTool)`

A browser automation tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `browser_automation_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `browser_automation_preview` | `BrowserAutomationToolParameters` | Yes | Definition of input parameters for the Browser Automation Tool. |

##### `browser_automation_preview` — `BrowserAutomationToolParameters`

Definition of input parameters for the Browser Automation Tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `connection` | `BrowserAutomationToolConnectionParameters` | Yes | Definition of input parameters for the connection used by the Browser Automation Tool. |

###### `connection` — `BrowserAutomationToolConnectionParameters`

Definition of input parameters for the connection used by the Browser Automation Tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `project_connection_id` | `string` | Yes | The ID of the project connection to your Azure Playwright resource. |

#### `browser_automation` — `browser_automation (BrowserAutomationToolboxTool)`

A browser automation tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `browser_automation` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `browser_automation` | `BrowserAutomationToolParameters` | Yes | Definition of input parameters for the Browser Automation Tool. |

##### `browser_automation` — `BrowserAutomationToolParameters`

Definition of input parameters for the Browser Automation Tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `connection` | `BrowserAutomationToolConnectionParameters` | Yes | Definition of input parameters for the connection used by the Browser Automation Tool. |

###### `connection` — `BrowserAutomationToolConnectionParameters`

Definition of input parameters for the connection used by the Browser Automation Tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `project_connection_id` | `string` | Yes | The ID of the project connection to your Azure Playwright resource. |

#### `reminder_preview` — `reminder_preview (ReminderPreviewToolboxTool)`

A reminder tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `reminder_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |

#### `work_iq_preview` — `work_iq_preview (WorkIQPreviewToolboxTool)`

A WorkIQ tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `work_iq_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `project_connection_id` | `string` | Yes | The ID of the WorkIQ project connection. |

#### `fabric_iq_preview` — `fabric_iq_preview (FabricIQPreviewToolboxTool)`

A FabricIQ tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `fabric_iq_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `project_connection_id` | `string` | Yes | The ID of the FabricIQ project connection. |
| `server_label` | `string` | No | (Optional) The label of the FabricIQ MCP server to connect to. |
| `server_url` | `string` | No | (Optional) The URL of the FabricIQ MCP server. If not provided, the URL from the project connection will be used. _Format:_ `uri` |
| `require_approval` | `OpenAI.MCPToolRequireApproval \| string \| null` | No | (Optional) Whether the agent requires approval before executing actions. Default is always. _Default:_ `"always"` |

##### `require_approval` — `OpenAI.MCPToolRequireApproval | string | null`

(Optional) Whether the agent requires approval before executing actions. Default is always.

**One of the following:**

###### `OpenAI.MCPToolRequireApproval` — `OpenAI.MCPToolRequireApproval`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `always` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |
| `never` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |

- **`always`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

- **`never`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

###### `string` — `string`

| Type | Description |
|------|-------------|
| `string` | — |

###### `null` — `null`

| Type | Description |
|------|-------------|
| `null` | — |

#### `web_iq_preview` — `web_iq_preview (WebIQPreviewToolboxTool)`

A WebIQ tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `web_iq_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `project_connection_id` | `string` | Yes | The ID of the WebIQ project connection. |
| `server_label` | `string` | No | The label of the WebIQ MCP server to connect to. When omitted, the service defaults to connection name extracted from project_connection_id. |
| `require_approval` | `OpenAI.MCPToolRequireApproval \| string \| null` | No | Whether the agent requires approval before executing actions. When omitted, the service defaults to "always". _Default:_ `"always"` |

##### `require_approval` — `OpenAI.MCPToolRequireApproval | string | null`

Whether the agent requires approval before executing actions. When omitted, the service defaults to "always".

**One of the following:**

###### `OpenAI.MCPToolRequireApproval` — `OpenAI.MCPToolRequireApproval`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `always` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |
| `never` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |

- **`always`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

- **`never`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

###### `string` — `string`

| Type | Description |
|------|-------------|
| `string` | — |

###### `null` — `null`

| Type | Description |
|------|-------------|
| `null` | — |

#### `toolbox_search_preview` — `toolbox_search_preview (ToolboxSearchPreviewToolboxTool)`

A toolbox search tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the tool. Always `toolbox_search_preview`. _Constant:_ `toolbox_search_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |

#### `toolbox_search` — `toolbox_search (ToolSearchToolboxTool)`

A toolbox search tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the tool. Always `toolbox_search`. _Constant:_ `toolbox_search` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |

### `skills` — `ToolboxSkillReference[]`

The list of skill sources to include in this version. A skill reference specifies a skill name and optionally a version. If version is omitted, the skill's default version is used.

**One of the following:**

#### `skill_reference` — `skill_reference (ToolboxSkillReference)`

A reference to an existing skill to include in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of skill source. _Constant:_ `skill_reference` |
| `name` | `SkillName` | Yes | A skill name following the agentskills.io spec: lowercase letters, numbers, and hyphens only. Must not start or end with a hyphen or contain consecutive hyphens. |
| `version` | `string` | No | The version of the skill. If not specified, the skill's default version is used. When a version is specified, the reference is pinned to that immutable version. |

### `policies` — `ToolboxPolicies`

Policy configuration for a toolbox, including content safety and other governance settings.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `rai_config` | `RaiConfig` | No | Configuration for Responsible AI (RAI) content filtering and safety features. |

#### `rai_config` — `RaiConfig`

Configuration for Responsible AI (RAI) content filtering and safety features.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `rai_policy_name` | `string` | Yes | The name of the RAI policy to apply. |
| `invocations_moderation` | `RaiInvocationModeration` | No | Declares where request/response text lives so content-safety guardrails can extract it. |

##### `invocations_moderation` — `RaiInvocationModeration`

Declares where request/response text lives so content-safety guardrails can extract it.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `input_content_type` | `enum` | No | How an invocations request/response body is parsed to locate text for content-safety moderation. _Enum:_ `json`, `text` |
| `output_content_type` | `enum` | No | How an invocations request/response body is parsed to locate text for content-safety moderation. _Enum:_ `json`, `text` |
| `response_mode` | `enum` | Yes | Author-declared response shape for the invocations protocol. _Enum:_ `non_streaming`, `streaming`, `both` |
| `input_paths` | `string[]` | No | Path(s) to user text in the REQUEST body. Required when input_content_type is `json`. |
| `output_paths` | `string[]` | No | Path(s) to agent text in a NON-STREAMING response body. Required when response_mode is non_streaming/both and output_content_type is `json`. |
| `stream_selectors` | `RaiSseTextSelector[]` | No | One SSE event->field selector per event type carrying text. Required when response_mode is streaming/both and output_content_type is `json`. |

###### `stream_selectors` — `RaiSseTextSelector[]`

One SSE event->field selector per event type carrying text. Required when response_mode is streaming/both and output_content_type is `json`.

**Array of** `RaiSseTextSelector`**:**

An SSE event-type to text-field selector for streaming invocation output.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `event_type` | `string` | Yes | The SSE event `type` value that carries text. |
| `text_field` | `string` | No | The field on a matched event holding the text delta. When omitted, the service defaults to `delta`. _Default:_ `"delta"` |

## Responses

### 200 — The request has succeeded.

Content-Type: `application/json`

A specific version of a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `metadata` | `object \| null` | Yes | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. |
| `id` | `string` | Yes | The unique identifier of the toolbox version. |
| `name` | `string` | Yes | The name of the toolbox. |
| `version` | `string` | Yes | The version identifier of the toolbox. Toolbox versions are immutable and every update creates a new version. |
| `description` | `string` | No | A human-readable description of the toolbox. |
| `created_at` | `integer` | Yes | The Unix timestamp (seconds) when the toolbox version was created. _Format:_ `unixtime` |
| `tools` | `(CodeInterpreterToolboxTool \| FileSearchToolboxTool \| WebSearchToolboxTool \| ShellToolboxTool \| MCPToolboxTool \| AzureAISearchToolboxTool \| OpenApiToolboxTool \| A2AToolboxTool \| A2APreviewToolboxTool \| BrowserAutomationPreviewToolboxTool \| BrowserAutomationToolboxTool \| ReminderPreviewToolboxTool \| WorkIQPreviewToolboxTool \| FabricIQPreviewToolboxTool \| WebIQPreviewToolboxTool \| ToolboxSearchPreviewToolboxTool \| ToolSearchToolboxTool)[]` | Yes | The list of tools contained in this toolbox version. |
| `skills` | `ToolboxSkillReference[]` | No | The list of skill sources included in this toolbox version. |
| `policies` | `ToolboxPolicies` | No | Policy configuration for a toolbox, including content safety and other governance settings. |

#### `tools` — `(CodeInterpreterToolboxTool | FileSearchToolboxTool | WebSearchToolboxTool | ShellToolboxTool | MCPToolboxTool | AzureAISearchToolboxTool | OpenApiToolboxTool | A2AToolboxTool | A2APreviewToolboxTool | BrowserAutomationPreviewToolboxTool | BrowserAutomationToolboxTool | ReminderPreviewToolboxTool | WorkIQPreviewToolboxTool | FabricIQPreviewToolboxTool | WebIQPreviewToolboxTool | ToolboxSearchPreviewToolboxTool | ToolSearchToolboxTool)[]`

The list of tools contained in this toolbox version.

**One of the following:**

##### `code_interpreter` — `code_interpreter (CodeInterpreterToolboxTool)`

A code interpreter tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `code_interpreter` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `allowed_callers` | `enum` | No | _Enum:_ `direct`, `programmatic` |
| `container` | `string \| OpenAI.AutoCodeInterpreterToolParam` | No | The code interpreter container. Can be a container ID or an object that specifies uploaded file IDs to make available to your code, along with an optional `memory_limit` setting. If not provided, the service assumes auto. |

###### `container` — `string | OpenAI.AutoCodeInterpreterToolParam`

The code interpreter container. Can be a container ID or an object that specifies uploaded file IDs to make available to your code, along with an optional `memory_limit` setting. If not provided, the service assumes auto.

**One of the following:**

- **`string`** — `string`

| Type | Description |
|------|-------------|
| `string` | — |

- **`OpenAI.AutoCodeInterpreterToolParam`** — `OpenAI.AutoCodeInterpreterToolParam`

Configuration for a code interpreter container. Optionally specify the IDs of the files to run the code on.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Always `auto`. _Default:_ `"auto"` _Constant:_ `auto` |
| `file_ids` | `string[]` | No | An optional list of uploaded files to make available to your code. |
| `memory_limit` | `enum` | No | _Enum:_ `1g`, `4g`, `16g`, `64g` |
| `network_policy` | `OpenAI.ContainerNetworkPolicyDisabledParam \| OpenAI.ContainerNetworkPolicyAllowlistParam` | No | Network access policy for the container. |

- **`network_policy`** — `OpenAI.ContainerNetworkPolicyDisabledParam | OpenAI.ContainerNetworkPolicyAllowlistParam`

Network access policy for the container.

**One of the following:**

- **`disabled`** — `disabled (OpenAI.ContainerNetworkPolicyDisabledParam)`

Network access policy for the container.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Disable outbound network access. Always `disabled`. _Constant:_ `disabled` |

- **`allowlist`** — `allowlist (OpenAI.ContainerNetworkPolicyAllowlistParam)`

Network access policy for the container.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Allow outbound network access only to specified domains. Always `allowlist`. _Constant:_ `allowlist` |
| `allowed_domains` | `string[]` | Yes | A list of allowed domains when type is `allowlist`. |

##### `file_search` — `file_search (FileSearchToolboxTool)`

A file search tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `file_search` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `max_num_results` | `OpenAI.integer` | No | _Format:_ `int64` |
| `ranking_options` | `OpenAI.RankingOptions` | No |  |
| `filters` | `OpenAI.ComparisonFilter \| OpenAI.CompoundFilter \| null` | No |  |
| `vector_store_ids` | `string[]` | No | The IDs of the vector stores to search. |

###### `ranking_options` — `OpenAI.RankingOptions`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `ranker` | `OpenAI.RankerVersionType` | No | _Enum:_ `auto`, `default-2024-11-15` |
| `score_threshold` | `OpenAI.numeric` | No | _Format:_ `double` |
| `hybrid_search` | `OpenAI.HybridSearchOptions` | No |  |

- **`hybrid_search`** — `OpenAI.HybridSearchOptions`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `embedding_weight` | `OpenAI.numeric` | Yes | _Format:_ `double` |
| `text_weight` | `OpenAI.numeric` | Yes | _Format:_ `double` |

###### `filters` — `OpenAI.ComparisonFilter | OpenAI.CompoundFilter | null`

**One of the following:**

- **`OpenAI.Filters`** — `OpenAI.ComparisonFilter | OpenAI.CompoundFilter`

**One of the following:**

- **`OpenAI.ComparisonFilter`** — `OpenAI.ComparisonFilter`

A filter used to compare a specified attribute key to a given value using a defined comparison operation.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Specifies the comparison operator: `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `nin`. - `eq`: equals - `ne`: not equal - `gt`: greater than - `gte`: greater than or equal - `lt`: less than - `lte`: less than or equal - `in`: in - `nin`: not in _Default:_ `"eq"` _Enum:_ `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `nin` |
| `key` | `string` | Yes | The key to compare against the value. |
| `value` | `string \| OpenAI.numeric \| boolean \| (string \| OpenAI.numeric)[]` | Yes | The value to compare against the attribute key; supports string, number, or boolean types. |

- **`value`** — `string | OpenAI.numeric | boolean | (string | OpenAI.numeric)[]`

The value to compare against the attribute key; supports string, number, or boolean types.

**One of the following:**

- **`string`** — `string`

| Type | Description |
|------|-------------|
| `string` | — |

- **`OpenAI.numeric`** — `OpenAI.numeric`

| Type | Description |
|------|-------------|
| `OpenAI.numeric` | _Format:_ `double` |

- **`boolean`** — `boolean`

| Type | Description |
|------|-------------|
| `boolean` | — |

- **`(string | OpenAI.numeric)[]`** — `(string | OpenAI.numeric)[]`

Type: `(string | OpenAI.numeric)[]`

- **`OpenAI.CompoundFilter`** — `OpenAI.CompoundFilter`

Combine multiple filters using `and` or `or`.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Type of operation: `and` or `or`. _Enum:_ `and`, `or` |
| `filters` | `(OpenAI.ComparisonFilter \| any)[]` | Yes | Array of filters to combine. Items can be `ComparisonFilter` or `CompoundFilter`. |

- **`filters`** — `(OpenAI.ComparisonFilter | any)[]`

Array of filters to combine. Items can be `ComparisonFilter` or `CompoundFilter`.

**One of the following:**

- **`OpenAI.ComparisonFilter`** — `OpenAI.ComparisonFilter`

A filter used to compare a specified attribute key to a given value using a defined comparison operation.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Specifies the comparison operator: `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `nin`. - `eq`: equals - `ne`: not equal - `gt`: greater than - `gte`: greater than or equal - `lt`: less than - `lte`: less than or equal - `in`: in - `nin`: not in _Default:_ `"eq"` _Enum:_ `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `nin` |
| `key` | `string` | Yes | The key to compare against the value. |
| `value` | `string \| OpenAI.numeric \| boolean \| (string \| OpenAI.numeric)[]` | Yes | The value to compare against the attribute key; supports string, number, or boolean types. |

- **`value`** — `string | OpenAI.numeric | boolean | (string | OpenAI.numeric)[]`

The value to compare against the attribute key; supports string, number, or boolean types.

**One of the following:**

- **`string`** — `string`

| Type | Description |
|------|-------------|
| `string` | — |

- **`OpenAI.numeric`** — `OpenAI.numeric`

| Type | Description |
|------|-------------|
| `OpenAI.numeric` | _Format:_ `double` |

- **`boolean`** — `boolean`

| Type | Description |
|------|-------------|
| `boolean` | — |

- **`(string | OpenAI.numeric)[]`** — `(string | OpenAI.numeric)[]`

Type: `(string | OpenAI.numeric)[]`

- **`any`** — `any`

| Type | Description |
|------|-------------|
| `any` | — |

- **`null`** — `null`

| Type | Description |
|------|-------------|
| `null` | — |

##### `web_search` — `web_search (WebSearchToolboxTool)`

A web search tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `web_search` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `external_web_access` | `boolean` | No | Allow live internet access for web search. Defaults to true when omitted. When false, the web search tool runs in offline/cache-only mode and will not fetch new external content. _Default:_ `true` |
| `filters` | `OpenAI.WebSearchToolFilters \| null` | No |  |
| `user_location` | `OpenAI.WebSearchApproximateLocation \| null` | No |  |
| `search_context_size` | `enum` | No | High level guidance for the amount of context window space to use for the search. One of `low`, `medium`, or `high`. `medium` is the default. _Default:_ `"medium"` _Enum:_ `low`, `medium`, `high` |
| `custom_search_configuration` | `WebSearchConfiguration` | No | A web search configuration for bing custom search |

###### `filters` — `OpenAI.WebSearchToolFilters | null`

**One of the following:**

- **`OpenAI.WebSearchToolFilters`** — `OpenAI.WebSearchToolFilters`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `allowed_domains` | `string[] \| null` | No |  |

- **`null`** — `null`

| Type | Description |
|------|-------------|
| `null` | — |

###### `user_location` — `OpenAI.WebSearchApproximateLocation | null`

**One of the following:**

- **`OpenAI.WebSearchApproximateLocation`** — `OpenAI.WebSearchApproximateLocation`

The approximate location of the user.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of location approximation. Always `approximate`. _Default:_ `"approximate"` _Constant:_ `approximate` |
| `country` | `string \| null` | No |  |
| `region` | `string \| null` | No |  |
| `city` | `string \| null` | No |  |
| `timezone` | `string \| null` | No |  |

- **`null`** — `null`

| Type | Description |
|------|-------------|
| `null` | — |

###### `custom_search_configuration` — `WebSearchConfiguration`

A web search configuration for bing custom search

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `project_connection_id` | `string` | Yes | Project connection id for grounding with bing custom search |
| `instance_name` | `string` | Yes | Name of the custom configuration instance given to config. |

##### `shell` — `shell (ShellToolboxTool)`

A shell tool stored in a toolbox. This model is additive to toolbox configuration and does not modify the OpenAI tool contract or existing toolbox tool definitions.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the tool. Always `shell`. _Constant:_ `shell` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `allowed_callers` | `enum` | No | _Enum:_ `direct`, `programmatic` |
| `environment` | `ToolboxShellContainerAutoEnvironment \| ToolboxShellContainerReferenceEnvironment` | Yes | An execution environment for a shell tool stored in a toolbox. This environment model is scoped to toolbox configuration and does not modify the OpenAI shell environment contract. |

###### `environment` — `ToolboxShellContainerAutoEnvironment | ToolboxShellContainerReferenceEnvironment`

An execution environment for a shell tool stored in a toolbox. This environment model is scoped to toolbox configuration and does not modify the OpenAI shell environment contract.

**One of the following:**

- **`container_auto`** — `container_auto (ToolboxShellContainerAutoEnvironment)`

An automatically provisioned container environment for a shell tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the shell execution environment. Always `container_auto`. _Constant:_ `container_auto` |
| `file_ids` | `string[]` | No | An optional list of uploaded files to make available to your code. |
| `memory_limit` | `enum` | No | _Enum:_ `1g`, `4g`, `16g`, `64g` |
| `skills` | `(OpenAI.SkillReferenceParam \| OpenAI.InlineSkillParam)[]` | No | An optional list of skills referenced by id or inline data. |
| `network_policy` | `ToolboxShellNetworkPolicyDisabled` | No | Network access policy for an automatically provisioned toolbox shell container. |

- **`skills`** — `(OpenAI.SkillReferenceParam | OpenAI.InlineSkillParam)[]`

An optional list of skills referenced by id or inline data.

**One of the following:**

- **`skill_reference`** — `skill_reference (OpenAI.SkillReferenceParam)`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | References a skill created with the /v1/skills endpoint. _Constant:_ `skill_reference` |
| `skill_id` | `string` | Yes | The ID of the referenced skill. |
| `version` | `string` | No | Optional skill version. Use a positive integer or 'latest'. Omit for default. |

- **`inline`** — `inline (OpenAI.InlineSkillParam)`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | Defines an inline skill for this request. _Constant:_ `inline` |
| `name` | `string` | Yes | The name of the skill. |
| `description` | `string` | Yes | The description of the skill. |
| `source` | `OpenAI.InlineSkillSourceParam` | Yes | Inline skill payload |

- **`source`** — `OpenAI.InlineSkillSourceParam`

Inline skill payload

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the inline skill source. Must be `base64`. _Default:_ `"base64"` _Constant:_ `base64` |
| `media_type` | `enum` | Yes | The media type of the inline skill payload. Must be `application/zip`. _Default:_ `"application/zip"` _Constant:_ `application/zip` |
| `data` | `string` | Yes | Base64-encoded skill zip bundle. |

- **`network_policy`** — `ToolboxShellNetworkPolicyDisabled`

Network access policy for an automatically provisioned toolbox shell container.

**One of the following:**

- **`disabled`** — `disabled (ToolboxShellNetworkPolicyDisabled)`

A network policy that disables outbound access from a toolbox shell container.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of network access policy. Always `disabled`. _Constant:_ `disabled` |

- **`container_reference`** — `container_reference (ToolboxShellContainerReferenceEnvironment)`

An existing container environment for a shell tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the shell execution environment. Always `container_reference`. _Constant:_ `container_reference` |
| `container_id` | `string` | Yes | The ID of the referenced container. |

##### `mcp` — `mcp (MCPToolboxTool)`

An MCP tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `mcp` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `server_label` | `string` | Yes | A label for this MCP server, used to identify it in tool calls. |
| `server_url` | `string` | No | The URL for the MCP server. One of `server_url`, `connector_id`, or `tunnel_id` must be provided. _Format:_ `uri` |
| `connector_id` | `enum` | No | Identifier for service connectors, like those available in ChatGPT. One of `server_url`, `connector_id`, or `tunnel_id` must be provided. Learn more about service connectors [here](/docs/guides/tools-remote-mcp#connectors). Currently supported `connector_id` values are: - Dropbox: `connector_dropbox` - Gmail: `connector_gmail` - Google Calendar: `connector_googlecalendar` - Google Drive: `connector_googledrive` - Microsoft Teams: `connector_microsoftteams` - Outlook Calendar: `connector_outlookcalendar` - Outlook Email: `connector_outlookemail` - SharePoint: `connector_sharepoint` _Enum:_ `connector_dropbox`, `connector_gmail`, `connector_googlecalendar`, `connector_googledrive`, `connector_microsoftteams`, `connector_outlookcalendar`, `connector_outlookemail`, `connector_sharepoint` |
| `tunnel_id` | `string` | No | The Secure MCP Tunnel ID to use instead of a direct server URL. One of `server_url`, `connector_id`, or `tunnel_id` must be provided. |
| `authorization` | `string` | No | An OAuth access token that can be used with a remote MCP server, either with a custom MCP server URL or a service connector. Your application must handle the OAuth authorization flow and provide the token here. |
| `server_description` | `string` | No | Optional description of the MCP server, used to provide more context. |
| `headers` | `object \| null` | No |  |
| `allowed_tools` | `string[] \| OpenAI.MCPToolFilter \| null` | No |  |
| `allowed_callers` | `enum` | No | _Enum:_ `direct`, `programmatic` |
| `require_approval` | `OpenAI.MCPToolRequireApproval \| enum \| null` | No | _Default:_ `"always"` _Enum:_ `always`, `never` |
| `defer_loading` | `boolean` | No | Whether this MCP tool is deferred and discovered via tool search. |
| `project_connection_id` | `string` | No | The connection ID in the project for the MCP server. The connection stores authentication and other connection details needed to connect to the MCP server. |

###### `allowed_tools` — `string[] | OpenAI.MCPToolFilter | null`

**One of the following:**

- **`string[]`** — `string[]`

Type: `string[]`

- **`OpenAI.MCPToolFilter`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

- **`null`** — `null`

| Type | Description |
|------|-------------|
| `null` | — |

###### `require_approval` — `OpenAI.MCPToolRequireApproval | enum | null`

**One of the following:**

- **`OpenAI.MCPToolRequireApproval`** — `OpenAI.MCPToolRequireApproval`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `always` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |
| `never` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |

- **`always`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

- **`never`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

- **`enum`** — `enum`

| Type | Description |
|------|-------------|
| `enum` | _Enum:_ `always`, `never` |

- **`null`** — `null`

| Type | Description |
|------|-------------|
| `null` | — |

##### `azure_ai_search` — `azure_ai_search (AzureAISearchToolboxTool)`

An Azure AI Search tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `azure_ai_search` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `azure_ai_search` | `AzureAISearchToolResource` | Yes | A set of index resources used by the `azure_ai_search` tool. |

###### `azure_ai_search` — `AzureAISearchToolResource`

A set of index resources used by the `azure_ai_search` tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `indexes` | `AISearchIndexResource[]` | Yes | The indices attached to this agent. There can be a maximum of 1 index resource attached to the agent. |

- **`indexes`** — `AISearchIndexResource[]`

The indices attached to this agent. There can be a maximum of 1 index resource attached to the agent.

**Array of** `AISearchIndexResource`**:**

A AI Search Index resource.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `project_connection_id` | `string` | No | An index connection ID in an IndexResource attached to this agent. |
| `index_name` | `string` | No | The name of an index in an IndexResource attached to this agent. |
| `query_type` | `enum` | No | Available query types for Azure AI Search tool. _Enum:_ `simple`, `semantic`, `vector`, `vector_simple_hybrid`, `vector_semantic_hybrid` |
| `top_k` | `integer` | No | Number of documents to retrieve from search and present to the model. _Format:_ `int32` |
| `filter` | `string` | No | filter string for search resource. [Learn more here](https://learn.microsoft.com/azure/search/search-filters). |
| `index_asset_id` | `string` | No | Index asset id for search resource. |

##### `openapi` — `openapi (OpenApiToolboxTool)`

An OpenAPI tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `openapi` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `openapi` | `OpenApiFunctionDefinition` | Yes | The input definition information for an openapi function. |

###### `openapi` — `OpenApiFunctionDefinition`

The input definition information for an openapi function.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | The name of the function to be called. |
| `description` | `string` | No | A description of what the function does, used by the model to choose when and how to call the function. |
| `spec` | `object` | Yes | The openapi function shape, described as a JSON Schema object. |
| `auth` | `OpenApiAnonymousAuthDetails \| OpenApiProjectConnectionAuthDetails \| OpenApiManagedAuthDetails` | Yes | authentication details for OpenApiFunctionDefinition |
| `default_params` | `string[]` | No | List of OpenAPI spec parameters that will use user-provided defaults |
| `functions` | `object[]` | No | List of function definitions used by OpenApi tool |

- **`auth`** — `OpenApiAnonymousAuthDetails | OpenApiProjectConnectionAuthDetails | OpenApiManagedAuthDetails`

authentication details for OpenApiFunctionDefinition

**One of the following:**

- **`anonymous`** — `anonymous (OpenApiAnonymousAuthDetails)`

Security details for OpenApi anonymous authentication

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The object type, which is always 'anonymous'. _Constant:_ `anonymous` |

- **`project_connection`** — `project_connection (OpenApiProjectConnectionAuthDetails)`

Security details for OpenApi project connection authentication

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The object type, which is always 'project_connection'. _Constant:_ `project_connection` |
| `security_scheme` | `OpenApiProjectConnectionSecurityScheme` | Yes | Security scheme for OpenApi managed_identity authentication |

- **`security_scheme`** — `OpenApiProjectConnectionSecurityScheme`

Security scheme for OpenApi managed_identity authentication

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `project_connection_id` | `string` | Yes | Project connection id for Project Connection auth type |

- **`managed_identity`** — `managed_identity (OpenApiManagedAuthDetails)`

Security details for OpenApi managed_identity authentication

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The object type, which is always 'managed_identity'. _Constant:_ `managed_identity` |
| `security_scheme` | `OpenApiManagedSecurityScheme` | Yes | Security scheme for OpenApi managed_identity authentication |

- **`security_scheme`** — `OpenApiManagedSecurityScheme`

Security scheme for OpenApi managed_identity authentication

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `audience` | `string` | Yes | Authentication scope for managed_identity auth type |

- **`functions`** — `object[]`

List of function definitions used by OpenApi tool

**Array of** `object`**:**

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | The name of the function to be called. |
| `description` | `string` | No | A description of what the function does, used by the model to choose when and how to call the function. |
| `parameters` | `object` | Yes | The parameters the functions accepts, described as a JSON Schema object. |

##### `a2a` — `a2a (A2AToolboxTool)`

An A2A tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `a2a` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `base_url` | `string` | No | Base URL of the agent. _Format:_ `uri` |
| `agent_card_path` | `string` | No | The path to the agent card relative to the `base_url`. If not provided, defaults to `/.well-known/agent-card.json` |
| `project_connection_id` | `string` | No | The connection ID in the project for the A2A server. The connection stores authentication and other connection details needed to connect to the A2A server. |
| `send_credentials_for_agent_card` | `boolean` | No | When `true`, Foundry sends its credentials when fetching the remote agent's Agent Card. The service defaults to `false` if a value is not specified by the caller (anonymous fetch). _Default:_ `false` |
| `a2a_version` | `enum` | Yes | Supported A2A protocol versions. _Constant:_ `1.0` |

##### `a2a_preview` — `a2a_preview (A2APreviewToolboxTool)`

An A2A tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `a2a_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `base_url` | `string` | No | Base URL of the agent. _Format:_ `uri` |
| `agent_card_path` | `string` | No | The path to the agent card relative to the `base_url`. If not provided, defaults to `/.well-known/agent-card.json` |
| `project_connection_id` | `string` | No | The connection ID in the project for the A2A server. The connection stores authentication and other connection details needed to connect to the A2A server. |
| `send_credentials_for_agent_card` | `boolean` | No | When `true`, Foundry sends its credentials when fetching the remote agent's Agent Card. The service defaults to `false` if a value is not specified by the caller (anonymous fetch). _Default:_ `false` |

##### `browser_automation_preview` — `browser_automation_preview (BrowserAutomationPreviewToolboxTool)`

A browser automation tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `browser_automation_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `browser_automation_preview` | `BrowserAutomationToolParameters` | Yes | Definition of input parameters for the Browser Automation Tool. |

###### `browser_automation_preview` — `BrowserAutomationToolParameters`

Definition of input parameters for the Browser Automation Tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `connection` | `BrowserAutomationToolConnectionParameters` | Yes | Definition of input parameters for the connection used by the Browser Automation Tool. |

- **`connection`** — `BrowserAutomationToolConnectionParameters`

Definition of input parameters for the connection used by the Browser Automation Tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `project_connection_id` | `string` | Yes | The ID of the project connection to your Azure Playwright resource. |

##### `browser_automation` — `browser_automation (BrowserAutomationToolboxTool)`

A browser automation tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `browser_automation` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `browser_automation` | `BrowserAutomationToolParameters` | Yes | Definition of input parameters for the Browser Automation Tool. |

###### `browser_automation` — `BrowserAutomationToolParameters`

Definition of input parameters for the Browser Automation Tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `connection` | `BrowserAutomationToolConnectionParameters` | Yes | Definition of input parameters for the connection used by the Browser Automation Tool. |

- **`connection`** — `BrowserAutomationToolConnectionParameters`

Definition of input parameters for the connection used by the Browser Automation Tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `project_connection_id` | `string` | Yes | The ID of the project connection to your Azure Playwright resource. |

##### `reminder_preview` — `reminder_preview (ReminderPreviewToolboxTool)`

A reminder tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `reminder_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |

##### `work_iq_preview` — `work_iq_preview (WorkIQPreviewToolboxTool)`

A WorkIQ tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `work_iq_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `project_connection_id` | `string` | Yes | The ID of the WorkIQ project connection. |

##### `fabric_iq_preview` — `fabric_iq_preview (FabricIQPreviewToolboxTool)`

A FabricIQ tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `fabric_iq_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `project_connection_id` | `string` | Yes | The ID of the FabricIQ project connection. |
| `server_label` | `string` | No | (Optional) The label of the FabricIQ MCP server to connect to. |
| `server_url` | `string` | No | (Optional) The URL of the FabricIQ MCP server. If not provided, the URL from the project connection will be used. _Format:_ `uri` |
| `require_approval` | `OpenAI.MCPToolRequireApproval \| string \| null` | No | (Optional) Whether the agent requires approval before executing actions. Default is always. _Default:_ `"always"` |

###### `require_approval` — `OpenAI.MCPToolRequireApproval | string | null`

(Optional) Whether the agent requires approval before executing actions. Default is always.

**One of the following:**

- **`OpenAI.MCPToolRequireApproval`** — `OpenAI.MCPToolRequireApproval`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `always` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |
| `never` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |

- **`always`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

- **`never`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

- **`string`** — `string`

| Type | Description |
|------|-------------|
| `string` | — |

- **`null`** — `null`

| Type | Description |
|------|-------------|
| `null` | — |

##### `web_iq_preview` — `web_iq_preview (WebIQPreviewToolboxTool)`

A WebIQ tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | _Constant:_ `web_iq_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |
| `project_connection_id` | `string` | Yes | The ID of the WebIQ project connection. |
| `server_label` | `string` | No | The label of the WebIQ MCP server to connect to. When omitted, the service defaults to connection name extracted from project_connection_id. |
| `require_approval` | `OpenAI.MCPToolRequireApproval \| string \| null` | No | Whether the agent requires approval before executing actions. When omitted, the service defaults to "always". _Default:_ `"always"` |

###### `require_approval` — `OpenAI.MCPToolRequireApproval | string | null`

Whether the agent requires approval before executing actions. When omitted, the service defaults to "always".

**One of the following:**

- **`OpenAI.MCPToolRequireApproval`** — `OpenAI.MCPToolRequireApproval`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `always` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |
| `never` | `OpenAI.MCPToolFilter` | No | A filter object to specify which tools are allowed. |

- **`always`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

- **`never`** — `OpenAI.MCPToolFilter`

A filter object to specify which tools are allowed.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `tool_names` | `string[]` | No | List of allowed tool names. |
| `read_only` | `boolean` | No | Indicates whether or not a tool modifies data or is read-only. If an MCP server is [annotated with `readOnlyHint`](https://modelcontextprotocol.io/specification/2025-06-18/schema#toolannotations-readonlyhint), it will match this filter. |

- **`string`** — `string`

| Type | Description |
|------|-------------|
| `string` | — |

- **`null`** — `null`

| Type | Description |
|------|-------------|
| `null` | — |

##### `toolbox_search_preview` — `toolbox_search_preview (ToolboxSearchPreviewToolboxTool)`

A toolbox search tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the tool. Always `toolbox_search_preview`. _Constant:_ `toolbox_search_preview` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |

##### `toolbox_search` — `toolbox_search (ToolSearchToolboxTool)`

A toolbox search tool stored in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of the tool. Always `toolbox_search`. _Constant:_ `toolbox_search` |
| `name` | `string` | No | Optional user-defined name for this tool or configuration. |
| `description` | `string` | No | Optional user-defined description for this tool or configuration. |
| `tool_configs` | `object` | No | Per-tool configuration map. Keys are tool names or `*` (catch-all default). Resolution order: exact tool name match takes priority over `*`. Unknown tool names are silently ignored at runtime. |

#### `skills` — `ToolboxSkillReference[]`

The list of skill sources included in this toolbox version.

**One of the following:**

##### `skill_reference` — `skill_reference (ToolboxSkillReference)`

A reference to an existing skill to include in a toolbox.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | `enum` | Yes | The type of skill source. _Constant:_ `skill_reference` |
| `name` | `SkillName` | Yes | A skill name following the agentskills.io spec: lowercase letters, numbers, and hyphens only. Must not start or end with a hyphen or contain consecutive hyphens. |
| `version` | `string` | No | The version of the skill. If not specified, the skill's default version is used. When a version is specified, the reference is pinned to that immutable version. |

#### `policies` — `ToolboxPolicies`

Policy configuration for a toolbox, including content safety and other governance settings.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `rai_config` | `RaiConfig` | No | Configuration for Responsible AI (RAI) content filtering and safety features. |

##### `rai_config` — `RaiConfig`

Configuration for Responsible AI (RAI) content filtering and safety features.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `rai_policy_name` | `string` | Yes | The name of the RAI policy to apply. |
| `invocations_moderation` | `RaiInvocationModeration` | No | Declares where request/response text lives so content-safety guardrails can extract it. |

###### `invocations_moderation` — `RaiInvocationModeration`

Declares where request/response text lives so content-safety guardrails can extract it.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `input_content_type` | `enum` | No | How an invocations request/response body is parsed to locate text for content-safety moderation. _Enum:_ `json`, `text` |
| `output_content_type` | `enum` | No | How an invocations request/response body is parsed to locate text for content-safety moderation. _Enum:_ `json`, `text` |
| `response_mode` | `enum` | Yes | Author-declared response shape for the invocations protocol. _Enum:_ `non_streaming`, `streaming`, `both` |
| `input_paths` | `string[]` | No | Path(s) to user text in the REQUEST body. Required when input_content_type is `json`. |
| `output_paths` | `string[]` | No | Path(s) to agent text in a NON-STREAMING response body. Required when response_mode is non_streaming/both and output_content_type is `json`. |
| `stream_selectors` | `RaiSseTextSelector[]` | No | One SSE event->field selector per event type carrying text. Required when response_mode is streaming/both and output_content_type is `json`. |

- **`stream_selectors`** — `RaiSseTextSelector[]`

One SSE event->field selector per event type carrying text. Required when response_mode is streaming/both and output_content_type is `json`.

**Array of** `RaiSseTextSelector`**:**

An SSE event-type to text-field selector for streaming invocation output.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `event_type` | `string` | Yes | The SSE event `type` value that carries text. |
| `text_field` | `string` | No | The field on a matched event holding the text delta. When omitted, the service defaults to `delta`. _Default:_ `"delta"` |

### 4XX — Client error

Content-Type: `application/json`

Error response for API failures.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `error` | `OpenAI.Error` | Yes |  |

#### `error` — `OpenAI.Error`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `code` | `string \| null` | Yes |  |
| `message` | `string` | Yes |  |
| `param` | `string \| null` | No |  |
| `type` | `string` | No |  |
| `misalignment` | `OpenAI.MisalignmentErrorDetailsResource` | No |  |
| `details` | `OpenAI.Error[]` | No |  |
| `additionalInfo` | `object` | No |  |
| `debugInfo` | `object` | No |  |

##### `misalignment` — `OpenAI.MisalignmentErrorDetailsResource`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `error_type` | `enum` | No | _Enum:_ `potentially_unintended_data_transfer`, `potentially_unintended_data_access`, `potentially_unintended_destructive_activity`, `other` |
| `detailed_explanation` | `string` | No | The public explanation for this block. |
| `steer` | `OpenAI._MisalignmentSteer` | No |  |

###### `steer` — `OpenAI._MisalignmentSteer`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `message` | `string` | Yes | The public continuation instruction. |

### 5XX — Server error

Content-Type: `application/json`

Error response for API failures.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `error` | `OpenAI.Error` | Yes |  |

#### `error` — `OpenAI.Error`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `code` | `string \| null` | Yes |  |
| `message` | `string` | Yes |  |
| `param` | `string \| null` | No |  |
| `type` | `string` | No |  |
| `misalignment` | `OpenAI.MisalignmentErrorDetailsResource` | No |  |
| `details` | `OpenAI.Error[]` | No |  |
| `additionalInfo` | `object` | No |  |
| `debugInfo` | `object` | No |  |

##### `misalignment` — `OpenAI.MisalignmentErrorDetailsResource`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `error_type` | `enum` | No | _Enum:_ `potentially_unintended_data_transfer`, `potentially_unintended_data_access`, `potentially_unintended_destructive_activity`, `other` |
| `detailed_explanation` | `string` | No | The public explanation for this block. |
| `steer` | `OpenAI._MisalignmentSteer` | No |  |

###### `steer` — `OpenAI._MisalignmentSteer`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `message` | `string` | Yes | The public continuation instruction. |
