List the connectors used by the caller's toolboxes
/toolbox/connector
The connectors that actually appear in the toolboxes `GET /toolbox` would return for this caller, and how many of those toolboxes hold each one — the options for `GET /toolbox?connector_slug=`, the same way `GET /connector/categories` is the options for `GET /connector?category=`. Build a connector filter on this rather than on `GET /connector`: the catalog offers connectors the caller has no toolbox for, and the empty list that follows selecting one reads as a bug rather than as an answer. **The guarantee:** filtering on any slug this endpoint returns yields exactly that row's `toolbox_count` toolboxes from `GET /toolbox` under the same `?type=` — so pass `?type=` here whenever you pass it there, or the facet describes a wider universe than the list will return. `toolbox_count` is a `COUNT(DISTINCT toolbox_id)` over the caller's WHOLE visible set, never over one page of it, so it is honest at any organization size. Ordered most-used first, slug ascending as the tiebreak. Cursor-paginated: the wire list is one row per connector the caller uses, and small-today is no reason to hand back a bare array. Visibility is docs/access-model.md §4 exactly, inherited from `GET /toolbox` — a connector reachable only through someone else's private toolbox is not here.
Query Parameters
Anchored prefix match on the connector SLUG (goo matches google-drive), not on the display name: the name lives in the connector catalog, which the organization store cannot reach, so matching it would mean searching in the client over a paginated list. LIKE wildcards are matched literally. Max 200 characters.
Mirrors GET /toolbox's ?type= and must be given the same value: stored counts only ACL-backed toolboxes, automatic only the dynamic global:…/connection:… rows, unset both. Any other value is a 400.
storedautomatic
Response Body
The connector's square icon when it has one, else its wordmark logo, else null — including when the catalog could not be reached, which costs an option its picture and never its place in the list. Render initials from name when it is null.
Catalog label. Falls back to the slug when the connector no longer resolves, so an option always has something to draw.
Connector slug — the value to send as GET /toolbox?connector_slug=.
How many of the caller's visible toolboxes hold at least one tool from this connector, under the ?type= in force. Always at least 1 — this endpoint never offers an option that filters to nothing.
curl -X GET 'https://api.elaichi.ai/toolbox/connector' \
-H 'Authorization: Bearer $ELAICHI_API_TOKEN' \
-H 'Content-Type: application/json'const response = await fetch('https://api.elaichi.ai/toolbox/connector', {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + process.env.ELAICHI_API_TOKEN,
'Content-Type': 'application/json',
},
});
const data = await response.json();
console.log(data);import os
import requests
url = "https://api.elaichi.ai/toolbox/connector"
headers = {
"Authorization": f"Bearer {os.environ['ELAICHI_API_TOKEN']}",
"Content-Type": "application/json",
}
response = requests.get(url, headers=headers)
print(response.json())