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

# Get the MCP catalog

> Returns the full catalog of available MCP integration servers along with the calling
workspace's install state for each. For every active server it reports static
metadata (display name, description, category, publisher, transport, trust tier,
version, credential model, and any featured ranking) plus per-tenant fields: whether
the tenant explicitly enabled or disabled it, the effective enabled state, the
install status (active, paused, failed, or reauth_required), the install scopes the
operator allows, and an icon URL when one exists. Admin only; scoped to the caller's
own workspace.



## OpenAPI

````yaml GET /v1/mcp/catalog
openapi: 3.1.0
info:
  title: HQ API
  description: >-
    Public HTTP API for HQ. Authenticate with a Personal Access Token
    (`Authorization: Bearer hq_pat_...`) for server-side integrations, or an
    OAuth 2.1 authorization-code + PKCE flow for browser apps acting on a user's
    behalf. Both grant from the same resource:action scope vocabulary; an
    endpoint's required scope is listed under its `security`.
  license:
    name: Apache-2.0
    identifier: Apache-2.0
  version: 1.0.0
servers:
  - url: https://api.hq.zone
    description: HQ API (production)
security: []
tags:
  - name: me
    description: The signed-in user's own account
  - name: conversations
    description: Conversations and their messages
  - name: documents
    description: The content-addressed documents library
  - name: schedules
    description: Scheduled prompts and recurring tasks
  - name: agents
    description: Agents, their skills and integrations
  - name: memory
    description: What the assistant remembers (L5 governance)
  - name: tokens
    description: Personal Access Token management
  - name: billing
    description: Usage and billing
  - name: notifications
    description: In-app notification center
  - name: admin
    description: Workspace administration
  - name: integrations
    description: Workspace integrations (Slack, MCP, skills)
  - name: onboarding
    description: New-workspace onboarding wizard
  - name: auth
    description: Sign-in, sessions, and OAuth
paths:
  /v1/mcp/catalog:
    get:
      tags:
        - integrations
      summary: Get the MCP catalog
      description: >-
        Returns the full catalog of available MCP integration servers along with
        the calling

        workspace's install state for each. For every active server it reports
        static

        metadata (display name, description, category, publisher, transport,
        trust tier,

        version, credential model, and any featured ranking) plus per-tenant
        fields: whether

        the tenant explicitly enabled or disabled it, the effective enabled
        state, the

        install status (active, paused, failed, or reauth_required), the install
        scopes the

        operator allows, and an icon URL when one exists. Admin only; scoped to
        the caller's

        own workspace.
      operationId: mcp_catalog
      responses:
        '200':
          description: MCP registry + this tenant's install state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/McpCatalogResp'
      security:
        - bearer_pat:
            - admin
        - oauth2:
            - admin
components:
  schemas:
    McpCatalogResp:
      type: object
      required:
        - servers
      properties:
        servers:
          type: array
          items:
            $ref: '#/components/schemas/CatalogServer'
    CatalogServer:
      type: object
      required:
        - slug
        - display_name
        - publisher
        - transport
        - trust_tier
        - version
        - default_enabled
        - credential_model
        - effective_enabled
        - allowed_scopes
        - featured
      properties:
        allowed_scopes:
          type: array
          items:
            type: string
          description: |-
            Which install scopes the operator permits for this MCP.
            Subset of `{team, user}`. The UI shows the Team/Private
            picker only when both are present; single-element arrays
            skip the picker and default silently.
        category:
          type:
            - string
            - 'null'
        credential_model:
          type: string
          description: |-
            `none` / `platform` / `tenant_api_key` / `tenant_oauth`. Drives
            the install UX - `none` + `platform` are one-click toggles;
            `tenant_oauth` routes through `/v1/oauth/start/{slug}`;
            `tenant_api_key` prompts for a vault-bound credential.
        default_enabled:
          type: boolean
        description:
          type:
            - string
            - 'null'
        display_name:
          type: string
        effective_enabled:
          type: boolean
          description: |-
            Effective state for the calling tenant - `default_enabled ⊕
            tenant_enabled`.
        featured:
          type: boolean
          description: Promoted into the Featured strip; `featured_rank` orders it.
        featured_rank:
          type:
            - integer
            - 'null'
          format: int32
        icon_url:
          type:
            - string
            - 'null'
          description: |-
            Origin-served icon URL (`/v1/mcp/catalog/{slug}/icon?v=<md5>`) when
            this server has an `icon_svg`; `None` falls back to a lettermark
            tile in the UI. The `?v=` token busts the immutable cache when the
            icon changes.
        install_status:
          type:
            - string
            - 'null'
          description: |-
            Tenant install status (`active` / `paused` / `failed` /
            `reauth_required`) when an explicit row exists. Useful for
            surfacing "Reconnect" prompts in the UI.
        max_calls_per_day:
          type:
            - integer
            - 'null'
          format: int64
          description: |-
            Current per-day call cap parsed from `budget_defaults`; `None` =
            uncapped. Drives the editable daily-limit affordance on custom
            (`t:`) integration cards.
        publisher:
          type: string
        slug:
          type: string
        tenant_enabled:
          type:
            - boolean
            - 'null'
          description: |-
            What this tenant has done explicitly. `None` = no row, inherits
            from `default_enabled`. `Some(true/false)` = explicit
            install/disable.
        transport:
          type: string
        trust_tier:
          type: string
        version:
          type: string
  securitySchemes:
    bearer_pat:
      type: http
      scheme: bearer
      bearerFormat: hq_pat
      description: 'Personal Access Token. Send as `Authorization: Bearer hq_pat_...`.'
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://app.hq.zone/v1/oauth/authorize
          tokenUrl: https://api.hq.zone/v1/oauth/token
          refreshUrl: https://api.hq.zone/v1/oauth/token
          scopes:
            admin: Administer the workspace (users, settings, integrations)
            agents:read: View the agents in your workspace
            agents:write: Create and configure agents
            billing:read: View usage and billing information
            conversations:read: Read your conversations and their messages
            conversations:write: Start conversations and send messages on your behalf
            documents:read: Read your documents library
            documents:write: Upload and manage documents in your library
            memory:read: Read what the assistant remembers about you
            memory:write: Correct or delete what the assistant remembers
            schedules:read: View your scheduled tasks
            schedules:write: Create and manage scheduled tasks
            tables:read: Read your tables and their rows
            tables:write: Create tables and add, edit, or delete rows

````