Skip to content
PATCH /connector/{slug}

**`config` is REPLACED wholesale when present** — send the complete definition, since anything omitted is gone. `label` and `category` are ordinary merge-patch fields. Org-owned connectors only, and the caller needs edit access (ownership or an `edit` share). Existing connections keep working, but tools removed from the config stop resolving in every toolbox that names them. A remote MCP connector (`kind: "remote_mcp"`) takes a different body: `label`, `category`, `logo`, `description`, `auth_config` (`custom` sign-in only; replaces the declaration whole, and the response carries `reconnect_required: true` when its fields changed so existing connections must sign in again), `client_id` / `client_secret` (`oauth_client` only; an omitted secret keeps the stored one) and `omit_refresh_scope` (OAuth only, else 400 `omit_refresh_scope_not_oauth`; `true` sets it, `false` removes it, read at the next token refresh, so no `reconnect_required`) and `connect_notes` / `connect_notes_link` (OAuth only, else 400 `connect_notes_not_oauth`; `null` clears; stored in place in the OAuth config as `permissions_text` / `documentation_link`, so no `reconnect_required`). Its `url` cannot be changed (400: it would send members' tokens to a different host — create a new connector) and neither can its raw `config` (400).

Path Parameters

slugstring
required·

Connector slug of an org-owned connector.

Request Body

auth_configRecord<string, any>

Remote MCP connectors with custom sign-in only.

categorystring,null
client_idstring

Remote MCP connectors with oauth_client sign-in only.

client_secretstring

As client_id. Write-only.

configRecord<string, any>

Replaces the stored config entirely. Refused on a remote MCP connector.

connect_notesstring,null

Remote MCP connectors with OAuth sign-in only. Markdown shown before sign-in (trimmed). null clears it.

connect_notes_linkstring,null · uri

As connect_notes. An https link with no credentials. null clears it.

descriptionstring

Remote MCP connectors only.

labelstring
logostring

Remote MCP connectors only. An https URL.

omit_refresh_scopeboolean

Remote MCP connectors with OAuth sign-in only. true: a token refresh sends no scope; false: back to the default. Members do not need to reconnect.

curl -X PATCH 'https://api.elaichi.ai/connector/<slug>' \
  -H 'Authorization: Bearer $ELAICHI_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"label":"your_label","config":{},"logo":"your_logo","description":"your_description","auth_config":{},"client_id":"your_client_id","client_secret":"your_client_secret","omit_refresh_scope":true}'
const body = {
  "label": "your_label",
  "config": {},
  "logo": "your_logo",
  "description": "your_description",
  "auth_config": {},
  "client_id": "your_client_id",
  "client_secret": "your_client_secret",
  "omit_refresh_scope": true
};

const response = await fetch('https://api.elaichi.ai/connector/<slug>', {
  method: 'PATCH',
  headers: {
    'Authorization': 'Bearer ' + process.env.ELAICHI_API_TOKEN,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(body),
});

const data = await response.json();
console.log(data);
import os
import requests

url = "https://api.elaichi.ai/connector/<slug>"
headers = {
    "Authorization": f"Bearer {os.environ['ELAICHI_API_TOKEN']}",
    "Content-Type": "application/json",
}
payload = {
    "label": "your_label",
    "config": {},
    "logo": "your_logo",
    "description": "your_description",
    "auth_config": {},
    "client_id": "your_client_id",
    "client_secret": "your_client_secret",
    "omit_refresh_scope": True
}

response = requests.patch(url, headers=headers, json=payload)
print(response.json())