---
title: "The MCP URL and registered client identifier for an assistant"
method: GET
path: "/api/oauth/connector"
tags: ["oauth"]
---

# The MCP URL and registered client identifier for an assistant

`GET /api/oauth/connector`

## Request

- Base URL: `https://app.nerdit.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://app.nerdit.ai/api/oauth/connector`
- Auth: none declared

Describe this account's connector as this deployment would accept it.

Every value is answered by asking the same question the flow itself
would ask. The entitlement is the one that is easy to forget and the
most confusing to get wrong: ``/oauth/authorize`` refuses an account
without Remote Link at the consent screen, so a page that printed a URL
and a client identifier to such an account would be sending someone to
paste two strings and hit ``entitlement_required`` with nothing on
screen explaining why. Unentitled reads report the refusal and no
values.

Deliberately *not* rate limited, unlike its two neighbours: the
``/claude`` page polls it every few seconds for the connection dot, and
a budget tight enough to matter here would refuse the page rather than
an attacker. It is a session-gated read of rows the caller already owns
— a `GET /api/nodes` with two constants attached — so there is nothing
on it worth flooding for. Nothing bounding it is also why what it costs
is a property of the route rather than a detail: the entitlement and
the node list are two independent questions and are asked at the same
time, and the third answer — the deployment's registered client — is
the same row for every account here, so it is read from the cached
snapshot rather than queried once per poll per open page.

## Query parameters

- `client_id` 'claude' | 'chatgpt' | 'hermes', nullable

## Response `200`

Successful Response

- ConnectorView: What a person has to type into Claude, read from this deployment. Every field is nullable for the same reason: the ``/claude`` page must never print a plausible-looking instruction that this server would refuse. No registered client under :attr:`~nerdit_cloud.config.Settings.mcp_connector_client_id` means the identifier would be rejected at ``/oauth/authorize``; no Remote Link entitlement means the consent screen would refuse the grant no matter what was pasted. In both cases the page says so instead of showing a value. The account gateway URL does not wait for a node: an entitled account gets :attr:`mcp_url` with the gateway on even before its first machine, so the console can put "connect your agent" first (2026-09-29). The consent screen still refuses with 409 until a machine exists. Only a deployment with the gateway dark needs a node, because the URL it recommends is that node's own. :attr:`account_connector` is the same rule applied to *which* URL is recommended, and it is why the recommendation is a server answer rather than a page constant: ``/mcp`` answers 503 while :attr:`~nerdit_cloud.config.Settings.account_mcp_gateway_enabled` is off, so a deployment with the gateway dark recommends the direct node connector it does serve.
  - `entitled` boolean, required
  - `account_connector` boolean, required
  - `mcp_url` string, nullable, required
  - `client_id` string, nullable, required
  - `client_name` string, nullable, required
  - `node` ConnectorNodeView, required: One owned node, its live state, and its advanced direct URL.
    - `node_id` string, uuid, required
    - `slug` string, required
    - `display_name` string, required
    - `online` boolean, required
    - `mcp_url` string, required
  - `advanced_node_connectors` ConnectorNodeView[], required
    - `node_id` string, uuid, required
    - `slug` string, required
    - `display_name` string, required
    - `online` boolean, required
    - `mcp_url` string, required

## Other responses

- `401`: Unauthorized
- `422`: Validation Error

---

[API](https://skmtc.dev/nerdit/apis/nerdit-cloud-web.md) · [All operations](https://skmtc.dev/nerdit/apis/nerdit-cloud-web/llms.txt) · [OpenAPI document](https://skmtc.dev/nerdit/apis/nerdit-cloud-web/revisions/06e3b44b58be?raw)
