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

# List what this agent could still be given

> The tools this workspace could still switch on for this agent, and the integration capabilities it could still be granted. Read it before concluding that Neo cannot do something an agent failed to do: an agent knows only its own enabled tools, and integration capabilities are permission groups that appear in no tool list and that the agent cannot see at all. So an agent reporting it 'has no tool for X' is evidence about its own configuration and not about what Neo ships.

Two flags say why a list is empty. `tool_catalog_unavailable` means this workspace has no PSA connected, so the catalogue could not be built — a real configuration rather than a fault. `integration_connectivity_unavailable` means a read failed. Treat an empty list under either as unknown, and do not report the first as a service problem.

It does NOT report the set an agent runs with: that is decided per run, not per agent — the same agent resolves differently on a ticket run and a ticketless one — so read the run's own trace for that.

Agents only (`autonomy_type=AGENTIC`). A Workflow holds no toolbox, and a Chat Agent resolves its tools per conversation and per speaker, so no answer outside a live conversation describes what it can do; both return `400 agent_has_no_toolbox`. For those, read the stored configuration on `GET /agents/<id>`.



## OpenAPI

````yaml https://api.neoagent.io/public-api/openapi.json get /public-api/agents/{agent_id}/improvement-options
openapi: 3.1.0
info:
  description: >-
    Neo's public contract for the dashboard ChatAgent, partner integrations, and
    MSP automation. Every response is wrapped in a `{data, meta}` envelope;
    errors use `{error: {code, message, details?}, meta: {request_id}}`.
    Authenticate with a `Bearer neo_sk_<env>_<secret>` API key (service account)
    or a Microsoft Entra ID JWT (dashboard user). Signed-URL endpoints (end-user
    feedback links) take a `signature` query parameter instead.
  title: Neo Public API
  version: 1.0.0
servers:
  - url: https://api.neoagent.io
security: []
tags:
  - description: Service metadata — health, OpenAPI.
    name: Meta
  - description: Agents and workflows — read, version history, delete, stats.
    name: Agents
  - description: Agent/workflow execution history, sub-resources, retry/cancel.
    name: Executions
  - description: >-
      Every tool call the tenant's agents made in the last 30 days, within the
      caller's workflow access.
    name: Audit Log
  - description: PSA webhook events and their workflow-match results.
    name: Callbacks
  - description: Technician-in-the-loop approval requests.
    name: TIL requests
  - description: RMM script executions triggered by agents.
    name: RMM scripts
  - description: Dispatch-agent field-update decisions.
    name: Dispatch
  - description: The authenticated tenant.
    name: Tenant
  - description: Agent-builder schema catalogs (raw JSON payloads).
    name: Schemas
  - description: Escalate to the Neo team (HubSpot ticket).
    name: Escalation
  - description: Tenant settings.
    name: Settings
  - description: Tenant API-key management (dashboard JWT only).
    name: API keys
  - description: End-user feedback links (signed-URL auth).
    name: Feedback
  - description: End-client companies (CRUD + bulk-update).
    name: End companies
  - description: Channels — bind a CONVERSATIONAL agent to a transport (Teams).
    name: Channels
  - description: PSA/RMM/M365 integration status and connection management.
    name: Integrations
  - description: Technician roster (controls TIL routing and paging).
    name: Technicians
  - description: Future runs queued for TRIGGERED agents.
    name: Scheduled work
  - description: Subscription state and customer-facing credit usage (no provider $).
    name: Billing
  - description: Inbox messages and announcements.
    name: Inbox & Comms
  - description: Tenant-authored agent skills (CRUD) and the built-in skill catalog.
    name: Skills
paths:
  /public-api/agents/{agent_id}/improvement-options:
    get:
      tags:
        - Agents
      summary: List what this agent could still be given
      description: >-
        The tools this workspace could still switch on for this agent, and the
        integration capabilities it could still be granted. Read it before
        concluding that Neo cannot do something an agent failed to do: an agent
        knows only its own enabled tools, and integration capabilities are
        permission groups that appear in no tool list and that the agent cannot
        see at all. So an agent reporting it 'has no tool for X' is evidence
        about its own configuration and not about what Neo ships.


        Two flags say why a list is empty. `tool_catalog_unavailable` means this
        workspace has no PSA connected, so the catalogue could not be built — a
        real configuration rather than a fault.
        `integration_connectivity_unavailable` means a read failed. Treat an
        empty list under either as unknown, and do not report the first as a
        service problem.


        It does NOT report the set an agent runs with: that is decided per run,
        not per agent — the same agent resolves differently on a ticket run and
        a ticketless one — so read the run's own trace for that.


        Agents only (`autonomy_type=AGENTIC`). A Workflow holds no toolbox, and
        a Chat Agent resolves its tools per conversation and per speaker, so no
        answer outside a live conversation describes what it can do; both return
        `400 agent_has_no_toolbox`. For those, read the stored configuration on
        `GET /agents/<id>`.
      operationId: public_api.agents_improvement_options_get
      parameters:
        - in: path
          name: agent_id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/AgentImprovementOptionsResponse'
                  meta:
                    $ref: '#/components/schemas/SuccessMeta'
                required:
                  - data
                  - meta
                type: object
          description: Success.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Bad request — malformed input.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Unauthenticated — missing or invalid credentials.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Forbidden — authenticated but not allowed.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Not found.
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Conflict — the resource is in a state that blocks this operation.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Request validation failed.
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Rate limited — see Retry-After.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
          description: Internal server error.
      security:
        - bearerAuth: []
components:
  schemas:
    AgentImprovementOptionsResponse:
      description: >-
        This agent's stored configuration, and what its MSP could still switch
        on for it.


        Read this before concluding that Neo cannot do something an agent failed
        to do. An agent knows

        only its own enabled tools, and it cannot see integration permission
        groups at all, so its own

        report that it "has no tool for X" says nothing about whether Neo ships
        one.


        This answers what could still be switched ON. It deliberately does not
        report the tools an agent

        runs with: that set is decided per run, not per agent — the same agent
        resolves differently on a

        ticket run and a ticketless one — so no answer outside a run could state
        it. Read the run's own

        trace for what it actually had.


        Agents only. A Chat Agent resolves per conversation and per speaker as
        well, and an end-user one

        does not draw from this tool catalogue at all.
      properties:
        available_not_enabled_tools:
          description: >-
            Tools Neo ships that this MSP could switch on for THIS agent but has
            not, by title. Filtered as the agent builder filters it, so every
            title is a real toggle. Enabling one can raise the agent's per-run
            credit tier.
          items:
            type: string
          title: Available Not Enabled Tools
          type: array
        configured_tools:
          description: >-
            Tools stored in this agent's own toolbox, by title. Some are stored
            because they are always on for every agent, so this is not a list of
            deliberate choices, and it is not the whole set the agent runs with
            — more are resolved at run time.
          items:
            type: string
          title: Configured Tools
          type: array
        integration_capabilities_not_enabled:
          description: >-
            Per connected integration, the capabilities that are off for this
            agent. These are permission groups, so they appear in no tool list.
          items:
            $ref: '#/components/schemas/IntegrationCapabilitiesOffForAgent'
          title: Integration Capabilities Not Enabled
          type: array
        integration_connectivity_unavailable:
          description: >-
            True when this workspace's integration connections could not be
            read. The list above is then empty for that reason, and proves
            nothing about what Neo ships.
          title: Integration Connectivity Unavailable
          type: boolean
        shipped_systems:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          description: >-
            Every system Neo ships an integration for, connected or not. A
            system absent from this list is one Neo has never integrated with.
            `null` when the registry could not be read, and absence then proves
            nothing.
          title: Shipped Systems
        tool_catalog_unavailable:
          description: >-
            True when the catalog could not be built because this workspace has
            no PSA connected. `available_not_enabled_tools` is then empty for
            that reason, and proves nothing about what Neo ships.
          title: Tool Catalog Unavailable
          type: boolean
      required:
        - configured_tools
        - available_not_enabled_tools
        - tool_catalog_unavailable
        - integration_capabilities_not_enabled
        - integration_connectivity_unavailable
        - shipped_systems
      title: AgentImprovementOptionsResponse
      type: object
    SuccessMeta:
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        request_id:
          format: uuid
          type: string
        timings_ms:
          additionalProperties:
            type: number
          type: object
        warnings:
          description: >-
            Non-fatal warnings about the created/updated resource (e.g. an
            unhealthy PSA callback).
          items:
            type: string
          type: array
      required:
        - request_id
        - timings_ms
      type: object
    ErrorEnvelope:
      properties:
        error:
          properties:
            code:
              description: Stable machine-readable error code.
              type: string
            details:
              additionalProperties: true
              type: object
            message:
              type: string
          required:
            - code
            - message
          type: object
        meta:
          properties:
            request_id:
              format: uuid
              type:
                - string
                - 'null'
          type: object
      required:
        - error
        - meta
      type: object
    IntegrationCapabilitiesOffForAgent:
      description: >-
        One connected integration and the capabilities of it this agent does not
        have.
      properties:
        capabilities:
          items:
            $ref: '#/components/schemas/AvailableIntegrationCapability'
          title: Capabilities
          type: array
        integration_label:
          description: >-
            The integration's label as the dashboard shows it. An agent's own
            permissions summary may name the same integration differently, so
            match on the capability.
          title: Integration Label
          type: string
      required:
        - integration_label
        - capabilities
      title: IntegrationCapabilitiesOffForAgent
      type: object
    Pagination:
      properties:
        has_more:
          type: boolean
        next_cursor:
          type:
            - string
            - 'null'
      required:
        - next_cursor
        - has_more
      type: object
    AvailableIntegrationCapability:
      description: >-
        One permission group of a connected integration that is switched off for
        this agent.
      properties:
        name:
          description: The capability's name as the agent's Integrations settings show it.
          title: Name
          type: string
        read_write_only:
          description: >-
            True when this capability has no read-only level, so it can only be
            granted at read/write. A read-only request for it cannot be applied.
          title: Read Write Only
          type: boolean
      required:
        - name
        - read_write_only
      title: AvailableIntegrationCapability
      type: object
  securitySchemes:
    bearerAuth:
      description: >-
        `Authorization: Bearer <token>` where `<token>` is either a
        `neo_sk_<env>_<secret>` API key (service account) or a Microsoft Entra
        ID access token (dashboard user).
      scheme: bearer
      type: http

````