> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gumloop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update agent abilities

> Turn the agent's native abilities on or off and set their options: Web Search, Web Fetch, Image Generation, Search Past Conversations, Ask Question, Tool Discovery, Manage Evaluations and Browser.

Send only the abilities you want to change. Enabling an ability that is already on keeps its saved settings unless you send new ones. Abilities your organization's policy denies (for example Browser) answer `403`.




## OpenAPI

````yaml patch /agents/{agent_id}/abilities
openapi: 3.0.0
info:
  title: Public API
  version: 1.0.0
servers:
  - url: https://api.gumloop.com/api/v1
security: []
paths:
  /agents/{agent_id}/abilities:
    patch:
      tags:
        - Agents
      summary: Update agent abilities
      description: >
        Turn the agent's native abilities on or off and set their options: Web
        Search, Web Fetch, Image Generation, Search Past Conversations, Ask
        Question, Tool Discovery, Manage Evaluations and Browser.


        Send only the abilities you want to change. Enabling an ability that is
        already on keeps its saved settings unless you send new ones. Abilities
        your organization's policy denies (for example Browser) answer `403`.
      operationId: updateAgentAbilities
      parameters:
        - in: path
          name: agent_id
          required: true
          schema:
            type: string
          description: ID of a custom agent.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/AgentAbilities'
                - type: object
                  properties:
                    version:
                      type: integer
                      description: >-
                        Optional. The `version` you last read; the update is
                        refused with `409 agent_version_conflict` if the agent
                        changed since.
      responses:
        '200':
          description: The agent's abilities after the change.
          content:
            application/json:
              schema:
                type: object
                properties:
                  agent_id:
                    type: string
                    example: abc123DEFghiJKL
                  abilities:
                    $ref: '#/components/schemas/AgentAbilities'
                  version:
                    type: integer
                    nullable: true
                    example: 5
        '400':
          description: >-
            Invalid request body, or the agent is a platform agent
            (`agent_not_customizable`).
        '401':
          description: Unauthorized — missing or invalid API key.
        '403':
          description: >-
            Forbidden — the caller lacks update access, or an ability is denied
            by organization policy.
        '404':
          description: Agent not found.
        '409':
          description: >-
            `agent_version_conflict` — the agent changed since the `version` you
            sent.
      security:
        - bearerAuth: []
      x-codeSamples:
        - lang: bash
          label: cURL
          source: >
            curl -X PATCH
            'https://api.gumloop.com/api/v1/agents/abc123DEFghiJKL/abilities' \
              -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
              -H 'Content-Type: application/json' \
              -d '{
                "web_search": {"enabled": true, "provider": "exa"},
                "ask_question": {"enabled": false}
              }'
        - lang: python
          label: Python
          source: |
            from gumloop import Gumloop

            client = Gumloop(access_token="YOUR_ACCESS_TOKEN")

            response = client.agents.update_abilities(
                "abc123DEFghiJKL",
                web_search={"enabled": True, "provider": "exa"},
                ask_question={"enabled": False},
            )
            print(response.abilities.web_search.enabled)
components:
  schemas:
    AgentAbilities:
      type: object
      description: >-
        Native abilities. On `PATCH /agents/{agent_id}/abilities` send only the
        ones you want to change; each is a small object so settings travel with
        the toggle.
      properties:
        web_search:
          type: object
          properties:
            enabled:
              type: boolean
            provider:
              type: string
              nullable: true
              description: Preferred search connector, e.g. `exa`. Omit for automatic.
        web_fetch:
          type: object
          properties:
            enabled:
              type: boolean
            provider:
              type: string
              nullable: true
        image_generation:
          type: object
          properties:
            enabled:
              type: boolean
            model:
              type: string
              nullable: true
        search_past_conversations:
          type: object
          properties:
            enabled:
              type: boolean
        ask_question:
          type: object
          description: Whether the agent may pause to ask the person a question.
          properties:
            enabled:
              type: boolean
        tool_discovery:
          type: object
          properties:
            mode:
              type: string
              enum:
                - auto
                - enabled
        manage_evaluations:
          type: object
          properties:
            enabled:
              type: boolean
        browser:
          type: object
          properties:
            enabled:
              type: boolean
            proxy_country:
              type: string
              nullable: true
              description: >-
                ISO 3166 alpha-2 country the browser appears to browse from.
                `null` turns the proxy off.
              example: us
            profile_id:
              type: string
              nullable: true
              description: >-
                Browser profile whose sign-ins the agent uses. Pinning one
                switches the browser to agent-owned credentials, as the panel
                does; `null` clears both.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        A personal API key or an [OAuth 2.0](/api-reference/oauth) access token.
        Personal API keys also require the `x-auth-key` header with your user
        ID.

````