/settings/mcp-servers, /settings/mcp-servers/new, /settings/mcp-servers/:id/edit)
and each agent’s MCP servers tab (/agents/:agentId/mcp-servers); people manage their
own sign-ins under the sidebar entry Connected Accounts in the Settings group
(/settings/mcp-connections).
What it does
- Register a server (
createMcpServer,updateMcpServer,deleteMcpServer):slug(^[a-z0-9_]{1,24}$, no leading, trailing or double underscore, prefixolyros_reserved), display name, description,url(http(s), https when credentials are sent, nouser@host, egress-checked against private and metadata ranges),transportstreamable_http(default) orsse,auth_modenone(default),static_secret(encrypted headers sent on every call) oroauth_per_user;oauth_companyexists in the enum but is rejected as not supported yet.is_activeswitches a server off without deleting it. - Discover and curate tools.
discoverMcpServerToolsfetches the tool list and stores name, description, input schema and annotations (McpServerTool); a company may run at most 20 discoveries per hour.allowed_tools(orallow_all_tools) decides what agents see;setMcpToolAccessOverrideadjusts one tool;setMcpServerSkillCodeEnabledcontrols whether skill code may call the server. - Mount into runtimes.
runtimesis a list ofserver_agent(default; the in-server chat agent for web and Slack) andsandbox(the long-lived per-user sandbox; requires an explicitallowed_toolslist).cloud_taskis refused: “cloud tasks cannot use MCP servers”. - Bind to agents (
bindMcpServerToAgent,unbindMcpServerFromAgent,agentMcpServers); binding a sandbox agent is checked against the server’s runtimes. - Per-user OAuth. For
oauth_per_userservers Olyros registers itself as an OAuth client with the server when needed, a person starts the flow (startMcpOAuth), consents atPOST /api/mcp/oauth/consentand returns throughGET /api/mcp/oauth/callback(PKCE state:pending,used,expired,denied). The credential is stored per principal, the identity of a person across channels (olyros_userorslack), with statusactive,revokedorrefresh_failed, refresh scheduling and the upstream subject and email when the server reports identity. An optionalidentity_issuer(https OpenID issuer) lets Olyros check the signed-in identity. People list and revoke their own connections (myMcpConnections,revokeMcpCredential); admins see everyone’s (mcpServerConnections,revokeMcpConnection). - Use is recorded. Each tool call outcome is logged as
ok,auth_required,errorordenied, which is how an agent knows to ask a person to connect. When the conversation came in through a router, the sign-in prompt and its follow-ups leave through the router’s Slack app.
Who can use it
- Register, update, delete, discover tools, tool overrides, skill-code switch, bind to
agents, see all connections, revoke another person’s credential: company admin
(ability
mcp.manage, listed under Settings -> Roles,/settings/roles). - List servers and tools, see an agent’s servers, start your own OAuth connection
(
startMcpOAuth, membership only, at most 10 starts per person per hour) and revoke it: any company member. - No plan or tier gate.
How to configure it
- Agents -> MCP Servers (
/settings/mcp-servers) -> New (/settings/mcp-servers/new,createMcpServer): slug, URL, transport, auth mode; forstatic_secretadd the headers; foroauth_per_useradd scopes and, if the server publishes identity, the issuer. - Discover tools, then pick the allowed tools (or allow all) and the runtimes.
- On each agent’s MCP servers tab (
/agents/:agentId/mcp-servers), bind the server (bindMcpServerToAgent). - For per-user servers, each person opens Settings -> Connected Accounts
(
/settings/mcp-connections) and connects (startMcpOAuth); an agent that getsauth_requiredwill prompt them. - Review connections and revoke as people leave (
mcpServerConnections).
Limits and defaults
What it emits
- Discovered tool catalog per server with annotations history.
- Credential rows per person and server with refresh state; OAuth state rows.
- Per-call use records (
McpCredentialUse) with outcomes. - Agent bindings visible on the agent page.
Known gaps
- Not available to one-shot cloud tasks (
cloud_taskruntime refused), so scheduled or workflow-dispatched tasks cannot call MCP servers. - No company-wide OAuth (
oauth_company), only per person or static secret. - Remote servers only: no stdio servers and no servers hosted by Olyros for a company.
- No per-tool approval gate; a bound tool is callable once allowed.