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

# Register an MCP server to your account

> Connects to a remote MCP server, runs its initialize and tools/list handshake, and adds it to your account's own catalog. Its tools become callable by your assistants immediately. Registering a server you do not control puts its tool descriptions and results directly into assistant context — review an unfamiliar endpoint the way you would an unreviewed package before registering it.



## OpenAPI

````yaml /api-reference/endpoint/assistants/openapi.json post /hub/mcp/register
openapi: 3.0.0
info:
  title: Quiva Assistants API
  x-gateway-name: API Gateway
  description: >-
    API for managing Quiva Assistants. Every endpoint requires either a Bearer
    JWT or an API key — the gateway resolves an API key into the user/account
    context these endpoints read. A restricted API key must explicitly allow the
    /hub/agent* paths it's used against, or requests are rejected before they
    reach this API.
  version: 0.1.1
  contact:
    name: quiva.ai Support
servers:
  - url: https://api.quiva.ai
    description: Production API server
security:
  - bearerAuth: []
  - apiKeyAuth: []
paths:
  /hub/mcp/register:
    post:
      tags:
        - Assistants
      summary: Register an MCP server to your account
      description: >-
        Connects to a remote MCP server, runs its initialize and tools/list
        handshake, and adds it to your account's own catalog. Its tools become
        callable by your assistants immediately. Registering a server you do not
        control puts its tool descriptions and results directly into assistant
        context — review an unfamiliar endpoint the way you would an unreviewed
        package before registering it.
      operationId: registerMcpServer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterMcpServerRequest'
            example:
              endpoint: https://example.com/mcp
              name: Example integration
              transport: streamable-http
      responses:
        '200':
          description: Server registered successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterMcpServerResponse'
        '400':
          description: >-
            Bad request - one of endpoint or registry_name is required, or the
            handshake failed.
        '401':
          description: Unauthorized - provide valid authentication credentials.
        '409':
          description: >-
            A server with this id already exists - retry with replace: true to
            overwrite it.
components:
  schemas:
    RegisterMcpServerRequest:
      type: object
      description: >-
        Provide `endpoint` (a remote MCP server URL) or `registry_name` (an
        entry id from GET /hub/mcp/registry) — one is required.
      properties:
        endpoint:
          type: string
          description: >-
            Remote MCP server URL. Works whether or not the server is listed in
            the public registry.
        registry_name:
          type: string
          description: >-
            A registry entry id, e.g. "io.github.owner/repo" — selects that
            entry instead of a URL.
          example: io.github.owner/repo
        transport:
          type: string
          enum:
            - streamable-http
            - sse
          default: streamable-http
          description: stdio is not supported for a registered remote server.
        server_id:
          type: string
          description: Catalog id for this registration. Derived from name when omitted.
        name:
          type: string
        description:
          type: string
        headers:
          type: object
          additionalProperties:
            type: string
          description: >-
            Non-secret static headers replayed on every call. Do not put
            credentials here.
        auth_token:
          type: string
          description: Used only for this registration's handshake — never stored.
        oauth_integration_id:
          type: string
          description: >-
            An existing connection id from a prior OAuth handshake with this
            server.
        auth_required:
          type: boolean
          description: Marks the server as needing a credential supplied at call time.
        tags:
          type: array
          items:
            type: string
        metadata:
          type: object
          additionalProperties: true
        replace:
          type: boolean
          description: Allow overwriting an existing registration with the same server_id.
        env:
          type: array
          items:
            type: object
            additionalProperties: true
          description: >-
            Declared environment variables the server needs; echoed back so a
            connection form can collect them.
    RegisterMcpServerResponse:
      type: object
      properties:
        server_id:
          type: string
        name:
          type: string
        tools:
          type: array
          items:
            type: object
            additionalProperties: true
          description: The tools the server reported from its own tools/list handshake.
        env:
          type: array
          items:
            type: object
            additionalProperties: true
          description: Declared environment variables, echoed back for a connection form.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT Authorization header using the Bearer scheme.
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: API key authentication via X-Api-Key header.

````