Skip to content

Connector Configuration

The connectors array lives in workspace.json, not nimblebrain.json — where the name connectors belongs to the provider and gateway block instead. Each workspace declares its own connectors. This page documents the shape of a single entry — the same shape whether it was written by hand, by the connectors install flow, or by the CLI.

Every entry is one remote MCP server, addressed by URL. The runtime orchestrates over remote MCP: it connects to a URL with a credential, and does not download, verify, or execute a server’s code. There is no by-name or by-path entry, and nothing runs as a subprocess of the platform.

NimbleBrain ships with no connectors by default. Platform capabilities (home, conversations, files, settings, usage, automations) are built in as in-process tool sources — install connectors to give a workspace domain-specific tools.

{
"connectors": [
{
"url": "https://mcp.example.com/mcp",
"serverName": "example",
"transport": {
"type": "streamable-http",
"auth": { "type": "bearer", "token": "sk-..." }
}
}
]
}
Field Type Default Description
url string Required. The remote MCP endpoint.
serverName string derived from url The name the server registers under. Tools reach the agent as <serverName>__<tool>, so this is the stable identity every other surface looks the connector up by. Set automatically at install from the catalog entry’s canonical id.
transport object { "type": "streamable-http" } How to reach the server. See Remote transport configuration.
ui object | null null Host UI metadata, copied from the operator-trusted catalog entry at install.
oauthScope "workspace" "workspace" Identity scope for the connection. One identity per (workspace, server), shared by the workspace’s members.
scopes string[] OAuth scopes to request. Omit for servers that derive their own (DCR).
oauthClient object Pre-registered OAuth client for vendors without Dynamic Client Registration. clientSecret is a reference into the credential store, never an inline value — see Credentials.
additionalAuthorizationParams object Extra query params for the authorize URL (e.g. Google’s access_type=offline). Reserved OAuth keys are rejected at config load.

The ui field is populated automatically when you install a connector whose catalog entry declares UI metadata. You do not need to set this manually.

{
"ui": {
"name": "Tasks",
"icon": "clipboard",
"placements": [
{ "slot": "main", "resourceUri": "ui://tasks/index.html" }
]
}
}
Field Type Description
ui.name string Human-readable app name shown in the sidebar.
ui.icon string Emoji or icon identifier.
ui.placements array Placement declarations (each a slot plus a ui:// resource URI) that register the app’s views. Re-validated at every registration, so a malformed one is dropped rather than rendered.

The transport object controls how NimbleBrain connects to the server.

{
"url": "https://mcp.example.com/mcp",
"serverName": "example",
"transport": {
"type": "streamable-http",
"auth": { "type": "bearer", "token": "sk-..." },
"headers": {
"X-Custom-Header": "value"
},
"reconnection": {
"maxRetries": 5,
"initialReconnectionDelay": 1000,
"maxReconnectionDelay": 30000
},
"sessionId": "resume-session-abc123"
}
}
Field Type Default Description
type "streamable-http" | "sse" "streamable-http" Transport protocol. Streamable HTTP is the default MCP transport. Use "sse" for servers that only support Server-Sent Events.
auth object Authentication method. See auth types.
headers object {} Custom HTTP headers sent with every request. Keys and values are strings.
reconnection object Reconnection behavior. See reconnection.
sessionId string MCP session ID for resuming an existing session.
{
"auth": {
"type": "bearer",
"token": "sk-your-api-key"
}
}

Sends an Authorization: Bearer <token> header with every request.

Control how NimbleBrain handles dropped connections to remote servers.

Field Type Description
maxRetries number Maximum number of reconnection attempts before giving up.
initialReconnectionDelay number Milliseconds to wait before the first retry.
maxReconnectionDelay number Maximum milliseconds between retries (backs off exponentially up to this cap).
{
"id": "ws_product",
"name": "Product",
"connectors": [
{
"url": "https://mcp.example.com/mcp",
"serverName": "example-remote",
"transport": {
"type": "streamable-http",
"auth": { "type": "bearer", "token": "sk-..." },
"headers": { "X-Tenant": "acme" },
"reconnection": {
"maxRetries": 3,
"initialReconnectionDelay": 1000,
"maxReconnectionDelay": 10000
}
}
},
{
"url": "https://mcp.granola.ai/mcp",
"serverName": "ai-granola-mcp",
"oauthScope": "workspace"
}
]
}