Skip to content
GET /connector/{slug}/tool

The registry the organization keeps for one of its own remote MCP connectors: one row per tool NAME, decided once for every connection of the connector (which of those names a particular connection lists is its own business). A tool the server offers is usable at once. Rows carry `status` (`active`, or `disabled` when a manager turned it off), the `tier` (derived from the server's annotations, always follows the server on a refresh, up or down), `tier_source` (`server`: the server's own annotations decided the tier; `default`: the server sent no `readOnlyHint: true` and no boolean `destructiveHint`, so the tier is MCP's safe default `destructive` and the console draws no access tag for it), the whole `description` of the latest definition (bounded at sync to 8,000 characters), `connection_count` (how many connections list it now) and `can_manage` (the caller may `PATCH` it). A caller with only `use` access sees just the `active` tools, every row reading `active`, whatever `status` they ask for. The detail's `remote_mcp.listed_tool_count` is this list (no filter) counted on the server. Keyset-paged by name; `q` is a case-insensitive substring of the name, upstream name, title or description (a space also matches `_`), `status`, `tier` (one or several) and `labeled` filter, all on the server before paging (so the cursor and an empty page speak for the filtered set). When `q`, `tier` or `labeled` narrows the list, the first page (no `cursor`) also carries `match_count`: the server's count of every tool matching those same filters, to read beside `listed_tool_count` as "N of M tools" instead of counting the pages held. Needs `use` access or better on the connector (a `view` grant answers 403, no reach at all answers 404, a connector with no remote MCP server answers 404) and the `custom_connectors` plan feature. Not `GET /connector/{slug}/tools`, which is the catalog capability listing.

Path Parameters

slugstring
required·

Connector slug of an org-owned remote MCP connector.

Query Parameters

qstring

Substring of the name, upstream name, title or description. LIKE wildcards are matched literally. Max 200 characters.

statusstring

Only tools that are on (active) or off (disabled). Managers only; a use grantee always gets active.

Possible values:
activedisabled
tierstring[]

Only tools whose stored tier is this one, or any of several: a comma list (tier=read,write) or the parameter repeated. It is the tier the gate enforces, so tier=destructive includes the tools the server left unlabeled (tier_source: "default"). Pair with labeled=true for server labels only. Empty is no filter; any value that is not read, write or destructive is a 400.

Possible values:
readwritedestructive
labeledstring

true: only tools the server labeled itself (tier_source: "server"); false: only the ones it left unlabeled. Empty is no filter; any other value is a 400.

Possible values:
truefalse

Response Body

match_countinteger

How many tools match this request's q / tier / labeled (and the caller's status), counted on the server. Only on a first page of a narrowed list; absent otherwise.

next_cursorstring,null
prev_cursorstring,null
resultobject[]
curl -X GET 'https://api.elaichi.ai/connector/<slug>/tool' \
  -H 'Authorization: Bearer $ELAICHI_API_TOKEN' \
  -H 'Content-Type: application/json'
const response = await fetch('https://api.elaichi.ai/connector/<slug>/tool', {
  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/connector/<slug>/tool"
headers = {
    "Authorization": f"Bearer {os.environ['ELAICHI_API_TOKEN']}",
    "Content-Type": "application/json",
}

response = requests.get(url, headers=headers)
print(response.json())