Clarifeye External MCP API

The External MCP API from Clarifeye — 9 operation(s) for external mcp.

Operations 11

GET /projects/{project_id}/mcp-servers/ List a knowledge store's external MCP servers #
POST /projects/{project_id}/mcp-servers/ Register an external MCP server (admin) #
PATCH /projects/{project_id}/mcp-servers/{id}/ Update an external MCP server (admin) #
DELETE /projects/{project_id}/mcp-servers/{id}/ Remove an external MCP server (admin) #
POST /projects/{project_id}/mcp-servers/{id}/sync_tools/ Re-sync an MCP server's tool catalog (admin) #
GET /projects/{project_id}/mcp-servers/connection-status/ Current user's connection status per enabled server #
GET /users/me/mcp-connections/ List my external MCP connections #
POST /users/me/mcp-connections/initiate/ Begin an external MCP OAuth connection #
POST /users/me/mcp-connections/{id}/reconnect/ Re-authorize an existing MCP connection #
POST /users/me/mcp-connections/set-api-key/ Set the current user's API key for an api_key MCP server #
POST /users/me/mcp-connections/{id}/revoke/ Revoke an external MCP connection #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/clarifeye:clarifeye-external-mcp-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

clarifeye-external-mcp-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Clarifeye Platform API — Full API Documentation External…
  description: 'Complete REST API reference for the Clarifeye Platform.


    Documents every endpoint exposed by the platform — the public surface plus

    the advanced surface: pipeline customization (extraction flows, pipeline

    runs, warehouse tables, document tag/metadata configuration), the pre-MCP

    AI surface (agent settings, playground conversations, conversation-scoped

    feedback views, notifications), and the impersonation header. New AI

    integrations should consume knowledge via MCP rather than the

    conversation/agent-settings endpoints documented here.


    ## Authentication

    All endpoints require authentication. Include the Authorization header in every request using either format:

    - `Authorization: Token `

    - `Authorization: Bearer `


    ## Service accounts and API keys

    Integrations authenticate with an **API key** of a **service account**:

    - `Authorization: Bearer ` (keys start with `cfk_`)


    A service account is an ordinary member (role `member`) of one organization that cannot log

    in. Organization admins create it and mint its keys on the organization''s *Service

    accounts* page (`/organizations/{id}/service-accounts/`, `/organization-api-keys/`), and

    give it access to knowledge stores with ordinary store permissions. A key is valid on every

    endpoint and acts as its service account: it reaches exactly the stores, with exactly the

    rights, the account was given. An account can hold several keys (each with its own name,

    optional expiry and revocation), so a key can be rotated without changing identity.


    A refused key answers **403** with one of: `Invalid API key.`, `API key revoked.`,

    `API key expired.`, `API key disabled.` (the service account is disabled).


    Any valid key may also call `POST /organizations/{id}/provision-user/` and

    `POST /organizations/{id}/deprovision-user/` for its own organization (the `{id}` in the

    path must be the key''s organization). The email domains these may pre-create accounts for

    are configured by Clarifeye on the organization (`allowed_provisioning_domains`).


    ## Impersonation


    Certain endpoints support user impersonation for creating or listing data on behalf of other users.

    This is useful for integrating external systems that need to attribute actions to specific users.


    **Header:** `X-Impersonate-Email`


    **Required Permission:** `CAN_IMPERSONATE_OTHER_USERS` (for a person, contact Clarifeye to enable it; org admins grant it to a service account on the organization''s Service accounts page)


    **Behavior:**

    - If the header is provided and the impersonator has the required permission, the action is performed as the target user

    - If the target user is not found, the request proceeds as the original authenticated user

    - If the target user does not have access to the project, the request proceeds as the original authenticated user

    - If the impersonator lacks the `CAN_IMPERSONATE_OTHER_USERS` permission, the header is ignored


    **With an API key** the request fails instead (**403**) whenever impersonation cannot

    happen: missing permission, unknown target, target without access to the store, target that

    is itself a service account, or an endpoint outside a store. A key never silently acts as

    its own service account when impersonation was asked for.'
  version: 1.0.0
  contact:
    name: Clarifeye Support
servers:
- url: https://eu.app.clarifeye.ai/api/v1
  description: EU
- url: https://us.app.clarifeye.ai/api/v1
  description: US
security:
- BearerAuth: []
- TokenAuth: []
tags:
- name: External MCP
paths:
  /projects/{project_id}/mcp-servers/:
    get:
      tags:
      - External MCP
      summary: List a knowledge store's external MCP servers
      description: Project members can read; only project admins can create/edit.
      operationId: listMcpServers
      parameters:
      - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: Servers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MCPServer'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    post:
      tags:
      - External MCP
      summary: Register an external MCP server (admin)
      description: Creates a server and synchronously syncs its tool catalog (all tools start disabled). ``url`` and ``auth_mode`` are immutable after creation. The ``oauth_client_secret`` is write-only. API keys are per-user (set on the account endpoint), never on the server.
      operationId: createMcpServer
      parameters:
      - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MCPServerCreate'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MCPServer'
        '400':
          description: Validation error (reserved name/URL, bad URL, unknown tool)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          $ref: '#/components/responses/Forbidden'
  /projects/{project_id}/mcp-servers/{id}/:
    patch:
      tags:
      - External MCP
      summary: Update an external MCP server (admin)
      description: Edit name, enable/disable, tool allowlist, or rotate the OAuth client secret. ``url`` and ``auth_mode`` are immutable.
      operationId: updateMcpServer
      parameters:
      - $ref: '#/components/parameters/ProjectId'
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MCPServerUpdate'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MCPServer'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
      - External MCP
      summary: Remove an external MCP server (admin)
      operationId: deleteMcpServer
      parameters:
      - $ref: '#/components/parameters/ProjectId'
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Deleted
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /projects/{project_id}/mcp-servers/{id}/sync_tools/:
    post:
      tags:
      - External MCP
      summary: Re-sync an MCP server's tool catalog (admin)
      description: Re-fetches the server's tools using the admin's own credential (OAuth) or the shared API key. Newly discovered tools start disabled; removed tools drop out of the allowlist. Rate limited.
      operationId: syncMcpServerTools
      parameters:
      - $ref: '#/components/parameters/ProjectId'
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Updated server with refreshed catalog
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MCPServer'
        '400':
          description: Sync failed (e.g. admin_connection_required for an OAuth server not yet connected)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          $ref: '#/components/responses/Forbidden'
  /projects/{project_id}/mcp-servers/connection-status/:
    get:
      tags:
      - External MCP
      summary: Current user's connection status per enabled server
      description: Drives the connect banner and empty-state connector prompt. Separate from the job-execution poll path.
      operationId: mcpServerConnectionStatus
      parameters:
      - $ref: '#/components/parameters/ProjectId'
      - name: surface
        in: query
        required: false
        description: Restrict to servers enabled for this agent surface.
        schema:
          type: string
          enum:
          - chat
          - tasks
          - work_with_clara
      responses:
        '200':
          description: Per-server status
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    server_id:
                      type: string
                      format: uuid
                    name:
                      type: string
                    url:
                      type: string
                    auth_mode:
                      type: string
                      enum:
                      - oauth
                      - api_key
                      - none
                    requires_user_connection:
                      type: boolean
                    user_connection_status:
                      type:
                      - string
                      - 'null'
                      enum:
                      - connected
                      - expired
                      - revoked
                      - error
        '401':
          $ref: '#/components/responses/Unauthorized'
  /users/me/mcp-connections/:
    get:
      tags:
      - External MCP
      summary: List my external MCP connections
      description: The current user's OAuth connections to external MCP servers, one per distinct server URL, grouped across all knowledge stores the user belongs to. Never returns tokens or client secrets.
      operationId: listUserMcpConnections
      responses:
        '200':
          description: Connections
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserMCPConnection'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /users/me/mcp-connections/initiate/:
    post:
      tags:
      - External MCP
      summary: Begin an external MCP OAuth connection
      description: Starts the OAuth authorization-code flow for an enabled OAuth MCP server the user can access. Returns the authorization URL for the frontend to open in a popup. Rate limited.
      operationId: initiateUserMcpConnection
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - url
              - redirect_back_to
              properties:
                url:
                  type: string
                  description: MCP server URL (must match an enabled OAuth server in one of the user's stores).
                redirect_back_to:
                  type: string
                  description: Same-origin frontend URL to return to after the dance (validated against the redirect allowlist).
      responses:
        '200':
          description: Authorization URL
          content:
            application/json:
              schema:
                type: object
                properties:
                  authorize_url:
                    type: string
        '400':
          description: Unsafe redirect, unknown server, or discovery/registration failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /users/me/mcp-connections/{id}/reconnect/:
    post:
      tags:
      - External MCP
      summary: Re-authorize an existing MCP connection
      operationId: reconnectUserMcpConnection
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - redirect_back_to
              properties:
                redirect_back_to:
                  type: string
      responses:
        '200':
          description: Authorization URL
          content:
            application/json:
              schema:
                type: object
                properties:
                  authorize_url:
                    type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /users/me/mcp-connections/set-api-key/:
    post:
      tags:
      - External MCP
      summary: Set the current user's API key for an api_key MCP server
      description: Stores the user's own API key for an enabled api_key server in one of their knowledge stores (encrypted at rest) and pushes it to their vault. Credentials are per-user; there is no shared store-level key.
      operationId: setUserMcpApiKey
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - url
              - api_key
              properties:
                url:
                  type: string
                api_key:
                  type: string
                  writeOnly: true
      responses:
        '200':
          description: The updated connection
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserMCPConnection'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /users/me/mcp-connections/{id}/revoke/:
    post:
      tags:
      - External MCP
      summary: Revoke an external MCP connection
      description: Best-effort remote token revocation, removes the Anthropic vault credential, and marks the connection revoked.
      operationId: revokeUserMcpConnection
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Revoked connection
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserMCPConnection'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    ProjectId:
      name: project_id
      in: path
      required: true
      description: UUID of the project
      schema:
        type: string
        format: uuid
  responses:
    NotFound:
      description: Not found - resource does not exist
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Not found.
    Unauthorized:
      description: Unauthorized - missing or invalid authentication
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Authentication credentials were not provided.
    Forbidden:
      description: Forbidden - insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: You do not have permission to perform this action.
    BadRequest:
      description: Bad request - invalid parameters or request body
      content:
        application/json:
          schema:
            oneOf:
            - $ref: '#/components/schemas/Error'
            - $ref: '#/components/schemas/ValidationError'
  schemas:
    UserMCPConnection:
      type: object
      description: A user's credential for one external MCP server URL (account-scoped, no secrets exposed). All non-`none` modes are per-user. A synthesized row (a server the user could connect but hasn't) has a null `id` and status `not_connected`.
      properties:
        id:
          type:
          - string
          - 'null'
          format: uuid
        normalized_url:
          type: string
        status:
          type: string
          enum:
          - connected
          - expired
          - revoked
          - error
          - not_connected
        auth_mode:
          type:
          - string
          - 'null'
          enum:
          - oauth
          - api_key
          - none
          description: Auth mode of the servers using this URL; null for an orphaned connection.
        has_api_key:
          type: boolean
          description: True when this is an api_key connection with a key stored.
        server_names:
          type: array
          items:
            type: string
          description: Names of the enabled servers (across the user's stores) that use this URL.
        store_names:
          type: array
          items:
            type: string
        in_use:
          type: boolean
          description: False when no enabled server in any of the user's stores still references this URL.
        connected_at:
          type:
          - string
          - 'null'
          format: date-time
        last_refreshed_at:
          type:
          - string
          - 'null'
          format: date-time
        token_expires_at:
          type:
          - string
          - 'null'
          format: date-time
    MCPServerUpdate:
      type: object
      description: Editable fields for a server. ``url`` and ``auth_mode`` are immutable and cannot be changed after creation. The client secret is write-only.
      properties:
        name:
          type: string
        is_enabled:
          type: boolean
        enabled_for_chat:
          type: boolean
        enabled_for_tasks:
          type: boolean
        enabled_for_work_with_clara:
          type: boolean
        enabled_tools:
          type: array
          items:
            type: string
        oauth_client_id:
          type: string
        oauth_client_secret:
          type: string
          writeOnly: true
    MCPServerCreate:
      type: object
      description: Fields for creating a server. The client secret is write-only.
      required:
      - name
      - url
      - auth_mode
      properties:
        name:
          type: string
        url:
          type: string
        auth_mode:
          type: string
          enum:
          - oauth
          - api_key
          - none
        is_enabled:
          type: boolean
        enabled_for_chat:
          type: boolean
        enabled_for_tasks:
          type: boolean
        enabled_for_work_with_clara:
          type: boolean
        enabled_tools:
          type: array
          items:
            type: string
        oauth_client_id:
          type: string
        oauth_client_secret:
          type: string
          writeOnly: true
    MCPServer:
      type: object
      description: A knowledge-store-level external MCP server registration. Secrets are never returned.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        url:
          type: string
          description: Immutable after creation.
        auth_mode:
          type: string
          enum:
          - oauth
          - api_key
          - none
        is_enabled:
          type: boolean
        enabled_for_chat:
          type: boolean
          description: Available to internal playground chat agents (default true).
        enabled_for_tasks:
          type: boolean
          description: Available to CMA Task agents (default true).
        enabled_for_work_with_clara:
          type: boolean
          description: Available to Work-with-Clara agents (default true).
        tool_catalog:
          type: array
          description: Synced tools; each is {name, description, annotations, input_schema}.
          items:
            type: object
        enabled_tools:
          type: array
          description: Allowlist of tool names exposed to agents (all disabled by default).
          items:
            type: string
        oauth_client_id:
          type: string
        last_synced_at:
          type:
          - string
          - 'null'
          format: date-time
        last_sync_error:
          type: string
        created_at:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error message
      example:
        error: User not found
    ValidationError:
      type: object
      additionalProperties:
        type: array
        items:
          type: string
      example:
        email:
        - This field is required.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'Use `Authorization: Bearer <token>`. The token is either a user token / OAuth access

        token, or a service-account API key (`cfk_...`). A key is valid on every endpoint and

        acts as its service account, an organization member with per-store permissions.

        Refused keys answer 403 with `Invalid API key.`, `API key revoked.`,

        `API key expired.` or `API key disabled.`.

        '
    TokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Use Authorization: Token <token>'
x-tagGroups:
- name: Extractors
  tags:
  - Object Extractors
  - Tag Extractors
  - Chunks Extractors
  - Parsing Extractors
  - Document Filter Extractors
  - Chunk Tag Filter Extractors
  - Document Tag Extractors
  - Tag Alerts Extractors
  - Object Alerts Extractors
  - Imported Object Extractors
x-provenance:
  method: harvested
  publisher: Clarifeye
  source: https://docs.clarifeye.ai/api-reference/openapi-full.yaml
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)