---
title: "PATCH /v1/{+name}"
method: PATCH
path: "/v1/{+name}"
tags: ["projects"]
---

# PATCH /v1/{+name}

`PATCH /v1/{+name}`

Updates the specified tool.

## Path parameters

- `name` string, required

## Query parameters

- `updateMask` string

## Request body

- Tool — A tool represents an action that the CES agent can take to achieve certain goals.
  - `remoteAgentTool` RemoteAgentTool — Represents a tool that allows the agent to call another remote agent.
    - `agentCard` AgentCard — AgentCard conveys key information about a remote agent. It is a trimmed version of the AgentCard defined in the A2A protocol https://a2a-protocol.org/dev/specification/#441-agentcard
      - `version` string — Required. The version of the agent.
      - `name` string — Required. A human-readable name for the agent.
      - `skills` AgentSkill[] — Required. Skills represent a unit of ability an agent can perform. This may somewhat abstract but represents a more focused set of actions that the agent is highly likely to succeed at.
        - `inputModes` string[] — The set of supported input media types for this skill, overriding the agent's defaults.
        - `tags` string[] — Required. A set of keywords describing the skill's capabilities.
        - `outputModes` string[] — The set of supported output media types for this skill, overriding the agent's defaults.
        - `name` string — Required. A human-readable name for the skill.
        - `examples` string[] — Example prompts or scenarios that this skill can handle.
        - `id` string — Required. A unique identifier for the agent's skill.
        - `description` string — Required. A detailed description of the skill.
      - `supportedInterfaces` AgentInterface[] — Required. Ordered list of supported interfaces. The first entry is preferred.
        - `url` string — Required. The URL where this interface is available. Must be a valid absolute HTTPS URL in production. Example: "https://api.example.com/a2a/v1", "https://grpc.example.com/a2a"
        - `protocolBinding` string — Required. The protocol binding supported at this URL. This is an open form string, to be easily extended for other protocol bindings. The core ones officially supported are `JSONRPC`, `GRPC` and `HTTP+JSON`.
        - `tenant` string — Tenant ID to be used in the request when calling the agent.
        - `protocolVersion` string — Required. The version of the A2A protocol this interface exposes. Use the latest supported minor version per major version. Examples: "0.3", "1.0"
      - `description` string — Required. A description of the agent's domain of action/solution space.
    - `name` string — Required. The name of the tool.
    - `description` string — Required. The description of the tool.
  - `name` string — Identifier. The resource name of the tool. Format: * `projects/{project}/locations/{location}/apps/{app}/tools/{tool}` for standalone tools. * `projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}/tools/{tool}` for tools retrieved from a toolset. These tools are dynamic and output-only; they cannot be referenced directly where a tool is expected.
  - `toolFakeConfig` ToolFakeConfig — Configuration for tool behavior in fake mode.
    - `codeBlock` CodeBlock — A code block to be executed instead of a real tool call.
      - `pythonCode` string — Required. Python code which will be invoked in tool fake mode. Expected Python function signature - To catch all tool calls: def fake_tool_call(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: To catch a specific tool call: def fake_{tool_id}(tool: Tool, input: dict[str, Any], callback_context: CallbackContext) -> Optional[dict[str, Any]]: If the function returns None, the real tool will be invoked instead.
    - `enableFakeMode` boolean — Optional. Whether the tool is using fake mode.
  - `updateTime` string, google-datetime — Output only. Timestamp when the tool was last updated.
  - `createTime` string, google-datetime — Output only. Timestamp when the tool was created.
  - `openApiTool` OpenApiTool — A remote API tool defined by an OpenAPI schema.
    - `ignoreUnknownFields` boolean — Optional. If true, the agent will ignore unknown fields in the API response.
    - `url` string — Optional. The server URL of the Open API schema. This field is only set in tools in the environment dependencies during the export process if the schema contains a server url. During the import process, if this url is present in the environment dependencies and the schema has the $env_var placeholder, it will replace the placeholder in the schema.
    - `name` string — Optional. The name of the tool. If not provided, the name of the tool will be derived from the OpenAPI schema, from `operation.operationId`.
    - `serviceDirectoryConfig` ServiceDirectoryConfig — Configuration for tools using Service Directory.
      - `service` string — Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
    - `tlsConfig` TlsConfig — The TLS configuration.
      - `caCerts` TlsConfigCaCert[] — Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
        - `displayName` string — Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
        - `cert` string, byte — Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify certificates. N.B. Make sure the HTTPS server certificates are signed with "subject alt name". For instance a certificate can be self-signed using the following command: ``` openssl x509 -req -days 200 -in example.com.csr \ -signkey example.com.key \ -out example.com.crt \ -extfile <(printf "\nsubjectAltName='DNS:www.example.com'") ```
    - `openApiSchema` string — Required. The OpenAPI schema in JSON or YAML format.
    - `description` string — Optional. The description of the tool. If not provided, the description of the tool will be derived from the OpenAPI schema, from `operation.description` or `operation.summary`.
    - `apiAuthentication` ApiAuthentication — Authentication information required for API calls.
      - `oauthConfig` OAuthConfig — Configurations for authentication with OAuth.
        - `clientId` string — Required. The client ID from the OAuth provider.
        - `clientSecretVersion` string — Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
        - `oauthGrantType` 'OAUTH_GRANT_TYPE_UNSPECIFIED' | 'CLIENT_CREDENTIAL' — Required. OAuth grant types.
        - `scopes` string[] — Optional. The OAuth scopes to grant.
        - `tokenEndpoint` string — Required. The token endpoint in the OAuth provider to exchange for an access token.
      - `serviceAccountAuthConfig` ServiceAccountAuthConfig — Configurations for authentication using a custom service account.
        - `serviceAccount` string — Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
        - `scopes` string[] — Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
      - `apiKeyConfig` ApiKeyConfig — Configurations for authentication with API key.
        - `keyName` string — Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
        - `requestLocation` 'REQUEST_LOCATION_UNSPECIFIED' | 'HEADER' | 'QUERY_STRING' — Required. Key location in the request.
        - `apiKeySecretVersion` string — Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
      - `serviceAgentIdTokenAuthConfig` ServiceAgentIdTokenAuthConfig — Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent.
      - `bearerTokenConfig` BearerTokenConfig — Configurations for authentication with a bearer token.
        - `token` string — Required. The bearer token. Must be in the format `$context.variables.`.
  - `executionType` 'EXECUTION_TYPE_UNSPECIFIED' | 'SYNCHRONOUS' | 'ASYNCHRONOUS' — Optional. The execution type of the tool.
  - `connectorTool` ConnectorTool — A ConnectorTool allows connections to different integrations. See: https://cloud.google.com/integration-connectors/docs/overview.
    - `action` Action — Configuration of an Action for the tool to use. Note: This can be either an Action or an Operation. See https://cloud.google.com/integration-connectors/docs/entities-operation-action for details.
      - `connectionActionId` string — ID of a Connection action for the tool to use.
      - `inputFields` string[] — Optional. Entity fields to use as inputs for the operation. If no fields are specified, all fields of the Entity will be used.
      - `entityOperation` ActionEntityOperation — Entity CRUD operation specification.
        - `entityId` string — Required. ID of the entity.
        - `operation` 'OPERATION_TYPE_UNSPECIFIED' | 'LIST' | 'GET' | 'CREATE' | 'UPDATE' | 'DELETE' — Required. Operation to perform on the entity.
      - `outputFields` string[] — Optional. Entity fields to return from the operation. If no fields are specified, all fields of the Entity will be returned.
    - `connection` string — Required. The full resource name of the referenced Integration Connectors Connection. Format: `projects/{project}/locations/{location}/connections/{connection}`
    - `description` string — Optional. The description of the tool that can be used by the Agent to decide whether to call this ConnectorTool.
    - `authConfig` EndUserAuthConfig — End-user authentication configuration used for Connection calls. The field values must be the names of context variables in the format `$context.variables.`.
      - `oauth2AuthCodeConfig` EndUserAuthConfigOauth2AuthCodeConfig — Oauth 2.0 Authorization Code authentication configuration.
        - `oauthToken` string — Required. Oauth token parameter name to pass through. Must be in the format `$context.variables.`.
      - `oauth2JwtBearerConfig` EndUserAuthConfigOauth2JwtBearerConfig — JWT Profile Oauth 2.0 Authorization Grant authentication configuration.
        - `subject` string — Required. Subject parameter name to pass through. Must be in the format `$context.variables.`.
        - `clientKey` string — Required. Client parameter name to pass through. Must be in the format `$context.variables.`.
        - `issuer` string — Required. Issuer parameter name to pass through. Must be in the format `$context.variables.`.
    - `name` string — Optional. The name of the tool that can be used by the Agent to decide whether to call this ConnectorTool.
  - `dataStoreTool` DataStoreTool — Tool to retrieve from Vertex AI Search datastore or engine for grounding. Accepts either a datastore or an engine, but not both. See Vertex AI Search: https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction.
    - `name` string — Required. The data store tool name.
    - `description` string — Optional. The tool description.
    - `filterParameterBehavior` 'FILTER_PARAMETER_BEHAVIOR_UNSPECIFIED' | 'ALWAYS_INCLUDE' | 'NEVER_INCLUDE' — Optional. The filter parameter behavior.
    - `dataStoreSource` DataStoreToolDataStoreSource — Configuration for searching within a specific DataStore.
      - `filter` string — Optional. Filter specification for the DataStore. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
      - `dataStore` DataStore — A DataStore resource in Vertex AI Search.
        - `documentProcessingMode` 'DOCUMENT_PROCESSING_MODE_UNSPECIFIED' | 'DOCUMENTS' | 'CHUNKS' — Output only. The document processing mode for the data store connection. Only set for PUBLIC_WEB and UNSTRUCTURED data stores.
        - `displayName` string — Output only. The display name of the data store.
        - `name` string — Required. Full resource name of the DataStore. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
        - `type` 'DATA_STORE_TYPE_UNSPECIFIED' | 'PUBLIC_WEB' | 'UNSTRUCTURED' | 'FAQ' | 'CONNECTOR' — Output only. The type of the data store. This field is readonly and populated by the server.
        - `createTime` string, google-datetime — Output only. Timestamp when the data store was created.
        - `connectorConfig` DataStoreConnectorConfig — The connector config for the data store connection.
          - `collection` string — Resource name of the collection the data store belongs to.
          - `collectionDisplayName` string — Display name of the collection the data store belongs to.
          - `dataSource` string — The name of the data source. Example: `salesforce`, `jira`, `confluence`, `bigquery`.
    - `engineSource` DataStoreToolEngineSource — Configuration for searching within an Engine, potentially targeting specific DataStores.
      - `engine` string — Required. Full resource name of the Engine. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
      - `filter` string — Optional. A filter applied to the search across the Engine. Not relevant and not used if 'data_store_sources' is provided. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
      - `dataStoreSources` DataStoreToolDataStoreSource[] — Optional. Use to target specific DataStores within the Engine. If empty, the search applies to all DataStores associated with the Engine.
        - `filter` string — Optional. Filter specification for the DataStore. See: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata
        - `dataStore` DataStore — A DataStore resource in Vertex AI Search.
          - `documentProcessingMode` 'DOCUMENT_PROCESSING_MODE_UNSPECIFIED' | 'DOCUMENTS' | 'CHUNKS' — Output only. The document processing mode for the data store connection. Only set for PUBLIC_WEB and UNSTRUCTURED data stores.
          - `displayName` string — Output only. The display name of the data store.
          - `name` string — Required. Full resource name of the DataStore. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
          - `type` 'DATA_STORE_TYPE_UNSPECIFIED' | 'PUBLIC_WEB' | 'UNSTRUCTURED' | 'FAQ' | 'CONNECTOR' — Output only. The type of the data store. This field is readonly and populated by the server.
          - `createTime` string, google-datetime — Output only. Timestamp when the data store was created.
          - `connectorConfig` DataStoreConnectorConfig — The connector config for the data store connection.
            - `collection` string — Resource name of the collection the data store belongs to.
            - `collectionDisplayName` string — Display name of the collection the data store belongs to.
            - `dataSource` string — The name of the data source. Example: `salesforce`, `jira`, `confluence`, `bigquery`.
    - `modalityConfigs` DataStoreToolModalityConfig[] — Optional. The modality configs for the data store.
      - `summarizationConfig` DataStoreToolSummarizationConfig — Summarization configuration.
        - `modelSettings` ModelSettings — Model settings contains various configurations for the LLM model.
          - `temperature` number, double — Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
          - `model` string — Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
        - `prompt` string — Optional. The prompt definition. If not set, default prompt will be used.
        - `disabled` boolean — Optional. Whether summarization is disabled.
      - `groundingConfig` DataStoreToolGroundingConfig — Grounding configuration.
        - `groundingLevel` number, float — Optional. The groundedness threshold of the answer based on the retrieved sources. The value has a configurable range of [1, 5]. The level is used to threshold the groundedness of the answer, meaning that all responses with a groundedness score below the threshold will fall back to returning relevant snippets only. For example, a level of 3 means that the groundedness score must be 3 or higher for the response to be returned.
        - `disabled` boolean — Optional. Whether grounding is disabled.
      - `modalityType` 'MODALITY_TYPE_UNSPECIFIED' | 'TEXT' | 'AUDIO' — Required. The modality type.
      - `rewriterConfig` DataStoreToolRewriterConfig — Rewriter configuration.
        - `modelSettings` ModelSettings — Model settings contains various configurations for the LLM model.
          - `temperature` number, double — Optional. If set, this temperature will be used for the LLM model. Temperature controls the randomness of the model's responses. Lower temperatures produce responses that are more predictable. Higher temperatures produce responses that are more creative.
          - `model` string — Optional. The LLM model that the agent should use. If not set, the agent will inherit the model from its parent agent.
        - `prompt` string — Optional. The prompt definition. If not set, default prompt will be used.
        - `disabled` boolean — Optional. Whether the rewriter is disabled.
    - `boostSpecs` DataStoreToolBoostSpecs[] — Optional. Boost specification to boost certain documents.
      - `dataStores` string[] — Required. The Data Store where the boosting configuration is applied. Full resource name of DataStore, such as projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}.
      - `spec` DataStoreToolBoostSpec[] — Required. A list of boosting specifications.
        - `conditionBoostSpecs` DataStoreToolBoostSpecConditionBoostSpec[] — Required. A list of boosting specifications.
          - `boost` number, float — Optional. Strength of the boost, which should be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the suggestions a big promotion. However, it does not necessarily mean that the top result will be a boosted suggestion. Setting to -1.0 gives the suggestions a big demotion. However, other suggestions that are relevant might still be shown. Setting to 0.0 means no boost applied. The boosting condition is ignored.
          - `condition` string — Required. An expression which specifies a boost condition. The syntax is the same as filter expression syntax. Currently, the only supported condition is a list of BCP-47 lang codes. Example: To boost suggestions in languages en or fr: (lang_code: ANY("en", "fr"))
          - `boostControlSpec` DataStoreToolBoostSpecConditionBoostSpecBoostControlSpec — Specification for custom ranking based on customer specified attribute value. It provides more controls for customized ranking than the simple (condition, boost) combination above.
            - `controlPoints` DataStoreToolBoostSpecConditionBoostSpecBoostControlSpecControlPoint[] — Optional. The control points used to define the curve. The monotonic function (defined through the interpolation_type above) passes through the control points listed here.
              - …
            - `interpolationType` 'INTERPOLATION_TYPE_UNSPECIFIED' | 'LINEAR' — Optional. The interpolation type to be applied to connect the control points listed below.
            - `fieldName` string — Optional. The name of the field whose value will be used to determine the boost amount.
            - `attributeType` 'ATTRIBUTE_TYPE_UNSPECIFIED' | 'NUMERICAL' | 'FRESHNESS' — Optional. The attribute type to be used to determine the boost amount. The attribute value can be derived from the field value of the specified field_name. In the case of numerical it is straightforward i.e. attribute_value = numerical_field_value. In the case of freshness however, attribute_value = (time.now() - datetime_field_value).
  - `systemTool` SystemTool — Pre-defined system tool.
    - `name` string — Required. The name of the system tool.
    - `description` string — Output only. The description of the system tool.
  - `displayName` string — Output only. The display name of the tool, derived based on the tool's type. For example, display name of a ClientFunction is derived from its `name` property.
  - `pythonFunction` PythonFunction — A Python function tool.
    - `pythonCode` string — Optional. The Python code to execute for the tool.
    - `name` string — Optional. The name of the Python function to execute. Must match a Python function name defined in the python code. Case sensitive. If the name is not provided, the first function defined in the python code will be used.
    - `description` string — Output only. The description of the Python function, parsed from the python code's docstring.
    - `serviceDirectoryConfig` ServiceDirectoryConfig — Configuration for tools using Service Directory.
      - `service` string — Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
  - `mcpTool` McpTool — An MCP tool. See https://modelcontextprotocol.io/specification/2025-06-18/server/tools for more details.
    - `description` string — Optional. The description of the MCP tool.
    - `serverAddress` string — Required. The server address of the MCP server, e.g., "https://example.com/mcp/". If the server is built with the MCP SDK, the url should be suffixed with "/mcp/". Only Streamable HTTP transport based servers are supported. This is the same as the server_address in the McpToolset. See https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http for more details.
    - `inputSchema` Schema — Represents a select subset of an OpenAPI 3.0 schema object.
      - `items` Schema — recursive
      - `maximum` number, double — Optional. Maximum value for Type.INTEGER and Type.NUMBER.
      - `prefixItems` Schema[] — Optional. Schemas of initial elements of Type.ARRAY.
      - `minimum` number, double — Optional. Minimum value for Type.INTEGER and Type.NUMBER.
      - `required` string[] — Optional. Required properties of Type.OBJECT.
      - `enum` string[] — Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
      - `title` string — Optional. The title of the schema.
      - `properties` object — Optional. Properties of Type.OBJECT.
      - `default` unknown
      - `uniqueItems` boolean — Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
      - `ref` string — Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": ``` type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string ``` The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
      - `maxItems` string, int64 — Optional. Maximum number of the elements for Type.ARRAY.
      - `anyOf` Schema[] — Optional. The value should be validated against any (one or more) of the subschemas in the list.
      - `description` string — Optional. The description of the data.
      - `defs` object — Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
      - `type` 'TYPE_UNSPECIFIED' | 'STRING' | 'INTEGER' | 'NUMBER' | 'BOOLEAN' | 'OBJECT' | 'ARRAY' — Required. The type of the data.
      - `additionalProperties` Schema — recursive
      - `nullable` boolean — Optional. Indicates if the value may be null.
      - `minItems` string, int64 — Optional. Minimum number of the elements for Type.ARRAY.
    - `tlsConfig` TlsConfig — The TLS configuration.
      - `caCerts` TlsConfigCaCert[] — Required. Specifies a list of allowed custom CA certificates for HTTPS verification.
        - `displayName` string — Required. The name of the allowed custom CA certificates. This can be used to disambiguate the custom CA certificates.
        - `cert` string, byte — Required. The allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, CES will use Google's default trust store to verify certificates. N.B. Make sure the HTTPS server certificates are signed with "subject alt name". For instance a certificate can be self-signed using the following command: ``` openssl x509 -req -days 200 -in example.com.csr \ -signkey example.com.key \ -out example.com.crt \ -extfile <(printf "\nsubjectAltName='DNS:www.example.com'") ```
    - `name` string — Required. The name of the MCP tool.
    - `serviceDirectoryConfig` ServiceDirectoryConfig — Configuration for tools using Service Directory.
      - `service` string — Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
    - `state` 'STATE_UNSPECIFIED' | 'ACTIVE' | 'INACTIVE' | 'STALE' — Output only. The dynamic availability state of the tool on the external server.
    - `apiAuthentication` ApiAuthentication — Authentication information required for API calls.
      - `oauthConfig` OAuthConfig — Configurations for authentication with OAuth.
        - `clientId` string — Required. The client ID from the OAuth provider.
        - `clientSecretVersion` string — Required. The name of the SecretManager secret version resource storing the client secret. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
        - `oauthGrantType` 'OAUTH_GRANT_TYPE_UNSPECIFIED' | 'CLIENT_CREDENTIAL' — Required. OAuth grant types.
        - `scopes` string[] — Optional. The OAuth scopes to grant.
        - `tokenEndpoint` string — Required. The token endpoint in the OAuth provider to exchange for an access token.
      - `serviceAccountAuthConfig` ServiceAccountAuthConfig — Configurations for authentication using a custom service account.
        - `serviceAccount` string — Required. The email address of the service account used for authentication. CES uses this service account to exchange an access token and the access token is then sent in the `Authorization` header of the request. The service account must have the `roles/iam.serviceAccountTokenCreator` role granted to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
        - `scopes` string[] — Optional. The OAuth scopes to grant. If not specified, the default scope `https://www.googleapis.com/auth/cloud-platform` is used.
      - `apiKeyConfig` ApiKeyConfig — Configurations for authentication with API key.
        - `keyName` string — Required. The parameter name or the header name of the API key. E.g., If the API request is "https://example.com/act?X-Api-Key=", "X-Api-Key" would be the parameter name.
        - `requestLocation` 'REQUEST_LOCATION_UNSPECIFIED' | 'HEADER' | 'QUERY_STRING' — Required. Key location in the request.
        - `apiKeySecretVersion` string — Required. The name of the SecretManager secret version resource storing the API key. Format: `projects/{project}/secrets/{secret}/versions/{version}` Note: You should grant `roles/secretmanager.secretAccessor` role to the CES service agent `service-@gcp-sa-ces.iam.gserviceaccount.com`.
      - `serviceAgentIdTokenAuthConfig` ServiceAgentIdTokenAuthConfig — Configurations for authentication with [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent.
      - `bearerTokenConfig` BearerTokenConfig — Configurations for authentication with a bearer token.
        - `token` string — Required. The bearer token. Must be in the format `$context.variables.`.
    - `customHeaders` object — Optional. The custom headers to send in the request to the MCP server. The values must be in the format `$context.variables.` and can be set in the session variables. See https://docs.cloud.google.com/customer-engagement-ai/conversational-agents/ps/tool/open-api#openapi-injection for more details.
    - `outputSchema` Schema — Represents a select subset of an OpenAPI 3.0 schema object.
      - `items` Schema — recursive
      - `maximum` number, double — Optional. Maximum value for Type.INTEGER and Type.NUMBER.
      - `prefixItems` Schema[] — Optional. Schemas of initial elements of Type.ARRAY.
      - `minimum` number, double — Optional. Minimum value for Type.INTEGER and Type.NUMBER.
      - `required` string[] — Optional. Required properties of Type.OBJECT.
      - `enum` string[] — Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
      - `title` string — Optional. The title of the schema.
      - `properties` object — Optional. Properties of Type.OBJECT.
      - `default` unknown
      - `uniqueItems` boolean — Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
      - `ref` string — Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": ``` type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string ``` The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
      - `maxItems` string, int64 — Optional. Maximum number of the elements for Type.ARRAY.
      - `anyOf` Schema[] — Optional. The value should be validated against any (one or more) of the subschemas in the list.
      - `description` string — Optional. The description of the data.
      - `defs` object — Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
      - `type` 'TYPE_UNSPECIFIED' | 'STRING' | 'INTEGER' | 'NUMBER' | 'BOOLEAN' | 'OBJECT' | 'ARRAY' — Required. The type of the data.
      - `additionalProperties` Schema — recursive
      - `nullable` boolean — Optional. Indicates if the value may be null.
      - `minItems` string, int64 — Optional. Minimum number of the elements for Type.ARRAY.
    - `nameOverride` string — Optional. The name override of the MCP tool. This is populated if the name was overridden by a Toolset override.
  - `etag` string — Etag used to ensure the object hasn't changed during a read-modify-write operation. If the etag is empty, the update will overwrite any concurrent changes.
  - `generatedSummary` string — Output only. If the tool is generated by the LLM assistant, this field contains a descriptive summary of the generation.
  - `googleSearchTool` GoogleSearchTool — Represents a tool to perform Google web searches for grounding. See https://cloud.google.com/customer-engagement-ai/conversational-agents/ps/tool#google-search.
    - `preferredDomains` string[] — Optional. Specifies domains to restrict search results to. Example: "example.com", "another.site". A maximum of 20 domains can be specified.
    - `excludeDomains` string[] — Optional. List of domains to be excluded from the search results. Example: "example.com". A maximum of 2000 domains can be excluded.
    - `description` string — Optional. Description of the tool's purpose.
    - `contextUrls` string[] — Optional. Content will be fetched directly from these URLs for context and grounding. Example: "https://example.com/path.html". A maximum of 20 URLs are allowed.
    - `promptConfig` GoogleSearchToolPromptConfig — Prompt settings used by the model when processing or summarizing the google search results.
      - `textPrompt` string — Optional. Defines the prompt used for the system instructions when interacting with the agent in chat conversations. If not set, default prompt will be used.
      - `voicePrompt` string — Optional. Defines the prompt used for the system instructions when interacting with the agent in voice conversations. If not set, default prompt will be used.
    - `name` string — Required. The name of the tool.
  - `widgetTool` WidgetTool — Represents a widget tool that the agent can invoke. When the tool is chosen by the agent, agent will return the widget to the client. The client is responsible for processing the widget and generating the next user query to continue the interaction with the agent.
    - `parameters` Schema — Represents a select subset of an OpenAPI 3.0 schema object.
      - `items` Schema — recursive
      - `maximum` number, double — Optional. Maximum value for Type.INTEGER and Type.NUMBER.
      - `prefixItems` Schema[] — Optional. Schemas of initial elements of Type.ARRAY.
      - `minimum` number, double — Optional. Minimum value for Type.INTEGER and Type.NUMBER.
      - `required` string[] — Optional. Required properties of Type.OBJECT.
      - `enum` string[] — Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
      - `title` string — Optional. The title of the schema.
      - `properties` object — Optional. Properties of Type.OBJECT.
      - `default` unknown
      - `uniqueItems` boolean — Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
      - `ref` string — Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": ``` type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string ``` The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
      - `maxItems` string, int64 — Optional. Maximum number of the elements for Type.ARRAY.
      - `anyOf` Schema[] — Optional. The value should be validated against any (one or more) of the subschemas in the list.
      - `description` string — Optional. The description of the data.
      - `defs` object — Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
      - `type` 'TYPE_UNSPECIFIED' | 'STRING' | 'INTEGER' | 'NUMBER' | 'BOOLEAN' | 'OBJECT' | 'ARRAY' — Required. The type of the data.
      - `additionalProperties` Schema — recursive
      - `nullable` boolean — Optional. Indicates if the value may be null.
      - `minItems` string, int64 — Optional. Minimum number of the elements for Type.ARRAY.
    - `widgetType` 'WIDGET_TYPE_UNSPECIFIED' | 'CUSTOM' | 'PRODUCT_CAROUSEL' | 'PRODUCT_DETAILS' | 'QUICK_ACTIONS' | 'PRODUCT_COMPARISON' | 'ADVANCED_PRODUCT_DETAILS' | 'SHORT_FORM' | 'OVERALL_SATISFACTION' | 'ORDER_SUMMARY' | 'APPOINTMENT_DETAILS' | 'APPOINTMENT_SCHEDULER' | 'CONTACT_FORM' — Optional. The type of the widget tool. If not specified, the default type will be CUSTOMIZED.
    - `uiConfig` object — Optional. Configuration for rendering the widget.
    - `description` string — Optional. The description of the widget tool.
    - `dataMapping` WidgetToolDataMapping — Configuration for mapping data from a source tool to the widget's input parameters.
      - `pythonFunction` PythonFunction — A Python function tool.
        - `pythonCode` string — Optional. The Python code to execute for the tool.
        - `name` string — Optional. The name of the Python function to execute. Must match a Python function name defined in the python code. Case sensitive. If the name is not provided, the first function defined in the python code will be used.
        - `description` string — Output only. The description of the Python function, parsed from the python code's docstring.
        - `serviceDirectoryConfig` ServiceDirectoryConfig — Configuration for tools using Service Directory.
          - `service` string — Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`. Location of the service directory must be the same as the location of the app.
      - `sourceToolName` string — Optional. The resource name of the tool that provides the data for the widget (e.g., a search tool or a custom function). Format: `projects/{project}/locations/{location}/agents/{agent}/tools/{tool}`
      - `fieldMappings` object — Optional. A map of widget input parameter fields to the corresponding output fields of the source tool.
      - `mode` 'MODE_UNSPECIFIED' | 'FIELD_MAPPING' | 'PYTHON_SCRIPT' — Optional. The mode of the data mapping.
      - `pythonScript` string — Deprecated: Use `python_function` instead.
    - `name` string — Required. The display name of the widget tool.
    - `textResponseConfig` WidgetToolTextResponseConfig — Configuration for the text response returned with the widget.
      - `staticText` string — Optional. The static text response to return when type is STATIC.
      - `type` 'TYPE_UNSPECIFIED' | 'NONE' | 'LLM_GENERATED' | 'STATIC' — Optional. The strategy for providing the text response.
      - `textResponseInstruction` string — Optional. Instruction for the LLM on how to generate the text response. Used as the description for the text response parameter if type is LLM_GENERATED.
  - `timeout` string, google-duration — Optional. The timeout for the tool execution. If not set, the default timeout is 30 seconds for `SYNCHRONOUS` tools and 60 seconds for `ASYNCHRONOUS` tools.
  - `clientFunction` ClientFunction — Represents a client-side function that the agent can invoke. When the tool is chosen by the agent, control is handed off to the client. The client is responsible for executing the function and returning the result as a ToolResponse to continue the interaction with the agent.
    - `name` string — Required. The function name.
    - `description` string — Optional. The function description.
    - `parameters` Schema — Represents a select subset of an OpenAPI 3.0 schema object.
      - `items` Schema — recursive
      - `maximum` number, double — Optional. Maximum value for Type.INTEGER and Type.NUMBER.
      - `prefixItems` Schema[] — Optional. Schemas of initial elements of Type.ARRAY.
      - `minimum` number, double — Optional. Minimum value for Type.INTEGER and Type.NUMBER.
      - `required` string[] — Optional. Required properties of Type.OBJECT.
      - `enum` string[] — Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
      - `title` string — Optional. The title of the schema.
      - `properties` object — Optional. Properties of Type.OBJECT.
      - `default` unknown
      - `uniqueItems` boolean — Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
      - `ref` string — Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": ``` type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string ``` The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
      - `maxItems` string, int64 — Optional. Maximum number of the elements for Type.ARRAY.
      - `anyOf` Schema[] — Optional. The value should be validated against any (one or more) of the subschemas in the list.
      - `description` string — Optional. The description of the data.
      - `defs` object — Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
      - `type` 'TYPE_UNSPECIFIED' | 'STRING' | 'INTEGER' | 'NUMBER' | 'BOOLEAN' | 'OBJECT' | 'ARRAY' — Required. The type of the data.
      - `additionalProperties` Schema — recursive
      - `nullable` boolean — Optional. Indicates if the value may be null.
      - `minItems` string, int64 — Optional. Minimum number of the elements for Type.ARRAY.
    - `response` Schema — Represents a select subset of an OpenAPI 3.0 schema object.
      - `items` Schema — recursive
      - `maximum` number, double — Optional. Maximum value for Type.INTEGER and Type.NUMBER.
      - `prefixItems` Schema[] — Optional. Schemas of initial elements of Type.ARRAY.
      - `minimum` number, double — Optional. Minimum value for Type.INTEGER and Type.NUMBER.
      - `required` string[] — Optional. Required properties of Type.OBJECT.
      - `enum` string[] — Optional. Possible values of the element of primitive type with enum format. Examples: 1. We can define direction as : {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} 2. We can define apartment number as : {type:INTEGER, format:enum, enum:["101", "201", "301"]}
      - `title` string — Optional. The title of the schema.
      - `properties` object — Optional. Properties of Type.OBJECT.
      - `default` unknown
      - `uniqueItems` boolean — Optional. Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.
      - `ref` string — Optional. Allows indirect references between schema nodes. The value should be a valid reference to a child of the root `defs`. For example, the following schema defines a reference to a schema node named "Pet": ``` type: object properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name: type: string ``` The value of the "pet" property is a reference to the schema node named "Pet". See details in https://json-schema.org/understanding-json-schema/structuring.
      - `maxItems` string, int64 — Optional. Maximum number of the elements for Type.ARRAY.
      - `anyOf` Schema[] — Optional. The value should be validated against any (one or more) of the subschemas in the list.
      - `description` string — Optional. The description of the data.
      - `defs` object — Optional. A map of definitions for use by `ref`. Only allowed at the root of the schema.
      - `type` 'TYPE_UNSPECIFIED' | 'STRING' | 'INTEGER' | 'NUMBER' | 'BOOLEAN' | 'OBJECT' | 'ARRAY' — Required. The type of the data.
      - `additionalProperties` Schema — recursive
      - `nullable` boolean — Optional. Indicates if the value may be null.
      - `minItems` string, int64 — Optional. Minimum number of the elements for Type.ARRAY.
  - `fileSearchTool` FileSearchTool — The file search tool allows the agent to search across the files uploaded by the app/agent developer. It has presets to give relatively good quality search over the uploaded files and summarization of the retrieved results.
    - `corpusType` 'CORPUS_TYPE_UNSPECIFIED' | 'USER_OWNED' | 'FULLY_MANAGED' — Optional. The type of the corpus. Default is FULLY_MANAGED.
    - `name` string — Required. The tool name.
    - `description` string — Optional. The tool description.
    - `fileCorpus` string — Optional. The corpus where files are stored. Format: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}
  - `agentTool` AgentTool — Represents a tool that allows the agent to call another agent.
    - `name` string — Required. The name of the agent tool.
    - `description` string — Optional. Description of the tool's purpose.
    - `agent` string — Optional. The resource name of the agent that is the entry point of the tool. Format: `projects/{project}/locations/{location}/agents/{agent}`

## Response `200`

Successful response

---

[API](https://skmtc.net/google/apis/ces.md) · [All operations](https://skmtc.net/google/apis/ces/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/google/ces/revisions/429598666166/schema)
