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

# Get the AI tools found on the devices

> Return every AI tool found on the devices, most installed first, as JSON `data`: its `toolKey`, kind, name, vendor, how many devices have it and run it, its versions (`topVersion` the most common) and its worst finding severity. Narrow with `kind`, `search` (name or vendor) and `worstSeverity` (a list, e.g. critical and high). Use it for "how many devices run Claude Code" or "which MCP servers are installed"; for the devices and findings of one tool use `getAiTool`, for counts only `getAiToolsOverview`. AI tools are what Primo finds on Macs (assistant apps, coding agents, IDE plugins, browser extensions, MCP servers, AI connections, agent instruction files), as of the last report (`lastSyncedAt` of `getAiToolsOverview`, every 5 minutes), with Primo's severities, less the findings the company's AI tools settings ignore. They are not the software catalog (`getSoftwares`, `getDeviceSoftware`), the company's own AI agents (`listAgents`) nor AI credits (`getAiUsage`). A company without AI tools monitoring gets a 403, final.

<span className="badge-read">Key: Read</span><span className="badge-company">Scope: Company</span>


## OpenAPI

````yaml https://api.getprimo.com/openapi.json get /ai-tools/tools
openapi: 3.1.1
info:
  title: Public API - BETA
  description: Read docs on https://docs.getprimo.com/
  version: '1.0'
  contact: {}
servers:
  - url: https://api.getprimo.com
security:
  - apikey: []
tags: []
paths:
  /ai-tools/tools:
    get:
      tags:
        - AiTools
      summary: Get the AI tools found on the devices
      description: >-
        Return every AI tool found on the devices, most installed first, as JSON
        `data`: its `toolKey`, kind, name, vendor, how many devices have it and
        run it, its versions (`topVersion` the most common) and its worst
        finding severity. Narrow with `kind`, `search` (name or vendor) and
        `worstSeverity` (a list, e.g. critical and high). Use it for "how many
        devices run Claude Code" or "which MCP servers are installed"; for the
        devices and findings of one tool use `getAiTool`, for counts only
        `getAiToolsOverview`. AI tools are what Primo finds on Macs (assistant
        apps, coding agents, IDE plugins, browser extensions, MCP servers, AI
        connections, agent instruction files), as of the last report
        (`lastSyncedAt` of `getAiToolsOverview`, every 5 minutes), with Primo's
        severities, less the findings the company's AI tools settings ignore.
        They are not the software catalog (`getSoftwares`, `getDeviceSoftware`),
        the company's own AI agents (`listAgents`) nor AI credits
        (`getAiUsage`). A company without AI tools monitoring gets a 403, final.
      operationId: getAiTools
      parameters:
        - name: worstSeverity
          required: false
          in: query
          description: >-
            Keep the items whose worst finding has one of these severities
            (repeat the param or comma separate)
          schema:
            type: array
            items:
              type: string
              enum:
                - critical
                - high
                - medium
                - low
        - name: search
          required: false
          in: query
          description: Part of the tool name or vendor
          schema:
            type: string
        - name: kind
          required: false
          in: query
          description: Keep the tools of one kind
          schema:
            enum:
              - assistant_app
              - coding_agent
              - ide_plugin
              - browser_extension
              - mcp_server
            type: string
      responses:
        default:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAiToolsResponse_Output'
components:
  schemas:
    GetAiToolsResponse_Output:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              toolKey:
                description: >-
                  Identifier of the tool, to pass to `getAiTool` or
                  `getAiFindings`
                type: string
              kind:
                description: >-
                  assistant_app (Claude, ChatGPT desktop), coding_agent (Claude
                  Code, Codex), ide_plugin, browser_extension or mcp_server
                type: string
                enum:
                  - assistant_app
                  - coding_agent
                  - ide_plugin
                  - browser_extension
                  - mcp_server
              name:
                type: string
              vendor:
                anyOf:
                  - type: string
                  - type: 'null'
              deviceCount:
                description: Devices the tool was found on
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              runningDeviceCount:
                description: Devices the tool was running on at the last report
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              topVersion:
                description: The version found on the most devices
                anyOf:
                  - type: string
                  - type: 'null'
              versions:
                type: array
                items:
                  type: object
                  properties:
                    version:
                      type: string
                    deviceCount:
                      type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                  required:
                    - version
                    - deviceCount
                  additionalProperties: false
              worstSeverity:
                description: Worst severity of its findings; null without finding
                anyOf:
                  - type: string
                    enum:
                      - critical
                      - high
                      - medium
                      - low
                  - type: 'null'
              worstSeverityLabel:
                anyOf:
                  - type: string
                  - type: 'null'
              findingCount:
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
            required:
              - toolKey
              - kind
              - name
              - vendor
              - deviceCount
              - runningDeviceCount
              - topVersion
              - versions
              - worstSeverity
              - worstSeverityLabel
              - findingCount
            additionalProperties: false
      required:
        - data
      additionalProperties: false
  securitySchemes:
    apikey:
      scheme: bearer
      bearerFormat: API key
      type: http
      description: >-
        Use your Primo API key in the Authorization header as `Bearer
        <API_KEY>`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.