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

# Get Org

> Get organization details by ID through the deprecated detail route.



## OpenAPI

````yaml /openapi/openhands-cloud.json get /api/organizations/{org_id}
openapi: 3.1.0
info:
  title: OpenHands
  description: 'OpenHands: Code Less, Make More'
  version: 0.0.1
servers: []
security: []
paths:
  /api/organizations/{org_id}:
    get:
      tags:
        - Orgs
      summary: Get Org
      description: Get organization details by ID through the deprecated detail route.
      operationId: get_org_api_organizations__org_id__get
      parameters:
        - name: org_id
          in: path
          required: true
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            title: Org Id
        - name: X-Org-Id
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: X-Org-Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrgResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      deprecated: true
      security:
        - APIKeyHeader: []
components:
  schemas:
    OrgResponse:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        contact_name:
          type: string
          title: Contact Name
        contact_email:
          type: string
          title: Contact Email
        conversation_expiration:
          anyOf:
            - type: integer
            - type: 'null'
          title: Conversation Expiration
        remote_runtime_resource_factor:
          anyOf:
            - type: integer
            - type: 'null'
          title: Remote Runtime Resource Factor
        billing_margin:
          anyOf:
            - type: number
            - type: 'null'
          title: Billing Margin
        enable_proactive_conversation_starters:
          type: boolean
          title: Enable Proactive Conversation Starters
          default: true
        sandbox_base_container_image:
          anyOf:
            - type: string
            - type: 'null'
          title: Sandbox Base Container Image
        sandbox_runtime_container_image:
          anyOf:
            - type: string
            - type: 'null'
          title: Sandbox Runtime Container Image
        org_version:
          type: integer
          title: Org Version
          default: 0
        agent_settings:
          oneOf:
            - $ref: '#/components/schemas/OpenHandsAgentSettings'
            - $ref: '#/components/schemas/LLMAgentSettings'
            - $ref: '#/components/schemas/ACPAgentSettings'
          title: Agent Settings
        conversation_settings:
          $ref: '#/components/schemas/ConversationSettings'
        search_api_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Search Api Key
        sandbox_api_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Sandbox Api Key
        max_budget_per_task:
          anyOf:
            - type: number
            - type: 'null'
          title: Max Budget Per Task
        v1_enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: V1 Enabled
        credits:
          anyOf:
            - type: number
            - type: 'null'
          title: Credits
        is_personal:
          type: boolean
          title: Is Personal
          default: false
      type: object
      required:
        - id
        - name
        - contact_name
        - contact_email
      title: OrgResponse
      description: Response model for organization.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    OpenHandsAgentSettings:
      properties:
        schema_version:
          type: integer
          minimum: 1
          title: Schema Version
          default: 5
        agent_kind:
          type: string
          const: openhands
          title: Agent Kind
          description: >-
            Discriminator for the ``AgentSettings`` union. ``'openhands'``
            selects the standard built-in OpenHands agent.
          default: openhands
        agent:
          type: string
          title: Agent
          description: Agent class to use.
          default: CodeActAgent
          openhands_settings:
            depends_on: []
            label: Agent
            prominence: major
            variant: openhands
        llm:
          $ref: '#/components/schemas/LLM-Output'
          description: LLM settings for the agent.
          openhands_settings_section:
            key: llm
            label: LLM
            variant: openhands
        tools:
          anyOf:
            - items:
                $ref: '#/components/schemas/openhands__sdk__tool__spec__Tool'
              type: array
            - type: 'null'
          title: Tools
          description: >-
            Tools available to the agent. None (the default) resolves to the
            standard exec set (see openhands.sdk.tool.defaults), plus the
            sub-agent tool set when enable_sub_agents is set; [] is an
            explicitly bare agent; a non-empty list is used exactly as given.
            Environment-dependent tools (browser) are injected by the serving
            layer, not the default.
          openhands_settings:
            depends_on: []
            label: Tools
            prominence: major
            variant: openhands
        enable_sub_agents:
          type: boolean
          title: Enable Sub Agents
          description: Enable sub-agent delegation via TaskToolSet.
          default: false
          openhands_settings:
            depends_on: []
            label: Enable sub-agents
            prominence: major
            variant: openhands
        enable_switch_llm_tool:
          type: boolean
          title: Enable Switch Llm Tool
          description: >-
            Enable the built-in switch_llm tool for switching between saved LLM
            profiles.
          default: true
          openhands_settings:
            depends_on: []
            label: Enable LLM switching tool
            prominence: minor
            variant: openhands
        tool_concurrency_limit:
          type: integer
          minimum: 1
          title: Tool Concurrency Limit
          description: >-
            Maximum number of tool calls to execute concurrently per agent step.
            1 = sequential (default). Values > 1 enable parallel tool calls;
            concurrent tools share the conversation object, filesystem, and
            working directory, so mutations to shared state may race.
          default: 1
          openhands_settings:
            depends_on: []
            label: Parallel tool calls
            prominence: major
            variant: openhands
        mcp_config:
          additionalProperties:
            $ref: '#/components/schemas/MCPServer-Output'
          type: object
          title: Mcp Config
          description: MCP servers available to the agent.
          openhands_settings:
            depends_on: []
            label: MCP servers
            prominence: minor
            variant: openhands
        agent_context:
          $ref: '#/components/schemas/AgentContext-Output'
          description: Context for the agent (skills, secrets, message suffixes).
          openhands_settings_section:
            key: agent_context
            label: Memory
            variant: openhands
        condenser:
          oneOf:
            - $ref: '#/components/schemas/LLMSummarizingCondenserSettings'
            - $ref: '#/components/schemas/NoOpCondenserSettings'
          title: Condenser
          description: Condenser settings for the agent.
          openhands_settings_section:
            key: condenser
            label: Condenser
            variant: openhands
        verification:
          $ref: '#/components/schemas/VerificationSettings'
          description: Verification settings for the agent critic.
          openhands_settings_section:
            key: verification
            label: Verification
            variant: openhands
      type: object
      title: OpenHandsAgentSettings
      description: |-
        Settings for a standard LLM-backed :class:`Agent`.

        This is the long-standing ``AgentSettings`` shape; fields here build
        the default ``Agent`` (LLM + tools + MCP + condenser + critic).
    LLMAgentSettings:
      properties:
        schema_version:
          type: integer
          minimum: 1
          title: Schema Version
          default: 5
        agent_kind:
          type: string
          const: llm
          title: Agent Kind
          description: >-
            Discriminator for the ``AgentSettings`` union. ``'llm'`` selects the
            standard LLM-backed agent. Deprecated; use ``'openhands'``.
          default: llm
        agent:
          type: string
          title: Agent
          description: Agent class to use.
          default: CodeActAgent
          openhands_settings:
            depends_on: []
            label: Agent
            prominence: major
            variant: openhands
        llm:
          $ref: '#/components/schemas/LLM-Output'
          description: LLM settings for the agent.
          openhands_settings_section:
            key: llm
            label: LLM
            variant: openhands
        tools:
          anyOf:
            - items:
                $ref: '#/components/schemas/openhands__sdk__tool__spec__Tool'
              type: array
            - type: 'null'
          title: Tools
          description: >-
            Tools available to the agent. None (the default) resolves to the
            standard exec set (see openhands.sdk.tool.defaults), plus the
            sub-agent tool set when enable_sub_agents is set; [] is an
            explicitly bare agent; a non-empty list is used exactly as given.
            Environment-dependent tools (browser) are injected by the serving
            layer, not the default.
          openhands_settings:
            depends_on: []
            label: Tools
            prominence: major
            variant: openhands
        enable_sub_agents:
          type: boolean
          title: Enable Sub Agents
          description: Enable sub-agent delegation via TaskToolSet.
          default: false
          openhands_settings:
            depends_on: []
            label: Enable sub-agents
            prominence: major
            variant: openhands
        enable_switch_llm_tool:
          type: boolean
          title: Enable Switch Llm Tool
          description: >-
            Enable the built-in switch_llm tool for switching between saved LLM
            profiles.
          default: true
          openhands_settings:
            depends_on: []
            label: Enable LLM switching tool
            prominence: minor
            variant: openhands
        tool_concurrency_limit:
          type: integer
          minimum: 1
          title: Tool Concurrency Limit
          description: >-
            Maximum number of tool calls to execute concurrently per agent step.
            1 = sequential (default). Values > 1 enable parallel tool calls;
            concurrent tools share the conversation object, filesystem, and
            working directory, so mutations to shared state may race.
          default: 1
          openhands_settings:
            depends_on: []
            label: Parallel tool calls
            prominence: major
            variant: openhands
        mcp_config:
          additionalProperties:
            $ref: '#/components/schemas/MCPServer-Output'
          type: object
          title: Mcp Config
          description: MCP servers available to the agent.
          openhands_settings:
            depends_on: []
            label: MCP servers
            prominence: minor
            variant: openhands
        agent_context:
          $ref: '#/components/schemas/AgentContext-Output'
          description: Context for the agent (skills, secrets, message suffixes).
          openhands_settings_section:
            key: agent_context
            label: Memory
            variant: openhands
        condenser:
          oneOf:
            - $ref: '#/components/schemas/LLMSummarizingCondenserSettings'
            - $ref: '#/components/schemas/NoOpCondenserSettings'
          title: Condenser
          description: Condenser settings for the agent.
          openhands_settings_section:
            key: condenser
            label: Condenser
            variant: openhands
        verification:
          $ref: '#/components/schemas/VerificationSettings'
          description: Verification settings for the agent critic.
          openhands_settings_section:
            key: verification
            label: Verification
            variant: openhands
      type: object
      title: LLMAgentSettings
      description: >-
        Legacy ``agent_kind='llm'`` variant of :class:`OpenHandsAgentSettings`.


        ``LLMAgentSettings`` was the public class name before the v1.19.0
        rename.

        The public import aliases (``from openhands.sdk import
        LLMAgentSettings`` and

        ``from openhands.sdk.settings import LLMAgentSettings``) were removed in

        v1.24.0 — use :class:`OpenHandsAgentSettings` for all new code.


        The class itself is retained (reachable at

        ``openhands.sdk.settings.model.LLMAgentSettings``) because it remains a

        member of the settings discriminated union: it keeps
        ``agent_kind='llm'`` so

        persisted legacy payloads still deserialize and the API-breakage checker

        sees no field-value change versus the published release.
    ACPAgentSettings:
      properties:
        schema_version:
          type: integer
          minimum: 1
          title: Schema Version
          default: 5
        agent_kind:
          type: string
          const: acp
          title: Agent Kind
          description: >-
            Discriminator for the ``AgentSettings`` union. ``'acp'`` selects an
            ACP-delegating agent.
          default: acp
        acp_server:
          type: string
          enum:
            - claude-code
            - codex
            - gemini-cli
            - custom
          title: Acp Server
          description: >-
            Which ACP-compatible backend to launch. Each choice maps to a
            default subprocess command (see ``acp_command`` to override).
          default: claude-code
          openhands_settings:
            depends_on: []
            label: ACP server
            prominence: critical
          openhands_settings_section:
            key: acp
            label: ACP (Agent Client Protocol)
            variant: acp
        acp_command:
          items:
            type: string
          type: array
          title: Acp Command
          description: >-
            Optional explicit command to launch the ACP subprocess. Leave empty
            to use the default for :attr:`acp_server` (e.g. ``npx -y
            @agentclientprotocol/claude-agent-acp`` for ``claude-code``). Must
            be set when :attr:`acp_server` is ``'custom'``.
          openhands_settings:
            depends_on: []
            label: ACP command (custom override)
            prominence: minor
          openhands_settings_section:
            key: acp
            label: ACP (Agent Client Protocol)
            variant: acp
        acp_args:
          items:
            type: string
          type: array
          title: Acp Args
          description: Additional arguments appended to the ACP server command.
          openhands_settings:
            depends_on: []
            label: ACP extra args
            prominence: minor
          openhands_settings_section:
            key: acp
            label: ACP (Agent Client Protocol)
            variant: acp
        acp_model:
          anyOf:
            - type: string
            - type: 'null'
          title: Acp Model
          description: >-
            Model identifier for the ACP server to use (e.g. ``'sonnet'`` or
            ``'gpt-5.5'``). Applied via the protocol — set_config_option(model)
            for configOptions-based servers (codex, claude), else
            set_session_model. Leave blank to let the server pick its default.
          openhands_settings:
            depends_on: []
            label: ACP model
            prominence: critical
          openhands_settings_section:
            key: acp
            label: ACP (Agent Client Protocol)
            variant: acp
        acp_session_mode:
          anyOf:
            - type: string
            - type: 'null'
          title: Acp Session Mode
          description: >-
            Session mode ID (e.g. ``bypassPermissions``). Leave blank to
            auto-detect from the ACP server type.
          openhands_settings:
            depends_on: []
            label: ACP session mode
            prominence: minor
          openhands_settings_section:
            key: acp
            label: ACP (Agent Client Protocol)
            variant: acp
        acp_prompt_timeout:
          type: number
          exclusiveMinimum: 0
          title: Acp Prompt Timeout
          description: >-
            Inactivity timeout (seconds) for a single ACP prompt() round-trip.
            The deadline resets on every update from the ACP server, so a
            steadily-progressing agent keeps running; the prompt is only aborted
            after this many seconds with no activity at all.
          default: 1800
          openhands_settings:
            depends_on: []
            label: ACP prompt inactivity timeout (seconds)
            prominence: minor
          openhands_settings_section:
            key: acp
            label: ACP (Agent Client Protocol)
            variant: acp
        acp_startup_timeout:
          type: number
          exclusiveMinimum: 0
          title: Acp Startup Timeout
          description: >-
            Timeout (seconds) for ACP server startup: spawning the subprocess,
            the initialize/authenticate handshake, and
            new_session()/load_session(). A hard deadline, unlike
            acp_prompt_timeout, since startup has no intermediate progress
            signal to reset it against.
          default: 90
          openhands_settings:
            depends_on: []
            label: ACP startup timeout (seconds)
            prominence: minor
          openhands_settings_section:
            key: acp
            label: ACP (Agent Client Protocol)
            variant: acp
        mcp_config:
          additionalProperties:
            $ref: '#/components/schemas/MCPServer-Output'
          type: object
          title: Mcp Config
          description: >-
            MCP servers to make available to the ACP subprocess. Unlike the
            OpenHands agent — where these become in-process MCP tools — the
            servers are forwarded to the ACP server at session creation and it
            owns the connection. Remote (http/sse) servers are only forwarded
            when the ACP server advertises support for that transport; stdio
            servers (which run inside the runtime) are always forwarded.
          openhands_settings:
            depends_on: []
            label: MCP servers
            prominence: minor
            variant: acp
        acp_isolate_data_dir:
          type: boolean
          title: Acp Isolate Data Dir
          description: >-
            Give the ACP subprocess a per-conversation CLI data/config root
            instead of the shared user HOME. Forwarded to
            :attr:`~openhands.sdk.agent.ACPAgent.acp_isolate_data_dir`; off by
            default. Enable from the deploying application when several
            conversations share one sandbox (see #1019).
          default: false
        acp_file_secrets:
          items:
            $ref: '#/components/schemas/ACPFileSecretSpec'
          type: array
          title: Acp File Secrets
          description: >-
            Reserved 'file-content' credential secrets the SDK materialises to
            disk before launching the ACP subprocess (e.g. Codex auth.json,
            Gemini Vertex SA JSON). Defaults to the built-in supported
            providers; override to support other ACP servers with different
            file-auth schemes.
        llm:
          $ref: '#/components/schemas/LLM-Output'
          description: >-
            DEPRECATED (removed in 1.33.0): LLM identity used for cost/token
            attribution. The ACP subprocess makes its own model calls;
            ``acp_model`` is the model identity. Credentials set here
            (``api_key`` / ``base_url``) are ignored — route provider
            credentials through the conversation secrets channel
            (agent_context.secrets / StartConversationRequest.secrets, which
            route through state.secret_registry), keyed by the provider's env
            var name.
          openhands_settings_section:
            key: llm
            label: LLM (for metrics)
            variant: acp
        agent_context:
          anyOf:
            - $ref: '#/components/schemas/AgentContext-Output'
            - type: 'null'
          description: >-
            Prompt-only context for the ACP server. ``secrets`` here are
            advertised to the agent (names/descriptions) and reach the
            subprocess env through ``state.secret_registry``:
            ``LocalConversation`` seeds ``agent_context.secrets`` into the
            registry at conversation init (below ``request.secrets``), so
            callers that build the request outside Python (e.g. canvas-local)
            are covered too, not just the ``create_request`` path. Provider
            credentials belong here (or in ``request.secrets``) keyed by the
            provider's env var name.
      type: object
      title: ACPAgentSettings
      description: >-
        Settings for an ACP (Agent Client Protocol) agent.


        ``create_agent()`` returns an :class:`ACPAgent` that delegates to a

        subprocess ACP server.  The ACP server manages its own system prompt,

        tools, MCP, and (primary) LLM calls; those fields from

        :class:`OpenHandsAgentSettings` do not apply here.


        ``ACPAgent`` uses the :attr:`llm` field purely for cost/token
        attribution,

        never for LLM requests; :attr:`acp_model` is the model identity. Any

        credentials set on it (``llm.api_key`` / ``llm.base_url``) are ignored —

        provider credentials ride the conversation secrets channel

        (``request.secrets`` / ``agent_context.secrets`` →
        ``state.secret_registry``)

        keyed by the provider's env var name (:attr:`api_key_env_var`).
    ConversationSettings:
      properties:
        schema_version:
          type: integer
          minimum: 1
          title: Schema Version
          default: 1
        max_iterations:
          type: integer
          minimum: 1
          title: Max Iterations
          description: >-
            Maximum number of iterations the conversation will run before
            stopping.
          default: 500
          openhands_settings:
            depends_on: []
            label: Max iterations
            prominence: major
        confirmation_mode:
          type: boolean
          title: Confirmation Mode
          description: Require user confirmation before executing risky actions.
          default: false
          openhands_settings:
            depends_on: []
            label: Confirmation mode
            prominence: critical
          openhands_settings_section:
            key: verification
            label: Verification
        security_analyzer:
          anyOf:
            - type: string
              enum:
                - llm
                - none
            - type: 'null'
          title: Security Analyzer
          description: Security analyzer that evaluates actions before execution.
          default: llm
          openhands_settings:
            depends_on:
              - confirmation_mode
            label: Security analyzer
            prominence: major
          openhands_settings_section:
            key: verification
            label: Verification
      type: object
      title: ConversationSettings
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    LLM-Output:
      properties:
        model:
          type: string
          title: Model
          description: Model name.
          default: gpt-5.5
          openhands_settings:
            depends_on: []
            prominence: critical
        api_key:
          anyOf:
            - type: string
            - type: string
              format: password
              writeOnly: true
            - type: 'null'
          title: Api Key
          description: API key.
          openhands_settings:
            depends_on: []
            label: API Key
            prominence: critical
        auth_type:
          type: string
          enum:
            - api_key
            - subscription
          title: Auth Type
          description: Authentication mode for the LLM.
          default: api_key
          openhands_settings:
            depends_on: []
            label: Authentication
            prominence: critical
        subscription_vendor:
          anyOf:
            - type: string
              const: openai
            - type: 'null'
          title: Subscription Vendor
          description: Subscription provider for subscription-backed LLM access.
          openhands_settings:
            depends_on:
              - auth_type
            label: Subscription provider
            prominence: critical
        base_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Base Url
          description: Custom base URL.
          openhands_settings:
            depends_on: []
            prominence: major
        api_version:
          anyOf:
            - type: string
            - type: 'null'
          title: Api Version
          description: API version (e.g., Azure).
          openhands_settings:
            depends_on: []
            prominence: minor
        aws_access_key_id:
          anyOf:
            - type: string
            - type: string
              format: password
              writeOnly: true
            - type: 'null'
          title: Aws Access Key Id
          openhands_settings:
            depends_on: []
            prominence: minor
        aws_secret_access_key:
          anyOf:
            - type: string
            - type: string
              format: password
              writeOnly: true
            - type: 'null'
          title: Aws Secret Access Key
          openhands_settings:
            depends_on: []
            prominence: minor
        aws_session_token:
          anyOf:
            - type: string
            - type: string
              format: password
              writeOnly: true
            - type: 'null'
          title: Aws Session Token
          openhands_settings:
            depends_on: []
            prominence: minor
        aws_region_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Aws Region Name
          openhands_settings:
            depends_on: []
            prominence: minor
        aws_profile_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Aws Profile Name
          openhands_settings:
            depends_on: []
            prominence: minor
        aws_role_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Aws Role Name
          openhands_settings:
            depends_on: []
            prominence: minor
        aws_session_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Aws Session Name
          openhands_settings:
            depends_on: []
            prominence: minor
        aws_bedrock_runtime_endpoint:
          anyOf:
            - type: string
            - type: 'null'
          title: Aws Bedrock Runtime Endpoint
          openhands_settings:
            depends_on: []
            prominence: minor
        openrouter_site_url:
          type: string
          title: Openrouter Site Url
          default: https://docs.all-hands.dev/
          openhands_settings:
            depends_on: []
            prominence: minor
        openrouter_app_name:
          type: string
          title: Openrouter App Name
          default: OpenHands
          openhands_settings:
            depends_on: []
            prominence: minor
        num_retries:
          type: integer
          minimum: 0
          title: Num Retries
          default: 5
          openhands_settings:
            depends_on: []
            prominence: minor
        retry_multiplier:
          type: number
          minimum: 0
          title: Retry Multiplier
          default: 8
          openhands_settings:
            depends_on: []
            prominence: minor
        retry_min_wait:
          type: integer
          minimum: 0
          title: Retry Min Wait
          default: 8
          openhands_settings:
            depends_on: []
            prominence: minor
        retry_max_wait:
          type: integer
          minimum: 0
          title: Retry Max Wait
          default: 64
          openhands_settings:
            depends_on: []
            prominence: minor
        timeout:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Timeout
          description: >-
            HTTP timeout in seconds. Default is 300s (5 minutes). Set to None to
            disable timeout (not recommended for production).
          default: 300
          openhands_settings:
            depends_on: []
            prominence: minor
        max_message_chars:
          type: integer
          minimum: 1
          title: Max Message Chars
          description: Approx max chars in each event/content sent to the LLM.
          default: 30000
          openhands_settings:
            depends_on: []
            prominence: minor
        temperature:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Temperature
          description: >-
            Sampling temperature for response generation. Defaults to None (uses
            provider default temperature). Set to 0.0 for deterministic outputs,
            or higher values (0.7-1.0) for more creative responses.
          openhands_settings:
            depends_on: []
            prominence: minor
        top_p:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Top P
          description: >-
            Nucleus sampling parameter. Defaults to None (uses provider
            default). Set to a value between 0 and 1 to control diversity of
            outputs.
          openhands_settings:
            depends_on: []
            prominence: minor
        top_k:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Top K
          openhands_settings:
            depends_on: []
            prominence: minor
        max_input_tokens:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Max Input Tokens
          description: >-
            The maximum number of input tokens. Note that this is currently
            unused, and the value at runtime is actually the total tokens in
            OpenAI (e.g. 128,000 tokens for GPT-4).
          openhands_settings:
            depends_on: []
            prominence: minor
        max_output_tokens:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Max Output Tokens
          description: The maximum number of output tokens. This is sent to the LLM.
          openhands_settings:
            depends_on: []
            prominence: minor
        model_canonical_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Model Canonical Name
          description: >-
            Optional canonical model name for feature registry lookups. The
            OpenHands SDK maintains a model feature registry that maps model
            names to capabilities (e.g., vision support, prompt caching,
            responses API support). When using proxied or aliased model
            identifiers, set this field to the canonical model name (e.g.,
            'openai/gpt-4o') to ensure correct capability detection. If not
            provided, the 'model' field will be used for capability lookups.
          openhands_settings:
            depends_on: []
            prominence: minor
        api_mode:
          type: string
          enum:
            - auto
            - chat
            - responses
          title: Api Mode
          description: >-
            LLM API endpoint mode. 'auto' resolves from model metadata and SDK
            fallbacks; use 'chat' or 'responses' to override endpoint selection
            for proxy aliases and newly released models.
          default: auto
          openhands_settings:
            depends_on: []
            prominence: minor
        capability_overrides:
          additionalProperties:
            anyOf:
              - type: boolean
              - type: string
          type: object
          title: Capability Overrides
          description: >-
            Explicit model capability overrides. Supported keys include
            supports_reasoning_effort, thinking_mode (adaptive, manual, none, or
            unknown), supports_sampling_params, supports_prompt_cache,
            supports_stop_words, supports_responses_api, supports_vision, and
            supports_prompt_cache_retention. Overrides take precedence over
            LiteLLM metadata and SDK fallbacks.
          openhands_settings:
            depends_on: []
            prominence: minor
        extra_headers:
          anyOf:
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Extra Headers
          description: Optional HTTP headers to forward to LiteLLM requests.
          openhands_settings:
            depends_on: []
            prominence: minor
        input_cost_per_token:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Input Cost Per Token
          description: The cost per input token. This will available in logs for user.
          openhands_settings:
            depends_on: []
            prominence: minor
        output_cost_per_token:
          anyOf:
            - type: number
              minimum: 0
            - type: 'null'
          title: Output Cost Per Token
          description: The cost per output token. This will available in logs for user.
          openhands_settings:
            depends_on: []
            prominence: minor
        ollama_base_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Ollama Base Url
          openhands_settings:
            depends_on: []
            prominence: minor
        stream:
          type: boolean
          title: Stream
          description: >-
            Enable streaming responses from the LLM. When enabled, the provided
            `on_token` callback in .completions and .responses will be invoked
            for each chunk of tokens.
          default: false
          openhands_settings:
            depends_on: []
            prominence: minor
        drop_params:
          type: boolean
          title: Drop Params
          default: true
          openhands_settings:
            depends_on: []
            prominence: minor
        modify_params:
          type: boolean
          title: Modify Params
          description: >-
            Modify params allows litellm to do transformations like adding a
            default message, when a message is empty.
          default: true
          openhands_settings:
            depends_on: []
            prominence: minor
        disable_vision:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Disable Vision
          description: >-
            If model is vision capable, this option allows to disable image
            processing (useful for cost reduction).
          openhands_settings:
            depends_on: []
            prominence: minor
        disable_stop_word:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Disable Stop Word
          description: Disable using of stop word.
          default: false
          openhands_settings:
            depends_on: []
            prominence: minor
        caching_prompt:
          type: boolean
          title: Caching Prompt
          description: Enable caching of prompts.
          default: true
          openhands_settings:
            depends_on: []
            prominence: minor
        log_completions:
          type: boolean
          title: Log Completions
          description: Enable logging of completions.
          default: false
          openhands_settings:
            depends_on: []
            prominence: minor
        log_completions_folder:
          type: string
          title: Log Completions Folder
          description: >-
            The folder to log LLM completions to. Required if log_completions is
            True.
          default: logs/completions
          openhands_settings:
            depends_on: []
            prominence: minor
        custom_tokenizer:
          anyOf:
            - type: string
            - type: 'null'
          title: Custom Tokenizer
          description: A custom tokenizer to use for token counting.
          openhands_settings:
            depends_on: []
            prominence: minor
        native_tool_calling:
          type: boolean
          title: Native Tool Calling
          description: Whether to use native tool calling.
          default: true
          openhands_settings:
            depends_on: []
            prominence: minor
        force_string_serializer:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Force String Serializer
          description: >-
            Force using string content serializer when sending to LLM API. If
            None (default), auto-detect based on model. Useful for providers
            that do not support list content, like HuggingFace and Groq.
          openhands_settings:
            depends_on: []
            prominence: minor
        inline_image_urls:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Inline Image Urls
          description: >-
            If True, fetch any http(s) image URL in outgoing messages and inline
            it as a base64 ``data:`` URL before sending. If None (default),
            auto-detect based on model (some APIs such as Moonshot's public Kimi
            endpoint reject URL-formatted images and require base64). Set this
            explicitly when the model is reached through a proxy alias that
            hides the underlying provider (e.g.
            ``litellm_proxy/<custom-alias>``). Note: inlining only runs when
            ``vision_is_active()`` is True, so the alias must still be
            recognised as vision-capable by the SDK feature registry or proxy
            model metadata.
          openhands_settings:
            depends_on: []
            prominence: minor
        reasoning_effort:
          anyOf:
            - type: string
              enum:
                - low
                - medium
                - high
                - xhigh
                - none
            - type: 'null'
          title: Reasoning Effort
          description: >-
            Provider-neutral reasoning effort. Common values include 'none',
            'minimal', 'low', 'medium', 'high', 'xhigh', and 'max'. The SDK
            accepts future provider values and lets LiteLLM translate them.
          default: high
          openhands_settings:
            depends_on: []
            prominence: minor
        reasoning_summary:
          anyOf:
            - type: string
              enum:
                - auto
                - concise
                - detailed
            - type: 'null'
          title: Reasoning Summary
          description: >-
            The level of detail for reasoning summaries. This is a string that
            can be one of 'auto', 'concise', or 'detailed'. Requires verified
            OpenAI organization. Only sent when explicitly set.
          openhands_settings:
            depends_on: []
            prominence: minor
        enable_encrypted_reasoning:
          type: boolean
          title: Enable Encrypted Reasoning
          description: >-
            If True, ask for ['reasoning.encrypted_content'] in Responses API
            include.
          default: true
          openhands_settings:
            depends_on: []
            prominence: minor
        prompt_cache_retention:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt Cache Retention
          description: >-
            Retention policy for prompt cache. Only sent for supported models
            (GPT-5+ and GPT-4.1, excluding Azure deployments); explicitly
            stripped for all others.
          default: 24h
          openhands_settings:
            depends_on: []
            prominence: minor
        extended_thinking_budget:
          anyOf:
            - type: integer
            - type: 'null'
          title: Extended Thinking Budget
          description: >-
            Legacy token budget for models confirmed to use manual Anthropic
            extended thinking. Ignored for adaptive-thinking models. Prefer
            reasoning_effort for new integrations.
          default: 200000
          openhands_settings:
            depends_on: []
            prominence: minor
        seed:
          anyOf:
            - type: integer
            - type: 'null'
          title: Seed
          description: The seed to use for random number generation.
          openhands_settings:
            depends_on: []
            prominence: minor
        usage_id:
          type: string
          title: Usage Id
          description: >-
            Unique usage identifier for the LLM. Used for registry lookups,
            telemetry, and spend tracking.
          default: default
          openhands_settings:
            depends_on: []
            prominence: minor
        litellm_extra_body:
          additionalProperties: true
          type: object
          title: Litellm Extra Body
          description: >-
            Additional key-value pairs to pass to litellm's extra_body
            parameter. This is useful for custom inference endpoints that need
            additional parameters for configuration, routing, or advanced
            features. NOTE: Not all LLM providers support extra_body parameters.
            Some providers (e.g., OpenAI) may reject requests with unrecognized
            options. This is commonly supported by: - LiteLLM proxy servers
            (routing metadata, tracing) - vLLM endpoints (return_token_ids,
            etc.) - Custom inference clusters Examples: - Proxy routing:
            {'trace_version': '1.0.0', 'tags': ['agent:my-agent']} - vLLM
            features: {'return_token_ids': True}
          openhands_settings:
            depends_on: []
            prominence: minor
        is_subscription:
          type: boolean
          title: Is Subscription
          description: >-
            Whether this LLM uses subscription-based authentication. Serialized
            so that subscription-specific request handling survives transport to
            a remote agent-server.
          readOnly: true
      type: object
      required:
        - is_subscription
      title: LLM
      description: >-
        Language model interface for OpenHands agents.


        The LLM class provides a unified interface for interacting with various

        language models through the litellm library. It handles model
        configuration,

        API authentication, retry logic, and tool calling capabilities.


        Attributes:
            model: Model name (e.g., "gpt-5.5").
            api_key: API key for authentication.
            base_url: Custom API base URL.
            num_retries: Number of retry attempts for failed requests.
            timeout: Request timeout in seconds.

        Example:
            ```python
            from openhands.sdk import LLM
            from pydantic import SecretStr

            llm = LLM(
                model="gpt-5.5",
                api_key=SecretStr("your-api-key"),
                usage_id="my-agent"
            )
            # Use with agent or conversation
            ```
    openhands__sdk__tool__spec__Tool:
      properties:
        name:
          type: string
          title: Name
          description: >-
            Name of the tool class, e.g., 'TerminalTool'. Import it from an
            `openhands.tools.<module>` subpackage.
          examples:
            - TerminalTool
            - FileEditorTool
            - TaskTrackerTool
        params:
          additionalProperties: true
          type: object
          title: Params
          description: >-
            Parameters for the tool's .create() method, e.g., {'working_dir':
            '/app'}
          examples:
            - working_dir: /workspace
      type: object
      required:
        - name
      title: Tool
      description: |-
        Defines a tool to be initialized for the agent.

        This is only used in agent-sdk for type schema for server use.
    MCPServer-Output:
      properties:
        url:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
          title: Url
        transport:
          anyOf:
            - type: string
              enum:
                - stdio
                - http
                - sse
                - streamable-http
            - type: 'null'
          title: Transport
        command:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
          title: Command
        args:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Args
        env:
          anyOf:
            - additionalProperties:
                anyOf:
                  - type: string
                  - type: 'null'
              type: object
            - type: 'null'
          title: Env
        cwd:
          anyOf:
            - type: string
            - type: 'null'
          title: Cwd
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        icon:
          anyOf:
            - type: string
            - type: 'null'
          title: Icon
        timeout:
          anyOf:
            - type: number
            - type: 'null'
          title: Timeout
        sse_read_timeout:
          anyOf:
            - type: number
            - type: 'null'
          title: Sse Read Timeout
        keep_alive:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Keep Alive
        headers:
          anyOf:
            - additionalProperties:
                anyOf:
                  - type: string
                  - type: 'null'
              type: object
            - type: 'null'
          title: Headers
        auth:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/MCPNoneAuthCredential'
                - $ref: '#/components/schemas/MCPApiKeyAuthCredential-Output'
                - $ref: '#/components/schemas/MCPBearerAuthCredential-Output'
                - $ref: '#/components/schemas/MCPBasicAuthCredential-Output'
                - $ref: '#/components/schemas/MCPHeaderAuthCredential-Output'
                - $ref: '#/components/schemas/MCPOAuthAuthCredential-Output'
              discriminator:
                propertyName: strategy
                mapping:
                  api_key:
                    $ref: '#/components/schemas/MCPApiKeyAuthCredential-Output'
                  basic:
                    $ref: '#/components/schemas/MCPBasicAuthCredential-Output'
                  bearer:
                    $ref: '#/components/schemas/MCPBearerAuthCredential-Output'
                  header:
                    $ref: '#/components/schemas/MCPHeaderAuthCredential-Output'
                  none:
                    $ref: '#/components/schemas/MCPNoneAuthCredential'
                  oauth2:
                    $ref: '#/components/schemas/MCPOAuthAuthCredential-Output'
            - type: 'null'
          title: Auth
        enabled:
          type: boolean
          title: Enabled
          description: >-
            Whether this server is exposed to the agent. A disabled server stays
            fully configured -- including its secrets -- but is skipped when MCP
            tools are created and when servers are forwarded to an ACP
            subprocess.
          default: true
      additionalProperties: false
      type: object
      title: MCPServer
      description: One MCP server in the settings DataModel.
    AgentContext-Output:
      properties:
        skills:
          items:
            $ref: '#/components/schemas/Skill-Output'
          type: array
          title: Skills
          description: List of available skills that can extend the user's input.
          acp_compatible: true
        system_message_suffix:
          anyOf:
            - type: string
            - type: 'null'
          title: System Message Suffix
          description: Optional suffix to append to the system prompt.
          acp_compatible: true
        user_message_suffix:
          anyOf:
            - type: string
            - type: 'null'
          title: User Message Suffix
          description: Optional suffix to append to the user's message.
          acp_compatible: true
        load_user_skills:
          type: boolean
          title: Load User Skills
          description: >-
            Whether to automatically load user skills from ~/.openhands/skills/
            and ~/.openhands/microagents/ (for backward compatibility). 
          default: false
          acp_compatible: true
        load_public_skills:
          type: boolean
          title: Load Public Skills
          description: >-
            Whether to automatically load skills from the public OpenHands
            skills repository at https://github.com/OpenHands/extensions. This
            allows you to get the latest skills without SDK updates.
          default: false
          acp_compatible: true
        marketplace_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Marketplace Path
          description: >-
            Relative marketplace JSON path within the public skills repository.
            Set to None to load all public skills without marketplace filtering.
          default: marketplaces/default.json
          acp_compatible: true
        registered_marketplaces:
          items:
            $ref: >-
              #/components/schemas/openhands__sdk__marketplace__registration__MarketplaceRegistration
          type: array
          title: Registered Marketplaces
          description: >-
            Marketplace registrations for plugin resolution. Registrations with
            auto_load=True or a list of plugin names are resolved by
            LocalConversation at startup.
          acp_compatible: true
        load_project_skills:
          type: boolean
          title: Load Project Skills
          description: >-
            Whether to automatically load project skills from the conversation
            workspace (e.g. .openhands/skills/, AGENTS.md). Unlike
            load_user_skills / load_public_skills, this flag is not resolved by
            AgentContext itself (the workspace path is unknown at validation
            time); LocalConversation resolves it lazily on the first
            send_message() / run(), when the workspace is known. Also unlike
            load_user_skills / load_public_skills (which yield to explicit
            skills on a name conflict), resolved project skills are
            authoritative: a project skill overrides a same-named skill already
            present in `skills`.
          default: false
          acp_compatible: true
        load_memory:
          type: boolean
          title: Load Memory
          description: >-
            Whether to load persistent agent memory (MEMORY.md indexes under
            ~/.openhands/memory/ and <workspace>/.openhands/memory/) into the
            system prompt. Like load_project_skills, this flag is not resolved
            by AgentContext itself (the workspace path is unknown at validation
            time); LocalConversation resolves it lazily on the first
            send_message() / run() and stores the result in memory_context.
          default: false
          acp_compatible: true
          openhands_settings:
            depends_on: []
            label: Persistent memory
            prominence: major
        disabled_skills:
          items:
            type: string
          type: array
          title: Disabled Skills
          description: >-
            Names of skills to EXCLUDE from this context — a deny-list applied
            after every skill source is loaded (auto-loaded user/public,
            explicit, and lazily-loaded project skills). A listed name absent
            from the loaded set is a harmless no-op. [] (the default) keeps
            every skill. This is the single, drift-tolerant skill-selection
            mechanism (agent profiles set it from their own deny-list; #4017).
          acp_compatible: true
        secrets:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Secrets
          description: >-
            Dictionary mapping secret keys to values or secret sources. Secrets
            are used for authentication and sensitive data handling. Values can
            be either strings or SecretSource instances (str | SecretSource).
          acp_compatible: true
        current_datetime:
          anyOf:
            - type: string
              format: date-time
            - type: string
            - type: 'null'
          title: Current Datetime
          description: >-
            Current date and time information to provide to the agent. Can be a
            datetime object (which will be formatted as ISO 8601) or a
            pre-formatted string. When provided, this information is included in
            the system prompt to give the agent awareness of the current time
            context. Defaults to the current (timezone-aware) datetime.
          acp_compatible: true
      type: object
      title: AgentContext
      description: >-
        Central structure for managing prompt extension.


        AgentContext unifies all the contextual inputs that shape how the system

        extends and interprets user prompts. It combines both static environment

        details and dynamic, user-activated extensions from skills.


        Specifically, it provides:

        - **Repository context / Repo Skills**: Information about the active
        codebase,
          branches, and repo-specific instructions contributed by repo skills.
        - **Runtime context**: Current execution environment (hosts, working
          directory, secrets, date, etc.).
        - **Conversation instructions**: Optional task- or channel-specific
        rules
          that constrain or guide the agent’s behavior across the session.
        - **Knowledge Skills**: Extensible components that can be triggered by
        user input
          to inject knowledge or domain-specific guidance.

        Together, these elements make AgentContext the primary container
        responsible

        for assembling, formatting, and injecting all prompt-relevant context
        into

        LLM interactions.
    LLMSummarizingCondenserSettings:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Enable conversation memory condensation.
          default: true
          openhands_settings:
            depends_on: []
            label: Enable memory condensation
            prominence: critical
        max_size:
          type: integer
          minimum: 20
          title: Max Size
          description: >-
            Maximum number of events kept before the condenser runs. Kept on the
            base settings class for compatibility; concrete condenser-settings
            variants may opt out when this does not apply.
          default: 240
          openhands_settings:
            depends_on:
              - enabled
            label: Max size
            prominence: minor
        condenser_kind:
          type: string
          const: llm_summarizing
          title: Condenser Kind
          description: >-
            Discriminator for the condenser settings union.
            ``'llm_summarizing'`` selects the default LLM summarizing condenser.
          default: llm_summarizing
          openhands_settings:
            depends_on: []
            prominence: minor
        max_tokens:
          anyOf:
            - type: integer
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Tokens
          description: >-
            Maximum number of tokens allowed before the condenser runs. When
            unset, condensation is only based on event count.
          openhands_settings:
            depends_on:
              - enabled
            label: Max tokens
            prominence: minor
        keep_first:
          type: integer
          minimum: 0
          title: Keep First
          description: Minimum number of initial events to preserve before condensation.
          default: 2
          openhands_settings:
            depends_on:
              - enabled
            label: Keep first
            prominence: minor
        minimum_progress:
          type: number
          exclusiveMaximum: 1
          exclusiveMinimum: 0
          title: Minimum Progress
          description: >-
            Minimum fraction of events that must be condensed for condensation
            to be considered successful.
          default: 0.1
          openhands_settings:
            depends_on:
              - enabled
            label: Minimum progress
            prominence: minor
        hard_context_reset_max_retries:
          type: integer
          exclusiveMinimum: 0
          title: Hard Context Reset Max Retries
          description: Number of hard context reset attempts before raising an error.
          default: 5
          openhands_settings:
            depends_on:
              - enabled
            label: Hard reset retries
            prominence: minor
        hard_context_reset_context_scaling:
          type: number
          exclusiveMaximum: 1
          exclusiveMinimum: 0
          title: Hard Context Reset Context Scaling
          description: >-
            Factor used to reduce event string size after a hard context reset
            summarization failure.
          default: 0.8
          openhands_settings:
            depends_on:
              - enabled
            label: Hard reset scaling
            prominence: minor
      type: object
      title: LLMSummarizingCondenserSettings
      description: Settings for the default LLM summarizing condenser.
    NoOpCondenserSettings:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Enable conversation memory condensation.
          default: true
          openhands_settings:
            depends_on: []
            label: Enable memory condensation
            prominence: critical
        condenser_kind:
          type: string
          const: no_op
          title: Condenser Kind
          description: >-
            Discriminator for the condenser settings union. ``'no_op'`` selects
            a condenser that leaves conversation views unchanged.
          default: no_op
          openhands_settings:
            depends_on: []
            prominence: minor
      type: object
      title: NoOpCondenserSettings
      description: Settings for a condenser that leaves conversation views unchanged.
    VerificationSettings:
      properties:
        critic_enabled:
          type: boolean
          title: Critic Enabled
          description: Enable critic evaluation for the agent.
          default: false
          openhands_settings:
            depends_on: []
            label: Enable critic
            prominence: critical
        critic_mode:
          type: string
          enum:
            - finish_and_message
            - all_actions
          title: Critic Mode
          description: When critic evaluation should run.
          default: finish_and_message
          openhands_settings:
            depends_on:
              - critic_enabled
            label: Critic mode
            prominence: minor
        enable_iterative_refinement:
          type: boolean
          title: Enable Iterative Refinement
          description: >-
            Automatically retry tasks when critic scores fall below the
            threshold.
          default: false
          openhands_settings:
            depends_on:
              - critic_enabled
            label: Enable iterative refinement
            prominence: critical
        critic_threshold:
          type: number
          maximum: 1
          minimum: 0
          title: Critic Threshold
          description: Critic success threshold used for iterative refinement.
          default: 0.6
          openhands_settings:
            depends_on:
              - critic_enabled
              - enable_iterative_refinement
            label: Critic threshold
            prominence: minor
        max_refinement_iterations:
          type: integer
          minimum: 1
          title: Max Refinement Iterations
          description: Maximum number of refinement attempts after critic feedback.
          default: 3
          openhands_settings:
            depends_on:
              - critic_enabled
              - enable_iterative_refinement
            label: Max refinement iterations
            prominence: minor
        critic_server_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Critic Server Url
          description: >-
            Override the critic service URL. When None, the APIBasedCritic
            default is used.
          openhands_settings:
            depends_on:
              - critic_enabled
            label: Critic server URL
            prominence: minor
        critic_model_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Critic Model Name
          description: >-
            Override the critic model name. When None, the APIBasedCritic
            default is used.
          openhands_settings:
            depends_on:
              - critic_enabled
            label: Critic model name
            prominence: minor
        critic_api_key:
          title: Critic Api Key
          description: >-
            API key used to authenticate with the critic service. When None, the
            LLM's ``api_key`` is reused, which preserves the auto-configuration
            path for the All-Hands LLM proxy.
          openhands_settings:
            depends_on:
              - critic_enabled
            label: Critic API Key
            prominence: critical
      type: object
      title: VerificationSettings
      description: Critic and iterative-refinement settings for the agent.
    ACPFileSecretSpec:
      properties:
        secret_name:
          type: string
          minLength: 1
          title: Secret Name
        filename:
          type: string
          minLength: 1
          title: Filename
        env_var:
          type: string
          minLength: 1
          title: Env Var
        subdir:
          type: string
          minLength: 1
          title: Subdir
        env_points_to:
          type: string
          enum:
            - dir
            - file
          title: Env Points To
          default: file
        warn_if_unset:
          items:
            type: string
          type: array
          title: Warn If Unset
          default: []
      type: object
      required:
        - secret_name
        - filename
        - env_var
        - subdir
      title: ACPFileSecretSpec
      description: >-
        Declarative mapping from a reserved "file-content" secret to a
        credential

        file the ACP subprocess authenticates from.


        Some providers read their credential from a *file on disk* rather than
        an

        env var: Codex reads ``$CODEX_HOME/auth.json``; Gemini (Vertex AI) reads
        a

        service-account JSON pointed at by ``GOOGLE_APPLICATION_CREDENTIALS``.
        The

        user supplies that credential as a pasted blob — a reserved secret named

        :attr:`secret_name` — and :class:`~openhands.sdk.agent.ACPAgent`
        materialises

        it to :attr:`filename` under the conversation's durable per-conversation
        root

        (seed-if-absent), then sets :attr:`env_var` so the CLI can find it.


        Materialisation is keyed off :attr:`secret_name` (not the launch
        command),

        so a custom or aliased ``acp_command`` still works as long as the
        reserved

        secret is supplied.


        The SDK owns the *mechanism* (writing the file in the runtime pod,
        setting

        the env var, seed-if-absent, permissions); the *policy* — which secrets
        map

        to which files for which CLIs — lives in these specs. Built-in defaults

        cover the supported providers, but downstream applications can override

        :attr:`~openhands.sdk.agent.ACPAgent.acp_file_secrets` to support other
        ACP

        servers with different file-auth schemes without an SDK change.
    MCPNoneAuthCredential:
      properties:
        strategy:
          type: string
          const: none
          title: Strategy
      type: object
      required:
        - strategy
      title: MCPNoneAuthCredential
    MCPApiKeyAuthCredential-Output:
      properties:
        strategy:
          type: string
          const: api_key
          title: Strategy
        value:
          anyOf:
            - type: string
            - type: 'null'
          title: Value
        header_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Header Name
      type: object
      required:
        - strategy
      title: MCPApiKeyAuthCredential
    MCPBearerAuthCredential-Output:
      properties:
        strategy:
          type: string
          const: bearer
          title: Strategy
        value:
          anyOf:
            - type: string
            - type: 'null'
          title: Value
      type: object
      required:
        - strategy
      title: MCPBearerAuthCredential
    MCPBasicAuthCredential-Output:
      properties:
        strategy:
          type: string
          const: basic
          title: Strategy
        username:
          type: string
          title: Username
        password:
          anyOf:
            - type: string
            - type: 'null'
          title: Password
      type: object
      required:
        - strategy
        - username
      title: MCPBasicAuthCredential
    MCPHeaderAuthCredential-Output:
      properties:
        strategy:
          type: string
          const: header
          title: Strategy
        headers:
          additionalProperties:
            anyOf:
              - type: string
              - type: 'null'
          type: object
          title: Headers
      type: object
      required:
        - strategy
      title: MCPHeaderAuthCredential
    MCPOAuthAuthCredential-Output:
      properties:
        strategy:
          type: string
          const: oauth2
          title: Strategy
        authentication:
          anyOf:
            - $ref: '#/components/schemas/MCPOAuthAuthentication-Output'
            - type: 'null'
        state:
          anyOf:
            - $ref: '#/components/schemas/MCPOAuthState-Output'
            - type: 'null'
      type: object
      required:
        - strategy
      title: MCPOAuthAuthCredential
    Skill-Output:
      properties:
        name:
          type: string
          title: Name
        content:
          type: string
          title: Content
        trigger:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/KeywordTrigger'
                - $ref: '#/components/schemas/TaskTrigger'
                - $ref: '#/components/schemas/PathTrigger'
              discriminator:
                propertyName: type
                mapping:
                  keyword:
                    $ref: '#/components/schemas/KeywordTrigger'
                  path:
                    $ref: '#/components/schemas/PathTrigger'
                  task:
                    $ref: '#/components/schemas/TaskTrigger'
            - type: 'null'
          title: Trigger
          description: >-
            Trigger determines when skill content is auto-injected. None = no
            auto-injection (for AgentSkills: agent reads on demand; for legacy:
            full content always in system prompt). KeywordTrigger = auto-inject
            when keywords appear in user messages. TaskTrigger = auto-inject for
            specific tasks, may require user input.
        source:
          anyOf:
            - type: string
            - type: 'null'
          title: Source
          description: >-
            The source path or identifier of the skill. When it is None, it is
            treated as a programmatically defined skill.
        mcp_tools:
          anyOf:
            - additionalProperties:
                additionalProperties: true
                type: object
              type: object
            - type: 'null'
          title: Mcp Tools
          description: MCP servers for the skill (repo skills only).
        inputs:
          items:
            $ref: '#/components/schemas/InputMetadata'
          type: array
          title: Inputs
          description: Input metadata for the skill (task skills only)
        is_agentskills_format:
          type: boolean
          title: Is Agentskills Format
          description: >-
            Whether this skill was loaded from a SKILL.md file following the
            AgentSkills standard. AgentSkills-format skills use progressive
            disclosure: always listed in <available_skills> with name,
            description, and location. If the skill also has triggers, content
            is auto-injected when triggered AND agent can read file anytime.
          default: false
        version:
          type: string
          title: Version
          description: Skill version (AgentSkills standard field).
          default: 1.0.0
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: >-
            A brief description of what the skill does and when to use it.
            Descriptions exceeding MAX_DESCRIPTION_LENGTH are truncated with a
            notice pointing to the skill's source path.
        license:
          anyOf:
            - type: string
            - type: 'null'
          title: License
          description: >-
            The license under which the skill is distributed. AgentSkills
            standard field (e.g., 'Apache-2.0', 'MIT').
        compatibility:
          anyOf:
            - type: string
            - type: 'null'
          title: Compatibility
          description: >-
            Environment requirements or compatibility notes for the skill.
            AgentSkills standard field (e.g., 'Requires git and docker').
        metadata:
          anyOf:
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Metadata
          description: >-
            Arbitrary key-value metadata for the skill. AgentSkills standard
            field for extensibility.
        allowed_tools:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Allowed Tools
          description: >-
            List of pre-approved tools for this skill. AgentSkills standard
            field (parsed from space-delimited string).
        disable_model_invocation:
          type: boolean
          title: Disable Model Invocation
          description: >-
            Whether this skill can only be activated by trigger matching and
            should not be advertised to the model for direct invocation.
          default: false
        resources:
          anyOf:
            - $ref: '#/components/schemas/SkillResources'
            - type: 'null'
          description: >-
            Resource directories for the skill (scripts/, references/, assets/).
            AgentSkills standard field. Only populated for SKILL.md directory
            format.
      type: object
      required:
        - name
        - content
      title: Skill
      description: >-
        A skill provides specialized knowledge or functionality.


        Skill behavior depends on format (is_agentskills_format) and trigger:


        AgentSkills format (SKILL.md files):

        - Always listed in <available_skills> with name, description, location

        - Agent reads full content on demand (progressive disclosure)

        - If has triggers: content is ALSO auto-injected when triggered


        Legacy OpenHands format:

        - With triggers: Listed in <available_skills>, content injected on
        trigger

        - Without triggers (None): Full content in <REPO_CONTEXT>, always active


        This model supports both OpenHands-specific fields and AgentSkills
        standard

        fields (https://agentskills.io/specification) for cross-platform
        compatibility.
    openhands__sdk__marketplace__registration__MarketplaceRegistration:
      properties:
        name:
          type: string
          title: Name
          description: Identifier for this marketplace registration
        source:
          type: string
          title: Source
          description: 'Marketplace source: ''github:owner/repo'', git URL, or local path'
        ref:
          anyOf:
            - type: string
            - type: 'null'
          title: Ref
          description: Optional branch, tag, or commit for git sources
        repo_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Repo Path
          description: >-
            Subdirectory path within the git repository containing the
            marketplace. Only relevant for git sources.
        auto_load:
          anyOf:
            - type: boolean
            - items:
                type: string
              type: array
          title: Auto Load
          description: >-
            Whether to load marketplace plugins and standalone skills at
            conversation start. Use True for all, False or [] for none, or a
            list of plugin/skill names for selective loading.
          default: false
      type: object
      required:
        - name
        - source
      title: MarketplaceRegistration
      description: Registration for a marketplace source used for plugin resolution.
    MCPOAuthAuthentication-Output:
      properties:
        type:
          type: string
          const: oauth
          title: Type
        client_auth_method:
          anyOf:
            - type: string
              enum:
                - none
                - client_secret_post
                - client_secret_basic
                - private_key_jwt
            - type: 'null'
          title: Client Auth Method
        scopes:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
            - type: 'null'
          title: Scopes
        client_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Client Name
        client_metadata_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Client Metadata Url
        client_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Client Id
        client_secret:
          anyOf:
            - type: string
            - type: 'null'
          title: Client Secret
        additional_client_metadata:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Additional Client Metadata
      additionalProperties: false
      type: object
      required:
        - type
      title: MCPOAuthAuthentication
    MCPOAuthState-Output:
      properties:
        tokens:
          anyOf:
            - $ref: '#/components/schemas/MCPOAuthTokenState-Output'
            - type: 'null'
        client_info:
          anyOf:
            - $ref: '#/components/schemas/MCPOAuthClientInfoState-Output'
            - type: 'null'
        token_expires_at:
          anyOf:
            - type: number
            - type: 'null'
          title: Token Expires At
      type: object
      title: MCPOAuthState
    KeywordTrigger:
      properties:
        type:
          type: string
          const: keyword
          title: Type
          default: keyword
        keywords:
          items:
            type: string
          type: array
          title: Keywords
      type: object
      required:
        - keywords
      title: KeywordTrigger
      description: >-
        Trigger for keyword-based skills.


        These skills are activated when specific keywords appear in the user's
        query.
    TaskTrigger:
      properties:
        type:
          type: string
          const: task
          title: Type
          default: task
        triggers:
          items:
            type: string
          type: array
          title: Triggers
      type: object
      required:
        - triggers
      title: TaskTrigger
      description: >-
        Trigger for task-specific skills.


        These skills are activated for specific task types and can modify
        prompts.
    PathTrigger:
      properties:
        type:
          type: string
          const: path
          title: Type
          default: path
        paths:
          items:
            type: string
          type: array
          title: Paths
      type: object
      required:
        - paths
      title: PathTrigger
      description: >-
        Trigger for path-scoped skills ("rules").


        These skills are activated when the agent touches a file whose path
        matches

        one of the ``paths`` glob patterns (gitignore-style ``**`` semantics).
    InputMetadata:
      properties:
        name:
          type: string
          title: Name
          description: Name of the input parameter
        description:
          type: string
          title: Description
          description: Description of the input parameter
      type: object
      required:
        - name
        - description
      title: InputMetadata
      description: Metadata for task skill inputs.
    SkillResources:
      properties:
        skill_root:
          type: string
          title: Skill Root
          description: Root directory of the skill (absolute path)
        scripts:
          items:
            type: string
          type: array
          title: Scripts
          description: List of script files in scripts/ directory (relative paths)
        references:
          items:
            type: string
          type: array
          title: References
          description: List of reference files in references/ directory (relative paths)
        assets:
          items:
            type: string
          type: array
          title: Assets
          description: List of asset files in assets/ directory (relative paths)
      type: object
      required:
        - skill_root
      title: SkillResources
      description: |-
        Resource directories for a skill (AgentSkills standard).

        Per the AgentSkills specification, skills can include:
        - scripts/: Executable scripts the agent can run
        - references/: Reference documentation and examples
        - assets/: Static assets (images, data files, etc.)
    MCPOAuthTokenState-Output:
      properties:
        access_token:
          anyOf:
            - type: string
            - type: 'null'
          title: Access Token
        refresh_token:
          anyOf:
            - type: string
            - type: 'null'
          title: Refresh Token
      additionalProperties: true
      type: object
      title: MCPOAuthTokenState
    MCPOAuthClientInfoState-Output:
      properties:
        client_secret:
          anyOf:
            - type: string
            - type: 'null'
          title: Client Secret
      additionalProperties: true
      type: object
      title: MCPOAuthClientInfoState
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-Access-Token

````