airlock includes 250+ pre-built integrations that let you connect AI agents to popular services without writing an OpenAPI spec. Most are MCP proxies that route tool calls to the service's own upstream MCP server; more than thirty services that don't offer a suitable MCP server of their own, including several of the built-in OAuth integrations, are proxied through an airlock-hosted MCP server instead.
The categories below highlight commonly-used integrations. The complete, up-to-date list is what you see under Connectors in the Control Room.
Available Integrations
Code & Project Management
CRM & Sales
Customer Support
Marketing & Email
Meetings & Communication
Infrastructure & Deployment
Monitoring & Analytics
E-commerce
Payments
Documentation & Data
Websites & Content
Design & Media
AI & Machine Learning
Automation
HR & Recruiting
ERP
Forms & Email Validation
Airlock-hosted MCP Integrations
Some services don't expose their own MCP server (or expose one airlock can't proxy), so airlock hosts one for them, 38 in all. These are still MCP proxies: they forward tool calls to an airlock-hosted MCP server rather than a vendor-run one. This is an implementation detail: you connect them exactly like any other integration, with whatever auth type is listed for them above (built-in OAuth ones via Connect, API-key ones by entering a key on the integration's detail page).
The airlock-hosted integrations are:
- Built-in OAuth: Slack, Gmail, Google Admin, Google Analytics, Google Calendar, Google Drive, Outlook, Outlook Calendar, OneDrive, SharePoint, Microsoft Teams, Bitbucket, Figma, LinkedIn, Vercel, Dynamics 365 CRM
- API key / token: AFAS Profit, Aikido, Ashby, Atlassian Goals & Projects, Azure DevOps (token), Beamer, BounceBan, bunny.net, CodeRabbit, Dagster+, Datadog, Freshdesk, Odoo, PhantomBuster, Plenion, Process Street, Redmine, Segment, SendGrid, ZeroBounce
- Username and password: Zenvoices
- Manual OAuth setup: Exist, Teamleader Focus, Zoom
Authentication Types
Built-in OAuth
Integrations marked Built-in OAuth (GitHub, Bitbucket, Azure DevOps, Slack, Figma, Google Admin, Google Analytics, Google Calendar, Gmail, Outlook, Outlook Calendar, Microsoft Teams, Google Drive, OneDrive, SharePoint, LinkedIn, Vercel, Dynamics 365 CRM, Power BI) have pre-configured OAuth credentials managed by airlock. Users simply click Connect and complete the authorization flow, with no setup required.
Slack and Vercel also accept an API key: a bot token (xoxb-…) from your workspace's own Slack app, or a Vercel access token. A Slack bot token gives the bot its own identity rather than a person's, but it cannot use Slack's search tools, which need a signed-in user. When you add one, the wizard asks How do you want to connect?: Sign in, or Use an API key, which you then paste under Your connection on the integration's Settings tab. You can switch later: under Your connection, click Switch Account to disconnect your sign-in, then paste a key (an expired sign-in offers Disconnect and use an API key instead).
Standard OAuth
Most integrations use standard OAuth. When you add the integration, airlock handles the OAuth flow with the upstream service. Users click Connect on the integration's detail page to authorize access.
No auth
Two public documentation servers, Airbyte Docs and Google Workspace, need no credentials at all. They work as soon as you add them; there is no Connect step.
Manual OAuth Setup
HubSpot, Showpad, and Zoom require you to create your own OAuth application in the service's developer portal first, then enter the client credentials in airlock. Salesforce works the same way, with the app created inside your own Salesforce org (see Salesforce org setup). Box is similar: each organization enables the Box MCP Server in its own Box Admin Console to generate an enterprise-specific client ID and secret. Canva needs its own integration with Canva MCP turned on and the listed scopes ticked (see Canva integration setup). For Exist, any Exist user can create an OAuth client at exist.io/account/apps; switch on the read and write scopes for every group the agent should reach, because Exist sets a client's scopes on that same page. For Teamleader Focus, an admin creates an integration on the Teamleader Marketplace that every colleague then connects through (see Teamleader Focus setup). The wizard shows the redirect URI to register and links to each provider's setup guide.
API Key
Many integrations use API key or bearer token authentication, including Datadog, Firecrawl, RapidAPI, Dagster+, CodeRabbit, Aikido, ZeroBounce, PhantomBuster, BounceBan, Beamer, bunny.net, Freshdesk, Process Street, Redmine, Plenion, Segment, SendGrid, AWS, Odoo, and Odoo (native MCP). Generate a key in the service's settings and enter it on the integration's detail page. airlock checks most keys with the provider before saving them, so a key the provider refuses is not stored (see Authentication).
A few integrations ask for more than one value, and airlock combines them for you:
- Datadog: an API key and an Application key (both from Datadog's Organization Settings → API Keys / Application Keys).
- Odoo: your Odoo login (email) and your API key.
- AFAS Profit: the Client ID and Client Secret of the app connector your AFAS administrator set up for airlock, with OAuth and the client credentials flow. To use a classic token instead, leave the Client ID empty and paste the token. AFAS stops accepting classic tokens after 31 August 2027, and from Profit 9 client secrets expire after 180 days by default, so plan to renew them.
- Atlassian Goals & Projects: your Atlassian account email and a classic API token.
- AWS: an IAM Access key ID and Secret access key, plus a Session token only when you use temporary credentials. airlock signs every request to AWS's MCP server with them (AWS SigV4) and never sends them as a bearer token. Each call runs with that IAM identity's permissions, so give the key only the AWS access the agent should have.
- Segment: up to three values, one per Segment API. The Public API token is required and is what most tools use (in Segment: Settings → Workspace settings → Access management → Tokens; its role decides what the agent can change). Add a source write key to send events into that source, and a Profile API access token (Unify → Unify settings → API access) to read customer profiles. A tool whose key is missing tells the agent which one to add.
- Plenion: three values, because Plenion checks an installation-wide key and your own sign-in on every call: the API key for your Plenion installation, plus your Plenion login and password. A Plenion user linked to a customer only ever sees that customer's data, so whatever you can see in Plenion is what your agent can see.
Odoo (native MCP) uses one API key per member, created in Odoo under Preferences → Security → Add API Key with the MCP scope. Odoo scopes its keys: an MCP key only works with this integration, and the RPC key the other Odoo integration uses does not work here. Pick the longest duration you are allowed, because an expired key stops working without warning.
Redmine uses your personal API key from "My account" → "API access key" on your Redmine instance (the REST API must be enabled by an administrator under Administration → Settings → API).
Atlassian Goals & Projects requires a classic (unscoped) Atlassian API token created at id.atlassian.com; scoped API tokens cannot access the Goals & Projects APIs. Note that a classic token carries your full Atlassian access (including Jira and Confluence), even though this integration only exposes Goals & Projects tools.
Zenvoices
Zenvoices has no API keys and no OAuth. Its API signs in with a user's organisation, username and password, the same three values you type on the Zenvoices sign-in page, and airlock asks for exactly those. airlock signs in on your behalf and keeps the sign-in for as long as Zenvoices allows, so it does not sign in again on every call. Your password is stored encrypted, like every other credential.
Use a dedicated API user rather than a person's own account:
- In Zenvoices, a Zenvoices admin creates a user for airlock and grants it API access. Without that permission Zenvoices refuses the sign-in, even with the right password.
- Leave two-factor authentication off for that user. The Zenvoices API cannot complete a two-factor sign-in, so airlock tells you to use a user without it if you try.
- Give the user only the administrations and approval rights your agents should have. An agent can approve or reject only what this user could approve or reject in Zenvoices.
- Give it a password that does not start or end with a space. Spaces inside the password are fine.
airlock tests the sign-in when you save, so a wrong organisation, username or password is reported straight away rather than on the first tool call.
Approving and rejecting invoices are real actions in Zenvoices. A rejection can also send a message back to the supplier. airlock does not gate these tools by default: whether a new tool needs approval follows your organization's new-tool setting. To make every approval and rejection wait for a person, set approveInvoices and rejectInvoices to Require approval on the integration's Tools tab.
A third write tool, updateInvoiceExportStatus, records what happened when an invoice was booked in the accounting system (exported with its booking number, or failed with the reason). It is meant for setups where the agent does the booking itself; gate it the same way if that should wait for a person.
Additional Setup
Some integrations need one extra detail when you add them, on top of credentials:
-
Showpad and Cognee ask for your workspace subdomain (for example,
your-companyforyour-company.showpad.com). -
Freshdesk asks for your Freshdesk domain (for example,
yourcompanyforyourcompany.freshdesk.com). -
Segment asks for your workspace region:
us, oreufor a workspace created in the EU region. Segment refuses data sent to the wrong region. -
Shopify asks for your store name (for example,
acmeforacme.myshopify.com). Create the app in the Shopify Dev Dashboard of the same organization that owns the store, give it the Admin API access scopes the integration uses, release a version and install it on the store. The connect form has the full scope list with a copy button:read_products,write_products,read_orders,write_orders,read_customers,read_inventory,write_inventory,read_locations,read_discounts,write_discounts,read_publications,write_publications,read_reportsAfter installing, Shopify opens the app URL you entered; that page is not used and you can close it. An app made by a collaborator or partner account cannot sign in this way. Then enter the app's Client ID and Client Secret from its Settings page.
-
Plenion asks for your webservice URL (for example,
https://yourcompany.plenion.be). Plenion is installed on its own site per customer, so ask your Plenion contact for the address if you do not know it, and note that some installations sit on a path such ashttps://erp.yourcompany.be/plenion. The URL must be reachable over a public HTTPS address. It is set once per server by an admin and shared by everyone who connects, while each member signs in with their own login and password, so set it to a Plenion host you trust: every connecting member's credentials are sent to whatever address is configured. If calls fail right after connecting, check this address first. -
Redmine asks for your instance URL (for example,
redmine.example.com, ortools.example.com/redminefor a subpath install). The instance must be reachable over a public HTTPS address. The instance URL is set once per server and shared by everyone who connects, while each member authenticates with their own API key, so set it to a Redmine host you trust, since every connecting member's key is sent to whatever host is configured. -
Atlassian Goals & Projects asks for your Atlassian site (for example,
yourcompanyforyourcompany.atlassian.net). -
Azure DevOps asks for your organization name (for example,
contosofordev.azure.com/contoso). The organization must be connected to Microsoft Entra ID (personal-account organizations are not supported). See Azure DevOps tenant prerequisites below. -
Azure DevOps (token) asks for the same organization name, plus a personal access token. See Which Azure DevOps integration to choose below.
-
Dynamics 365 CRM asks for your Dataverse environment host (for example,
orgname.crm.dynamics.com). -
Salesforce asks for the address of the hosted MCP server you enabled (for example,
platform/sobject-all). It is the tail of the URL Salesforce shows your administrator, and it differs between production, sandbox and My Domain orgs. See Salesforce org setup below. -
Odoo asks for your instance host and database name.
-
AFAS Profit asks for your Profit environment address: your environment number with
restfor production,resttestfor test orrestacceptfor accept (for example,12345.rest.afas.online). airlock can only reach the GetConnectors and UpdateConnectors linked to the app connector, so your AFAS administrator decides what agents can read and change. The overview tools use AFAS's standard GetConnectors (such asProfit_Debtor,Profit_Debtor_InvoicesandProfit_Employees); link the ones you want them to use. -
Metabase asks for the address of your Metabase (for example,
yourcompany.metabaseapp.comormetabase.yourcompany.com). Pasting the MCP server URL from Metabase's admin page works too. It needs Metabase 0.61 or later, reachable over a public HTTPS address, and a Metabase admin must turn on the MCP server under Admin, AI, MCP before anyone can connect. On a self-hosted Metabase, set its Site URL (Admin, Settings, General) to that same public address: Metabase announces its sign-in endpoints from the Site URL, so an internal one makes the connection fail. -
Odoo (native MCP) asks for your Odoo Online database name (for example,
yourcompanyforyourcompany.odoo.com). Pasting the full address works too. -
Dagster+ asks for your deployment URL.
-
RapidAPI asks for the API host of the specific API you want to call.
-
AWS asks for the AWS MCP region:
eu-central-1orus-east-1, the two regions AWS runs its MCP server in. It only decides which endpoint answers; each AWS operation still targets the region it names. -
Canva needs no extra detail either, but you create your own Canva integration first and paste its client ID and secret. See Canva integration setup below.
-
Gong needs no extra detail from you, but a Gong Tech admin must register an MCP integration before anyone can connect. See Gong integration setup below.
airlock prompts for these when you add the integration.
Canva integration setup
airlock connects to Canva's official MCP server through a Canva integration that you create and own. Canva does not let an outside app register itself, so this takes about five minutes once, in the Canva Developer Portal, before anyone in your organization can connect.
First, decide which kind of integration you can create. Canva asks when you create it and does not let you change it afterwards:
Choose Private only if you are on Canva Enterprise and everyone in your airlock organization who will connect Canva belongs to the Canva team that will own the integration. A member whose Canva account sits in a different team cannot connect through a Private integration. Otherwise choose Public, and expect Canva's review before your whole organization can use it.
Whichever you choose, everyone connects with their own Canva account and only reaches the designs that account can see. The integration is created once, by one person; nobody else needs a Developer Portal account.
Then, in Canva:
-
Turn on multi-factor authentication for your Canva account. Canva requires it before you can create an integration.
-
Open the Canva Developer Portal and create a new integration, choosing Private or Public as above.
-
Open Outside Canva and click Start integrating. The Configuration and Redirect URLs sections appear after this step.
-
Under Configuration, in Integration methods, turn on Canva MCP. Turn on Canva REST APIs as well: Canva only shows the Scopes settings once it is on, and the scopes you tick there are the ones Canva lets airlock ask for.
-
Under Configuration > Scopes, tick these, with both read and write where both are listed:
Tick all of them. airlock asks Canva for every scope in this list when you connect, so a missing one can stop the sign-in or make the Canva actions that need it fail with a "Missing scopes" error.
-
Under Redirect URLs, add airlock's callback as URL 1. Copy it exactly as airlock shows it on the Add Canva screen; for airlock's hosted service it is
https://api.air-lock.ai/mcp-proxy/oauth/callback. -
Under Credentials, copy the Client ID, then click Generate secret and copy the secret. Canva shows the secret only once, so keep it somewhere safe until you have pasted it into airlock.
Finally, in airlock: add the Canva integration, paste the client ID and secret, and click Connect. Canva asks you to sign in and approve access. Every member of your organization connects with their own Canva account through the same integration, so each of them only reaches the designs they can see in Canva.
If sign-in fails with a message about the redirect URI, check that the callback in step 6 matches exactly, with no trailing slash. You can generate a new secret in the same place if you lose it. airlock has no screen yet for replacing a saved client secret, so to use a new one, remove the Canva integration in airlock and add it again with the new values.
Gong integration setup
Gong does not let an outside client connect until one of your own Gong Tech admins has registered an MCP integration for it. airlock cannot do this step for you: it registers an OAuth client with Gong, which is a different thing from the integration record Gong requires.
Ask your Gong Tech admin to:
- Register an MCP integration in Gong.
- Set its type to Automatic, so any matching client can connect once a user signs in. (The alternative, Manual, has Gong issue credentials to one named client instead.)
- Add airlock's callback as a Redirect URI, one URL per line:
https://api.air-lock.ai/mcp-proxy/oauth/callback
airlock shows that same callback URL on the Add Gong screen. Until the integration exists, connecting Gong fails at sign-in.
Which Odoo integration to choose
There are two Odoo tiles:
Use Odoo (the first one) when you need approvals to be precise. Its tools separate actions that reach customers, such as posting a message that notifies followers, from internal ones like logging a note, so a policy can require approval for the first and allow the second.
Use Odoo (native MCP) when your database is on Odoo Online and you want Odoo's own tools, including any your admin adds later. Those tools are generic (one Update Records tool covers every model), so a policy can gate a tool but not what it is used for. Tools your Odoo admin makes available after you first connect show up as new tools, which by default are held until airlock's check of their text clears them (see Rules → Connector tool updates).
Which Azure DevOps integration to choose
There are two Azure DevOps tiles, and they differ only in how you sign in:
Use Azure DevOps (the first one) unless you can't. It is the default: Microsoft runs the server, so new capabilities appear without airlock shipping anything.
Use Azure DevOps (token) when Microsoft sign-in is not available to you, most often because your Azure DevOps organization is not backed by Microsoft Entra ID, or because an administrator cannot grant the consent the first option needs. It covers the same ground: work items (including creating and updating them), queries and WIQL, boards, iterations and capacity, repositories, branches, files and commits, pull requests with their comment threads and reviewers, pipelines and builds with their logs, wikis, test plans, and code, wiki, and work-item search.
Two capabilities of Microsoft's server the token option does not cover:
- Listing your other Azure DevOps organizations. The token option is scoped to the single organization you name when you connect it.
- Downloading binary attachments and build artifacts. Work-item attachments and pipeline artifacts are listed, with their download URLs, but the bytes are not returned through the integration.
Microsoft's Enterprise Live Migration tools are also absent. They are a private preview that most organizations cannot enable on either option.
One place the token option is better: ad-hoc WIQL queries. Microsoft gates
wit_query_by_wiql behind an Insiders header on its own server; here
query_work_items is available to everyone.
You can connect both at once; they appear as separate integrations.
Power BI tenant prerequisite
Power BI connects with Microsoft sign-in and needs no setup from you, with one exception that airlock cannot do on your behalf: a Power BI administrator must turn on the tenant setting Users can use the Power BI Model Context Protocol server endpoint (preview) in the Power BI admin portal. Until that setting is on, Microsoft refuses the requests airlock sends to the Power BI MCP server, no matter how correctly everything else is configured.
A few more things worth knowing before you connect:
- Nobody has to hunt for an ID. Microsoft's own Power BI tools all start from a semantic model or report ID, and the server offers no way to look one up, so agents elsewhere ask you to copy it out of a Power BI web address. airlock adds three read-only tools that list your workspaces, the semantic models in a workspace and the reports in a workspace, so an agent can find the right model on its own. They read only what you can already see, and they need no extra permission.
- You see exactly what you see in Power BI. Queries run as you, so workspace permissions and row-level security apply unchanged. Running a query against a semantic model needs at least Build permission on that model.
- Generating a query from a plain-language question uses Copilot. That tool is powered by Copilot in Power BI and needs a Copilot license, and it consumes Copilot capacity. Reading schemas and running DAX queries do not.
- Your tenant may want an administrator to approve airlock once. The three Power BI permissions airlock asks for can normally be approved by each user at first sign-in. If your tenant restricts who may approve applications, which is common in larger companies, an Entra administrator grants that approval once for everyone instead.
Microsoft's Power BI MCP server is in preview, so its tools and their responses can still change.
Google Admin setup
Google Admin connects with Google sign-in, and each person signs in with their own Google account. Google then applies that person's own admin role to every call, so an agent working for a delegated admin who may only manage groups can manage groups and nothing else. Only Google Workspace admins can use it: for anybody else, Google refuses every call.
A few things worth knowing before you connect:
- If your Workspace limits third-party apps, a super admin allows airlock
once. Under Security → Access and data control → API controls → Manage
Third-Party App Access, add airlock as a configured app and set it to
Trusted. Find it by name, or by the
client_idin the address of Google's sign-in page. Until then Google blocks the sign-in for everyone in your Workspace. - Allow every permission when you sign in. Google lets you untick permissions on its consent screen. A call that needs one you left unticked is refused, and the agent is told which part of Google Admin it was. Reconnect and allow them all.
- Passwords stay out of the conversation. Google requires a password to create a user, so airlock generates a random one, sends it to Google with the request and never shows it to the agent or to you; any password field in Google's answer is removed. The user must change it at first sign-in. Set the first password in the Admin console (Users → Reset password), or have the user sign in through your single sign-on. An agent cannot choose or change a password through this integration.
- Admin roles are out of reach. Nothing in this integration can make somebody an admin or change an admin role. Devices, licenses and alerts are not covered yet.
- What needs approval. Unless your house rules say otherwise, reading users, groups, the audit log and reports goes through, and every change waits for an admin: deleting a user, group or organizational unit, suspending or signing out a user and removing a group member included. Change it per category or per tool on the Rules page.
Azure DevOps tenant prerequisites
The prerequisites in this section apply to the Azure DevOps integration only. Azure DevOps (token) authenticates with a personal access token and needs none of them. Create a token in Azure DevOps under User settings → Personal access tokens, scoped to the areas you want the agent to reach, and paste it on the integration's detail page.
Azure DevOps sign-in runs through Microsoft Entra ID, so the Connect flow depends on two applications being present in your company's Entra tenant: airlock's Azure DevOps app and Microsoft's Azure DevOps MCP service. In most tenants both are set up automatically the first time a user consents. A one-time action by an Entra administrator is needed when:
- your tenant restricts user consent to new applications (common in enterprises), or
- Connect fails with an error about a missing service principal (for example, "the app is trying to access a service … that your organization lacks a service principal for").
In either case, an administrator with rights to grant tenant-wide admin consent (for example, a Global Administrator) can approve airlock's Azure DevOps app for the whole tenant by opening this URL and accepting the consent prompt:
https://login.microsoftonline.com/organizations/adminconsent?client_id=c79f31ab-5bae-4405-a728-3e85659584e6If the administrator's account has access to more than one directory (for example, as a guest or delegated administrator), replace organizations in the URL with the tenant ID or a verified domain of the directory that backs your Azure DevOps organization. The organizations form applies consent in the account's home tenant, which may not be the right one.
After accepting, the browser may land on an airlock sign-in page, which the administrator can simply close (no airlock sign-in is needed for the consent). Then retry Connect in airlock.
If Connect still reports a missing service principal, or the administrator never saw a consent prompt, the administrator can create both applications directly with the Azure CLI (signed in to your tenant):
az ad sp create --id c79f31ab-5bae-4405-a728-3e85659584e6 # Airlock's Azure DevOps app
az ad sp create --id 2a72489c-aab2-4b65-b93a-a91edccf33b8 # Microsoft's Azure DevOps MCP serviceCreating the applications does not by itself grant the permission: after running these commands, reopen the admin-consent URL above (or use Entra admin center → Enterprise applications → airlock's Azure DevOps app → Permissions → Grant admin consent) so the tenant-wide grant is recorded, then retry Connect.
Additionally, if your organization uses Conditional Access policies, they can block sign-ins that originate from Microsoft's remote Azure DevOps MCP service. If Connect only fails for users covered by Conditional Access, review those policies with your administrator. Microsoft documents the service's IP addresses that location-based policies may need to allow in the remote MCP server troubleshooting guide.
Salesforce org setup
Salesforce runs its own MCP servers, and airlock connects to them as the person who signs in, so every query and every write stays inside that user's field level security, object permissions and sharing rules. Two things have to happen in Salesforce first, both by an administrator, and neither can be done from airlock: the server has to be switched on, and airlock has to be registered as an app allowed to reach it.
1. Switch on the server you want. In Salesforce Setup, type MCP Servers
into the Quick Find box and open MCP Servers under API Catalog. Toggle
on the server your team needs and give it up to two minutes to become active.
Salesforce ships several, and the SObject family splits by what an agent is
allowed to do:
The choice is a real boundary, not a preference: an agent connected to
platform/sobject-reads has no delete tool to call at all. airlock's own policy
rules apply on top, so the other way around also works, connecting
platform/sobject-all and requiring approval on the writes. Salesforce also
offers Data 360, Tableau Next and Archive Connect servers; those work here too,
using whatever address Salesforce lists for them.
The address depends on your org, and airlock asks for the part after
https://api.salesforce.com/platform/mcp/v1/. You can paste the whole URL
Salesforce shows you and airlock will trim it:
Salesforce recommends the My Domain form for every org, and requires it for
an org that has turned off login through login.salesforce.com or
test.salesforce.com. Your My Domain name is in Setup under My Domain. The
address also decides where users sign in, so getting it right is what sends
them to your own Salesforce login page rather than the shared one.
2. Register airlock as an External Client App. Salesforce does not support
dynamic client registration, so each org creates the app once. From Setup, enter
external client in the Quick Find box, select External Client App Manager,
and click New External Client App:
- Turn on Enable OAuth, and set Callback URL to the address airlock
shows you in the connect dialog:
https://api.air-lock.ai/mcp-proxy/oauth/callback - Add exactly two scopes: Access MCP servers (mcp_api) and Perform
requests at any time (refresh_token). The second one is what lets airlock
refresh access in the background instead of sending everyone back through
sign in. The beta scopes (
api,sfap_api,einstein_gpt_api) do not work with the generally available servers. - Under Security, turn on Issue JSON Web Token (JWT)-based access tokens for
named users. Salesforce's MCP endpoint accepts nothing else, and answers
JWT Token is requiredwhen this is off. - Leave Require Proof Key for Code Exchange (PKCE) Extension on. airlock always sends a PKCE challenge for Salesforce.
- Select Require Secret for Web Server Flow. airlock stores the secret encrypted and sends it on every token exchange.
- Open Settings > Consumer Key and Secret on the finished app to read the two values you paste into airlock.
A new External Client App can take up to 30 minutes to become usable. If the
first connect fails with invalid_client_id, wait and try again before
suspecting the credentials.
3. Decide who may connect. In the app's OAuth Policies you can require a permission set for pre authorization, so only the people you assign it to can connect at all. Either way, each person authenticates as themselves and inherits their own Salesforce permissions.
4. Add it in airlock. Open Connectors, choose Salesforce, enter the server address from step 1, and paste the consumer key and secret. Everyone who uses the server then connects with their own Salesforce account from the server's detail page.
Two limits worth knowing before you start:
- Check that your edition includes hosted MCP servers. They are generally available for Enterprise Edition and above, and Salesforce also includes them in the free Developer Edition, which is a good place to try this before pointing an agent at production data.
- A scratch org cannot create the app in Setup. Sandboxes are ordinary here: enter the sandbox address and create the External Client App in the sandbox itself. Scratch orgs are the exception, because Salesforce does not offer External Client App creation in their Setup at all. Create the app in your Dev Hub, add it to a package and install that package in the scratch org, or test against a sandbox instead.
Teamleader Focus setup
Teamleader Focus has no MCP server of its own, so airlock hosts one over the Teamleader API. Teamleader authorizes it through an integration that your own organization creates on the Teamleader Marketplace. The integration does not need to be published or reviewed by Teamleader: an unpublished integration works for every user of the Teamleader account that created it, so one admin sets it up once and every colleague connects through it.
1. Create the integration. Sign in to the Teamleader Marketplace with your Teamleader account and create a new integration under Build.
2. Register airlock's redirect URI. Add this as an allowed redirect URI on the integration:
https://api.air-lock.ai/mcp-proxy/oauth/callbackThe airlock wizard shows the same address next to the client ID field.
3. Enable the scopes. Teamleader sets an integration's scopes on the integration itself, not when someone signs in, so enable every area the agent should reach. A tool whose scope is missing answers with a permission error, and each tool's description names the scope it needs.
4. Enter the credentials in airlock. Add Teamleader Focus as an integration and paste the integration's client ID and client secret. airlock stores the secret encrypted and never shows it again.
5. Connect. Each member clicks Connect and signs in with their own Teamleader login. The agent then acts as that person, so it only sees the Teamleader modules and records their Teamleader user has access to.
Working with Files
The Google Drive, OneDrive and SharePoint integrations go beyond plain text files.
Google Drive
- Images:
read_file_contentreturns a PNG, JPEG, GIF or WebP image up to 3 MB as the image itself, so the agent can look at it. An SVG comes back as its text. Larger images and other image types are refused with the reason. - PDFs:
read_pdf_contentreads the text of a PDF page by page. For a scanned PDF with no text layer,ocr_pdf_fileuses Google Drive's OCR. It briefly writes a temporary Google Doc to your Drive and deletes it again. - Word and Excel files:
read_file_contentreads a.docxfile as text, keeping its headings, lists and tables, and a.xlsxworkbook as every sheet in CSV, with dates as dates and formulas as their last calculated value. A legacy Word.docor Excel.xlsfile (and RTF,.odtand.ods) is read withconvert_and_read_document, which has Google convert it. Like OCR, it briefly writes a temporary Google copy to your Drive and deletes it again. - Large files:
download_fileprepares any file up to 100 MB (Google Docs, Sheets and Slides are exported first, to a format the agent picks; Google caps an export at 10 MB). The agent then calls airlock'sget_file_downloadfor a link that fetches the bytes, valid for five minutes.
Google Docs
Google Docs are part of the Google Drive integration: one Google sign-in covers Drive, Docs and Sheets, and an existing Drive connection gets the Docs tools without reconnecting.
- Read:
read_documentreturns a document as Markdown (headings, lists, tables, links, images as placeholders and footnotes) for every tab, with pending suggestions marked when asked.get_document_outlinelists its headings and tables with their positions. - Create:
create_documentmakes a new Google Doc, optionally in a folder and with content written as Markdown, which becomes real headings, lists and tables. - Write:
insert_markdownandinsert_textadd content at the start, at the end, or before, after or at the end of a named heading's section.replace_text_in_documentfills template placeholders such as{{client_name}}and reports how many it replaced.delete_sectionanddelete_text_rangeremove content. - Format:
format_text(bold, italic, fonts, colours, links) andset_paragraph_style(heading levels, alignment, spacing, bulleted and numbered lists). - Tables, images and layout:
insert_table,modify_tableandfill_table_cells;insert_imagefrom a PNG, JPEG or GIF in Drive or a public link;insert_page_break; andset_header_footer. - Comments:
list_comments,create_comment,reply_to_commentandresolve_commentwork on Docs, Sheets and Slides. A comment added this way is attached to the whole document, not to a passage of text: Google does not let it be anchored.
Edits that work from positions are tied to the version of the document the agent read, so if someone changes the document in between, the edit is refused rather than landing in the wrong place. Creating suggestions, and accepting or rejecting them, is not possible through Google's API.
Word and Excel in OneDrive and SharePoint
OneDrive tools work in your own OneDrive; SharePoint has the same tools with a site_ prefix (for example download_site_file), working in a site's document libraries.
- Read a Word document:
download_filewithinlineset returns a.docxas Markdown (headings, paragraphs, lists and table rows). - Create a Word document:
upload_file(orupload_site_file) with adocumentbuilds a.docxfrom headings, paragraphs, lists and tables. Creating a document therefore goes through the upload tool, so setupload_fileto Require approval if new files should wait for a person. - Edit a Word document in place:
edit_word_document(oredit_site_word_document) appends content, inserts it below a heading, replaces text, fills{{placeholder}}fields, and sets table cells. All edits in one call land together or not at all, and a file someone changed since it was read is not overwritten. - Excel:
list_worksheets,read_range,read_used_range,update_range,read_table_rowsandadd_table_rows, with SharePoint equivalents such asread_site_rangeandadd_site_table_rows. Writes are saved to the file at once.
The Excel tools need one more Microsoft permission on SharePoint. A SharePoint connection made before Excel support keeps its old permissions until you reconnect: Your connection on its Settings tab says This connection is missing a permission, and Reconnect Account fixes it.
Adding an Integration
- Open Connectors in the Control Room
- Find the integration in the list (the search at the top searches it)
- Follow the prompts to add it, and the integration is ready to configure
- Go to the integration's detail page and connect your account (OAuth flow or API key)
- Configure policies for the tools
- Copy the MCP URL and add it to your AI client
Requesting an integration
The catalog also lists services airlock does not support yet. Their rows carry a Request badge: clicking one registers your interest, the badge changes to Interest sent, and airlock aims to add the integration within one business day. If a search finds nothing, the empty result offers a Request "…" button pre-filled with what you searched for.
Syncing Tools
airlock keeps each integration's tool list aligned with its upstream MCP server, both automatically and on demand.
Automatic detection. On a schedule, airlock checks your connected integrations for upstream tool changes: tools that were added, removed, or changed. When it finds any, it records a notification and applies your organization's Connector tool updates rule, set by an admin under Rules → Connector tool updates:
An organization that chose Require approval before these two answers existed keeps it: the tool is visible to agents, but every call needs approval until an admin marks it reviewed. Picking either answer moves it off that setting.
The policy applies to every integration in the organization.
Where it shows up. Admins see a notification in the bell menu in the top navigation bar, with an unread count. Opening it lists each integration that changed, along with the added / removed / changed counts; clicking an entry opens the Rules page when tools wait for you there (where you also block tools and sync the connector), and the integration's Tools tab otherwise. (The bell is shown to admins only.)
Blocked tools the server no longer publishes. A tool you set to Block stays blocked if the server removes it and later brings it back, because the setting is kept on the connector by name. Tools that sync held on its own (under Hidden until an admin approves it) are dropped automatically once the server stops publishing them.
Manual sync. You can refresh a connector's tools yourself at any time: on the Rules page, open the connector's row and click Sync tools. airlock reads the tools of each of its connections again, one after another, and lists what changed on each; a connection that could not be read is named, and the others are still synced. This is available for MCP-proxy integrations (including every pre-built one) and for airlock's own built-in surfaces. Use it whenever you want to pull the latest upstream tools immediately. Custom OpenAPI integrations have no sync button; their tools are fixed at the spec you deployed.
GitHub and Box are synced manually. Automatic detection isn't available for GitHub or Box integrations, because both services issue single-use connection tokens that airlock can't safely reuse from a background job, so it never syncs them on a schedule. After connecting either one, and whenever its tools change, refresh them yourself with Sync tools on the connector's row on the Rules page.