Get connector
One connector entry; 404 covers both an unknown id and a connector this environment does not serve.
https://api.corespeed.io/connectors/:idReturns the same entry shape as the index, for one connector. This read adds
tools when the tool list is known: each tool's name, and its description
and annotations once the tool's provider has described it. Each account adds
two fields here. grants lists an account's shares (grantee_id,
grantee_kind of "member", "agent", or "org", and tools, where null
means every tool); it appears only on accounts you may share. granted_tools
is on an account shared with you: the tools that share allows, or null for
every tool.
Org-registered remote MCP connectors are read at
GET /connectors/org/:slug instead — their own tree, so a remote slug
and a same-named built-in connector each answer on their own path. The remote
read additionally carries the verbatim snapshot tool list under
remote.tools.
Tied machines (kind: "device") have no read here:
GET /connectors/device__<slug> answers 404 endpoint_not_found. Their index
entry is the whole of a device on this API — see
List connectors.
Authorizations
AuthorizationstringheaderrequiredBearer <sk-cs-…>— a CoreSpeed API key, or a user session JWT.x-api-key: <sk-cs-…>is accepted in its place.
Path parameters
idstringpathrequiredThe
idof an index entry without akind— an OAuth connector.
A connector that exists and is served here but has no connected account returns
200 with status: "disconnected" and an empty accounts array — that is the
answer that tells you to send a user to the dashboard.
A 404 means this endpoint has nothing to serve you for that id, which
covers two cases you cannot tell apart and should not try to: the id does not
exist, or it exists but is not offered to you here (upstream approval still in
progress, credentials not present here, or not yet open to your
organization). Whether a connector is offered is internal operations state, so
it is not published on any endpoint — the responses are deliberately
identical.
Treat GET /connectors as the only source of truth for what you can connect:
an id absent from the index is not connectable here, whatever the reason.
Attempting a connect flow for one fails, so there is no state in which
probing this endpoint tells you something the index did not.
One exception, and it exists so a grant can always be revoked: if you still
have accounts on a connector that has since stopped being offered, this
endpoint keeps serving that entry (and DELETE keeps working on it). Without
it, a credential that outlived its environment's OAuth app would become an
orphan nobody could disconnect.
Failures use the nested { "error": { type, code, message } } envelope,
like every other route; branch on error.code. Every code is in
Errors & status codes.
curl https://api.corespeed.io/connectors/notion \
-H "Authorization: Bearer $CORESPEED_API_KEY"{
"id": "linear",
"category": "projects",
"name": "Linear",
"mcp_url": "https://api.corespeed.io/mcp",
"status": "disconnected",
"accounts": []
}Both 404 cases answer with the gateway's catch-all shape — the nested envelope
and a message listing the gateway's supported surfaces. A connector not
offered on this environment returns exactly this, so the response carries no
hint that the id is one CoreSpeed implements.
{
"error": {
"type": "not_found",
"code": "endpoint_not_found",
"message": "Unknown endpoint /connectors/nope. Supported surfaces: …"
}
}The credential authenticated but resolves to no active organization, so there is no boundary to read connector state inside.
{
"error": {
"type": "payment_required",
"code": "no_active_org",
"message": "No organization resolved for this request. Open https://app.corespeed.io in a browser once to finish setup, then sign in again so your client picks up the new workspace."
}
}