Skip to content

MCP Connectors

This document describes API for MCP Connectors.

Permissions

To manage MCP Connectors a following permissions will be used.

PermissionManageable via RolesDescription
listfalseAllow list
viewfalseAllow view details
createfalseAllow create
editfalseAllow edit
deletefalseAllow delete

Permissions are not manageable. Only Super Admins are granted these permissions, except for list, which is available to all authenticated users.

POST /api/mcp/connectors/

Creates MCP Connector.

Permissions

Requires authentication and mcp_connectors.create permission.

Request example

  • Headers
Request Method: POST
Content-Type: application/json
Authorization: JWT access_token

Body

KeyTypeRequiredNotes
namestringTrue
integrationuuidTrueUUID of an existing AI MCP integration
descriptionstringFalse
is_enabledboolFalse
allowed_toolsArrayFalseArray of tools names

Validations

  • name
    • Is required
    • Max length: 100
    • Is unique
  • integration
    • Is required
    • is UUID of an existing AI MCP integration
  • Maximum number of MCP Connectors: 100.

Sample request body

POST /api/mcp/connectors/

json
{
    "name": "Claude - analytics",
    "integration": "a982601a-36c9-4735-9746-d251ae84ed71",
    "description": "A connector for Claude agents preparing analytics reports",
    "is_enabled": true,
    "allowed_tools": ["search_object_classes", "get_object_record_document"]
}

Response

  • Successful status 201 Created
  • Response body:
json
{
    "id": 16,
    "name": "Claude - analytics",
    "integration": "a982601a-36c9-4735-9746-d251ae84ed71",
    "description": "A connector for Claude agents preparing analytics reports",
    "is_enabled": true,
    "status": "enabled",
    "server_url": "https://acme.autologyx.com/mcp?connector=16",
    "client_id": "<client_id>",
    "client_secret": "<client_secret>",
    "created_at": "2026-07-14T11:26:32.751496+03:00",
    "created_by": {
        "id": 1,
        "first_name": "John",
        "last_name": "Smith",
        "username": "j.smith@autologyx.com",
        "company_name": "Autologyx",
        "is_deleted": false
    },
    "modified_at": "2026-07-14T11:26:32.751520+03:00",
    "modified_by": {
        "id": 1,
        "first_name": "John",
        "last_name": "Smith",
        "username": "j.smith@autologyx.com",
        "company_name": "Autologyx",
        "is_deleted": false
    },
    "_meta": {
        "permissions": {
            "list": true,
            "create": true,
            "view": true,
            "edit": true,
            "delete": true
        }
    },
    "allowed_tools": ["search_object_classes", "get_object_record_document"]
}

⚠️ Warning: Because the client_secret is stored securely on the server as a hashed value, it is returned only once, immediately after the POST request. It cannot be recovered later, so it must be captured and stored by the user for later use.

Errors

Non-standard validation errors.

ErrorResponse codeMessage
Integration is not AI MCP400 Bad Request"integration": ["{uuid} is not a valid AI MCP integration."]

PATCH /api/mcp/connectors/connector_id/

Updates MCP Connector.

Permissions

Requires authentication and mcp_connectors.edit permission.

Request example

  • Headers
Request Method: POST
Content-Type: application/json
Authorization: JWT access_token

Body

KeyTypeNotes
namestring
descriptionstring
is_enabledbool
allowed_toolsArrayArray of tools names

Validations

  • name
    • Max length: 100
    • Is unique
  • description
    • Max length: 500

Sample request body

PATCH /api/mcp/connectors/connector_id/

json
{
    "name": "Claude - analytics",
    "description": "A connector for Claude agents preparing analytics reports",
    "is_enabled": true,
    "allowed_tools": ["search_object_classes"]
}

Response

  • Successful status 200 Ok
  • Response body:
json
{
    "id": 16,
    "name": "Claude - analytics",
    "integration": "a982601a-36c9-4735-9746-d251ae84ed71",
    "description": "A connector for Claude agents preparing analytics reports",
    "is_enabled": true,
    "status": "enabled",
    "server_url": "https://acme.autologyx.com/mcp?connector=16",
    "client_id": "<client_id>",
    "created_at": "2026-07-14T11:26:32.751496+03:00",
    "created_by": {
        "id": 1,
        "first_name": "John",
        "last_name": "Smith",
        "username": "j.smith@autologyx.com",
        "company_name": "Autologyx",
        "is_deleted": false
    },
    "modified_at": "2026-07-14T11:50:31.851520+03:00",
    "modified_by": {
        "id": 1,
        "first_name": "John",
        "last_name": "Smith",
        "username": "j.smith@autologyx.com",
        "company_name": "Autologyx",
        "is_deleted": false
    },
    "_meta": {
        "permissions": {
            "list": true,
            "create": true,
            "view": true,
            "edit": true,
            "delete": true
        }
    },
    "allowed_tools": ["search_object_classes"]
}

Errors

Standard validation errors.

GET /api/mcp/connectors/

Returns list of MCP Connectors.

Permissions

Requires authentication.

Request example

Headers

Request Method: GET
Content-Type: application/json
Authorization: JWT access_token

Response

KeyTypeNotes
limitint
offsetint
total_countintTotal number of forms visible to the user (based on permissions).
filtered_countintNumber of forms visible to the user (based on permissions) with filters applied.
nextURL / nullNext page URL (null if there is no next page)
previousURL / nullPrevious page URL (null if there is no previous page)
resultsArrayDescribed in the next table.

Response results array

KeyTypeNotes
idint
namestring
descriptionstring
integrationUUID
is_enabledbool
statusenumValues: enabled, disabled
created_atdatetime
created_byuser
modified_atdatetime
modified_byuser
_meta.permissionsObjectDict describing permissions.

Response example

  • Status 200 OK
  • Body
json
{
  "limit": 100,
  "offset": 0,
  "filtered_count": 1,
  "total_count": 20,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 5,
      "name": "Claude connector",
      "description": "The connector for Claude agents"
      "integration": "87138c1b-ac83-4588-9be0-aa092e7753b0",
      "is_enabled": true,
      "status": "enabled",
      "created_at": "2026-07-12T11:21:51.877690+02:00",
      "created_by": <user>,
      "modified_at": "2026-07-14T11:11:31.127734+02:00",
      "modified_by": <user>,
      "_meta": {
        "permissions": {
            "list": true,
            "view": true,
            "edit": true,
            "create": true,
            "delete": true,
        }
      }
    }
  ]
}

Sorting

ParameterExampleNotes
id{build}/api/mcp/connectors/?ordering=idAscending
id{build}/api/mcp/connectors/?ordering=-idDescending (-)
name{build}/api/mcp/connectors/?ordering=nameAscending
name{build}/api/mcp/connectors/?ordering=-nameDescending (-)
created_at{build}/api/mcp/connectors/?ordering=created_atAscending
created_at{build}/api/mcp/connectors/?ordering=-created_atDescending (-)
modified_at{build}/api/mcp/connectors/?ordering=modified_atAscending
modified_at{build}/api/mcp/connectors/?ordering=-modified_atDescending (-)

Filtering

ParameterPredicatesExample
id={build}/api/mcp/connectors/?id=9
namestandard string{build}/api/mcp/connectors/?name__icontains=foobar
integration=, in{build}/api/mcp/connectors/?integration__in=uuid1,uuid2
is_enabledstandard bool{build}/api/mcp/connectors/?is_enabled=true
created_atstandard datetime{build}/api/mcp/connectors/?created_at__gte=2022-01-01
created_bystandard set{build}/api/mcp/connectors/?created_by__in=123,234,345
modified_atstandard datetime{build}/api/mcp/connectors/?modified_at__range=2022-01-01,2022-01-31
modified_bystandard set{build}/api/mcp/connectors/?modified_by=123

Errors

ErrorResponse codeMessage
Not authenticated401 Unauthorized"detail": "Authentication credentials were not provided."

GET /api/mcp/connectors/connector_id/

Retrieves the MCP Connector details.

Permissions

Requires authentication and mcp_connectors.view permission.

URL parameters

KeyTypeNotes
connector_idint

Request example

  • Headers
Request Method: GET
Content-Type: application/json
Authorization: JWT access_token

Response

KeyTypeNotes
idintAutomatically generated by the backend.
namestring
descriptionstring
integrationUUID
is_enabledbool
statusenumValues: enabled, disabled
server_urlstring
client_idstring
created_atdatetime
created_byuser
modified_atdatetime
modified_byuser
_meta.permissionsObjectObject describing permissions.
allowed_toolsArrayArray of allowed tools names.

Response example

  • Status 200 OK
  • Body
json
{
  "id": 5,
  "name": "Claude connector",
  "description": "The connector for Claude agents",
  "integration": "87138c1b-ac83-4588-9be0-aa092e7753b0",
  "is_enabled": true,
  "status": "enabled",
  "created_at": "2026-07-12T11:21:51.877690+02:00",
  "created_by": <user>,
  "modified_at": "2026-07-14T11:11:31.127734+02:00",
  "modified_by": <user>,
  "_meta": {
    "permissions": {
      "list": true,
      "view": true,
      "edit": true,
      "create": true,
      "delete": true,
    }
  },
  "allowed_tools": ["search_object_classes"]
}

POST /api/mcp/connectors/connector_id/reset-client-secret/

Resets client secret for the MCP Connector.

Permissions

Requires authentication and the User must be a Super Admin.

URL parameters

KeyTypeNotes
connector_idint

Request example

  • Headers
Request Method: POST
Content-Type: application/json
Authorization: JWT access_token

Response

KeyTypeNotes
idint
namestring
server_urlstring
client_idstring
client_secretstring

Response example

  • Status 200 OK
  • Body
json
{
    "id": 16,
    "name": "Claude connector",
    "server_url": "https://acme.autologyx.com/mcp?connector=16",
    "client_id": "<client_id>",
    "client_secret": "<client_secret>"
}

OPTIONS /api/mcp/connectors/

Permissions

Requires authentication only.

Request

  • Headers
Content-Type: application/json
Authorization: JWT access_token
  • Schema

OPTIONS /api/mcp/connectors/

Response

  • Successful status 200 OK
  • Response body:
json
{
    "list": {
        "columns": [
            {
                "alias": "id",
                "type": "int",
                "predicates": [
                    "exact",
                    "gt",
                    "gte",
                    "lt",
                    "lte",
                    "range"
                ],
                "sort_ok": true
            },
            {
                "alias": "name",
                "type": "string",
                "predicates": [
                    "exact",
                    "iexact",
                    "contains",
                    "icontains",
                    "startswith",
                    "istartswith",
                    "endswith",
                    "iendswith"
                ],
                "sort_ok": true
            },
            {
                "alias": "integration",
                "type": "uuid",
                "predicates": [
                    "exact",
                    "in"
                ],
                "sort_ok": false
            },
            {
                "alias": "description",
                "type": "string",
                "predicates": [],
                "sort_ok": false
            },
            {
                "alias": "is_enabled",
                "type": "bool",
                "predicates": [
                    "exact"
                ],
                "sort_ok": false
            },
            {
                "alias": "status",
                "type": "enum",
                "predicates": [],
                "sort_ok": false,
                "values": [
                    {
                        "value": "enabled",
                        "text": "enabled"
                    },
                    {
                        "value": "disabled",
                        "text": "disabled"
                    }
                ]
            },
            {
                "alias": "created_at",
                "type": "datetime",
                "predicates": [
                    "exact",
                    "gt",
                    "gte",
                    "lt",
                    "lte",
                    "range"
                ],
                "sort_ok": true
            },
            {
                "alias": "created_by",
                "type": "user",
                "predicates": [
                    "exact",
                    "in"
                ],
                "sort_ok": false,
                "autocomplete": "/api/users/autocomplete/?text__icontains="
            },
            {
                "alias": "modified_at",
                "type": "datetime",
                "predicates": [
                    "exact",
                    "gt",
                    "gte",
                    "lt",
                    "lte",
                    "range"
                ],
                "sort_ok": true
            },
            {
                "alias": "modified_by",
                "type": "user",
                "predicates": [
                    "exact",
                    "in"
                ],
                "sort_ok": false,
                "autocomplete": "/api/users/autocomplete/?text__icontains="
            }
        ]
    },
    "details": {
        "schema": [
            {
                "alias": "name",
                "type": "string",
                "required": true,
                "validators": [
                    {
                        "type": "min_length",
                        "length": 1
                    },
                    {
                        "type": "max_length",
                        "length": 100
                    }
                ]
            },
            {
                "alias": "description",
                "type": "string",
                "required": false,
                "validators": [
                    {
                        "type": "max_length",
                        "length": 500
                    }
                ]
            },
            {
                "alias": "is_enabled",
                "type": "bool",
                "required": false
            },
            {
                "alias": "integration",
                "type": "uuid",
                "required": true
            },
            {
              "alias": "allowed_tools",
              "type": "set",
              "required": false
            }
        ]
    },
    "restrictions": {
        "limit_items": 100
    }
}