Skip to content
Docs
opendesk.shOpen app

Integrations

Connect Linear, GitHub, Jira, Sentry, Slack, Stripe and any MCP server so Ollie can look things up and act there, with your approval.

Integrations connect the tools your team already works in. Once one is connected, Ollie can look things up there and, after someone approves, create and update things for you: “open a Linear issue for this ticket”, “is this error in Sentry?”, “check this customer’s invoices in Stripe”.

Every integration is the product’s own MCP server (Model Context Protocol). Products not in the list connect by URL, including internal tools that run an MCP server. Admins manage them in Settings, Integrations.

  1. Add by URL: connect any MCP server that is not in the list.
  2. Connected: what Ollie uses for everyone in the workspace, with how many tools it has and how many ask before acting.
  3. Categories: issues, docs, chat, CRM, payments, files and automation.
  4. Catalog: each card says how it signs in (account sign-in or access token) and has Connect.
  1. Click Connect on its card

    The connection is shared by the workspace, so an admin signs in once and everyone’s Ollie can use it.

    • Account sign-in (Linear, Jira and Confluence, Sentry, Notion, Slack and most others) opens the product’s own sign-in page and brings you back to opendesk.
    • Access token (GitHub, Stripe) asks for a token you create in that product. Give it only the access Ollie needs, for example a fine-grained GitHub token for the repositories it may use, or a Stripe restricted key with read access.
  2. Choose its tools

    Open a connected integration to see its tools. Each one is marked Looks up (runs on its own) or Asks first (waits for approval). Switch off any tool you don’t want Ollie to use, or switch the whole integration off.

  3. Keep it up to date

    The ⋯ menu has Check for new tools, to fetch the list again after the product adds tools, Sign in again (for account sign-in), and Disconnect. Disconnecting deletes the sign-in; links already on tickets stay.

Click Add by URL, paste the server’s URL (it usually ends in /mcp or /sse), optionally name it, and choose how it signs in: Sign in with an account, an Access token, or No sign-in. Servers that speak Streamable HTTP or the older HTTP and SSE transport both work.

  1. Pick a shortcut, or ask

    On a ticket, Ollie’s section shows shortcuts for your connected tools under In your tools, such as “Create a Linear issue” or “Find related Linear issues”. You can also just ask Ollie in your own words.

  2. Approve the change

    Anything that creates or changes something shows an approval card first, marked Runs in Linear (or the product it runs in), with the exact title, fields and text. Nothing happens until the person who asked approves it.

  3. Find it on the ticket

    When Ollie creates something from a ticket, it links it back. The ticket’s Linked section lists what the ticket points to in other tools, and the timeline records “Ollie linked …”. Removing a link leaves the item in the other product as it is.

  • Sign-ins and tokens are stored encrypted and are never shown again, in the app, the API, events or logs.
  • opendesk only talks to public https servers, and checks every address a server names (its sign-in pages included) the same way.
  • Account sign-in uses OAuth with PKCE. The sign-in is bound to the browser that started it.
  • Connecting, changing and disconnecting an integration is recorded in the audit log.
  • What a connected product returns is treated as data: it cannot approve changes or change Ollie’s instructions.

Integrations work the same on a self-host. Most products register opendesk on their own the first time an admin signs in. For a product that only accepts apps registered in advance, register an OAuth app there with the redirect URL https://<your API URL>/v1/integrations/oauth/callback, then set:

Terminal window
MCP_<KEY>_CLIENT_ID=...
MCP_<KEY>_CLIENT_SECRET=... # if the product issued one

<KEY> is the integration’s key in capitals, for example MCP_SLACK_CLIENT_ID (Slack only accepts apps registered in advance; the compose file passes its two variables). For another product, add its two variables to the opendesk service’s environment in docker-compose.yml. The API for integrations and ticket links is in the contract.

Edit this page on GitHub