connections
How bots reach other services. /v1/mcp-connectors: remote MCP servers of the org. /v1/oauth-apps: how to sign in at a provider. /v1/connected-accounts: the sign-ins of people and of the org. Beta.
List connected accounts
The caller's own accounts. With all=true every account of the org, personal and shared, for people with connector:write. No response holds a token.
query Parameters
limitafterbeforeorderallEvery account of the org. Needs connector:write.
Every account of the org. Needs connector:write.
List connected accounts › Responses
Successful Response
has_moreobjectDisconnect an account
Deletes the account and revokes the token at the provider when it has a revocation URL. A person disconnects their own. connector:write disconnects any account.
path Parameters
account_idDisconnect an account › Responses
Successful Response
idobjectdeletedList MCP connectors
query Parameters
limitafterbeforeorderList MCP connectors › Responses
Successful Response
has_moreobjectCreate an MCP connector
Needs connector:write. Bots reference the MCP connector by id and choose allowed tools and approvals per bot. The auth mode applies to every bot, the Personal bot too. none sends no credential. shared needs a credential_id. per_person uses the account of the person who writes: a token they paste (PUT /v1/mcp-connectors/{id}/token), or, with oauth_app_id and pass_through, their sign-in at that OAuth app.
Create an MCP connector › Request Body
labelurlauth_modeenabledoperatorpass_throughCreate an MCP connector › Responses
Successful Response
auth_modecreated_atshared: a bearer token or a sign-in in an org vault.
enabledOff stops all use from the next turn.
idlabelThe server label of the MCP tool. Unique in the org.
The sign-in the MCP connector owns, set up from the MCP authorization flow.
per_person with pass_through: the OAuth app whose token is sent.
operatorFree text: who runs the server and where.
pass_throughSend a person's token of oauth_app_id to this server. Off by default.
updated_aturlobjectProbe an MCP server for OAuth
Needs connector:write or agent:write. Asks the server how to sign in (protected resource metadata, then the authorization server) and says whether GEKI can be a client there. Nothing is registered or stored.
Probe an MCP server for OAuth › Responses
Successful Response
How GEKI can be a client there. null with oauth: the admin enters a client.
oauthThe server follows the MCP authorization flow.
scopesRead an MCP connector
path Parameters
connector_idRead an MCP connector › Responses
Successful Response
auth_modecreated_atshared: a bearer token or a sign-in in an org vault.
enabledOff stops all use from the next turn.
idlabelThe server label of the MCP tool. Unique in the org.
The sign-in the MCP connector owns, set up from the MCP authorization flow.
per_person with pass_through: the OAuth app whose token is sent.
operatorFree text: who runs the server and where.
pass_throughSend a person's token of oauth_app_id to this server. Off by default.
updated_aturlobjectUpdate an MCP connector
Needs connector:write. Only the fields sent change. A mode keeps only the fields it uses. The URL and the label apply at the next turn.
path Parameters
connector_idUpdate an MCP connector › Responses
Successful Response
auth_modecreated_atshared: a bearer token or a sign-in in an org vault.
enabledOff stops all use from the next turn.
idlabelThe server label of the MCP tool. Unique in the org.
The sign-in the MCP connector owns, set up from the MCP authorization flow.
per_person with pass_through: the OAuth app whose token is sent.
operatorFree text: who runs the server and where.
pass_throughSend a person's token of oauth_app_id to this server. Off by default.
updated_aturlobjectDelete an MCP connector
Needs connector:write. Deletes the pasted tokens of the MCP connector. 409 mcp_connector_in_use while a bot draft or live bot uses it.
path Parameters
connector_idDelete an MCP connector › Responses
Successful Response
idobjectdeletedStart a sign-in at the MCP server
For an MCP connector with an oauth setup. Returns the authorize URL; see POST /v1/oauth-apps/{id}/connect. A per_person MCP connector signs in the caller. A shared MCP connector needs vault_id and connector:write: the account lands in that org vault, and the MCP connector uses it once its credential_id names it.
path Parameters
connector_idStart a sign-in at the MCP server › Request Body
return_urlWhere the callback sends the browser afterwards.
Sent to the provider, usually the person's email. A silent sign-in needs it.
Sent to the provider. none signs in without a screen. admin_consent is for Microsoft: an admin consents for the whole tenant.
An org vault. Connects one shared account there. Needs connector:write.
Start a sign-in at the MCP server › Responses
Successful Response
authorize_urlSave a pasted token
For a per_person MCP connector without an OAuth app. Saves the caller's token as a connected account. Saving again replaces it. No route returns a token. DELETE /v1/connected-accounts/{id} removes it.
path Parameters
connector_idSave a pasted token › Request Body
tokenSave a pasted token › Responses
Successful Response
List the tools of an MCP server
Needs agent:write. Asks the MCP server live for its tools (tools/list, all pages up to a cap), which is why this is a POST. It uses the credential a turn of the caller would use: none, the shared one, or the caller's own account for per_person (403 person_required for a service account key). 400 needs_sign_in, needs_token, needs_credential, or turned_off when the MCP connector cannot be used. 502 when the server cannot be reached or refuses. Nothing is stored.
path Parameters
connector_idList the tools of an MCP server › Responses
Successful Response
has_moreobjectList OAuth apps
query Parameters
limitafterbeforeorderList OAuth apps › Responses
Successful Response
has_moreobjectCreate an OAuth app
Needs connector:write. Give the URLs, or an issuer and the server metadata fills them. The client secret is never returned.
Create an OAuth app › Request Body
client_idnameclient_authenabledgrant_typescope_separatorscopesCreate an OAuth app › Responses
Successful Response
client_authclient_idcreated_atenabledOff stops all use of the app from the next turn.
grant_typehas_client_secretThe client secret is write-only.
idnamescope_separatorscopestoken_urlupdated_atobjectRead an OAuth app
path Parameters
app_idRead an OAuth app › Responses
Successful Response
client_authclient_idcreated_atenabledOff stops all use of the app from the next turn.
grant_typehas_client_secretThe client secret is write-only.
idnamescope_separatorscopestoken_urlupdated_atobjectUpdate an OAuth app
Needs connector:write. Only the fields sent change. A new client ID or token URL sets every account of the app to needs_sign_in.
path Parameters
app_idUpdate an OAuth app › Responses
Successful Response
client_authclient_idcreated_atenabledOff stops all use of the app from the next turn.
grant_typehas_client_secretThe client secret is write-only.
idnamescope_separatorscopestoken_urlupdated_atobjectDelete an OAuth app
Needs connector:write. Deletes every account of the app. Tokens are not revoked. 409 oauth_app_in_use while an MCP connector sends its tokens or a bot draft or live bot maps it to a skill credential.
path Parameters
app_idDelete an OAuth app › Responses
Successful Response
idobjectdeletedRequest a token into a vault
Needs connector:write. For apps with grant_type client_credentials. Requests a token now and stores it in the org vault. The response is the connected account and holds no token. GEKI requests a new token when it expires.
path Parameters
app_idRequest a token into a vault › Request Body
vault_idThe org vault that holds the token.
Request a token into a vault › Responses
Successful Response
created_atidlabelThe account name from the provider. Empty when unknown.
provider_idThe OAuth app, the MCP connector, or the sign-in of a connector feature.
provider_kindconnector is Microsoft 365 on a Microsoft connector.
provider_namestatusThe person. null for a shared account.
updated_atThe org vault of a shared account.
objectStart a sign-in at the provider
Returns the authorize URL with PKCE and a signed state. Send the browser there. The callback /v1/oauth/callback stores the account and redirects to return_url. Without vault_id the account is the caller's own.
path Parameters
app_idStart a sign-in at the provider › Request Body
return_urlWhere the callback sends the browser afterwards.
Sent to the provider, usually the person's email. A silent sign-in needs it.
Sent to the provider. none signs in without a screen. admin_consent is for Microsoft: an admin consents for the whole tenant.
An org vault. Connects one shared account there. Needs connector:write.
Start a sign-in at the provider › Responses
Successful Response
authorize_url