# Authentication and access

Source: https://www.airframe.ai/docs/authentication

How sign-in works, what your assistant can access, and how to revoke it.



## OAuth sign-in [#oauth-sign-in]

Airframe uses OAuth 2.1, following the MCP authorization specification:

1. Your client connects to `https://mcp.airframe.ai/mcp` and receives a `401` that points to Airframe's authorization server at `auth.airframe.ai`.
2. The client registers itself (dynamic client registration) and opens Airframe's sign-in page.
3. You sign in with your Airframe account and approve access.
4. The client receives a token for the Airframe MCP server only, and sends it with each request.

Sign in with the email you use on airframe.ai. If you've never signed in on the website, [do that once first](https://www.airframe.ai/sign-up); that first sign-in sets up your account and team.

## What your assistant can access [#what-your-assistant-can-access]

Your assistant acts as you, through Airframe's seven [read-only tools](/docs/tools). It can read the catalog, the practitioner network, and the market reports your team is entitled to. It can't change anything in Airframe, and usage counts toward your team's [quotas](/docs/limits).

Airframe only receives what your assistant sends in a tool call. It never sees your conversation history, memory, or files.

## Revoke access [#revoke-access]

* **In your client:** disconnect or remove the Airframe connector. In Claude, open **Customize → Connectors → Airframe → Disconnect**. In Claude Code, run `claude mcp logout airframe`.
* **For your organization:** Claude Team and Enterprise Owners can remove the connector in **Organization settings → Connectors**.

## API keys [#api-keys]

For headless agents, scripts, and CI where a browser sign-in isn't possible, you can authenticate with a personal API key instead. Create one in Airframe under **Context → AI clients** and send it in the `X-API-Key` header:

```json
{
  "mcpServers": {
    "airframe": {
      "type": "http",
      "url": "https://mcp.airframe.ai/mcp",
      "headers": { "X-API-Key": "YOUR_API_KEY" }
    }
  }
}
```

Treat API keys like passwords: keep them out of source control and shared files. Market report tools require OAuth sign-in and aren't available with an API key.

## Corporate networks [#corporate-networks]

If your network restricts outbound traffic, allow `mcp.airframe.ai` and `auth.airframe.ai` over HTTPS.


---

# Changelog

Source: https://www.airframe.ai/docs/changelog

Changes to the Airframe MCP server and plugin.



## October 22, 2026 [#october-22-2026]

* New documentation site at airframe.ai/docs, with setup for 18 clients.
* Fixed: production OAuth tokens now carry the MCP server's audience, so clients that sign in with OAuth connect reliably.
* Fixed: accounts that had never switched teams were refused by every metered tool. Usage now goes to your earliest active team when no default team is set.
* The no-active-team message now says how to fix it instead of reporting an outage.
* Claude plugin 0.3.0, published at [github.com/airframeai/claude-plugin](https://github.com/airframeai/claude-plugin).


---

# Claude plugin

Source: https://www.airframe.ai/docs/claude-plugin

The Airframe plugin bundles the connector with a company-research skill for Claude, Cowork, and Claude Code.



The connector alone is enough for Claude to use Airframe. The plugin adds the **company-research** skill, which gives Claude:

* a routing playbook: which tool to call for each kind of question, and in what order
* a consistent format for vendor briefs and battlecards: positioning summary, pricing, strengths and weaknesses, top alternatives, and market context
* a rule against answering vendor questions from memory when Airframe has the data

The plugin installs no code on your machine and runs no local commands or hooks. Its connector points at the same server URL, so if you already have the connector, you won't see a duplicate set of tools.

## Install [#install]

**Claude and Cowork:** open **Customize → Plugins**, search for **Airframe**, and install it.

**Claude Code** (v2.1.275 or later):

```bash
/plugin install airframe --marketplace airframeai/claude-plugin
```

On older versions, add the marketplace first:

```bash
/plugin marketplace add airframeai/claude-plugin
/plugin install airframe@airframe
```

Then run `/mcp`, choose **airframe**, and sign in.

## Roll out to an organization [#roll-out-to-an-organization]

* **Claude Code:** add `airframeai/claude-plugin` to `extraKnownMarketplaces` in your managed settings.
* **Cowork and Claude Desktop:** add the repository to your organization's allowed plugin marketplaces. Admins can mark the plugin to install automatically for every seat.

## Source [#source]

The plugin is open source under the MIT license: [github.com/airframeai/claude-plugin](https://github.com/airframeai/claude-plugin).


---

# Connect your client

Source: https://www.airframe.ai/docs/connect

Add the Airframe MCP server to Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code, and other MCP clients.



Every client connects to the same server:

```text title="Server URL"
https://mcp.airframe.ai/mcp
```

* **Transport:** Streamable HTTP
* **Authentication:** OAuth 2.1 with dynamic client registration. Your client discovers the sign-in page on its own; you don't need a client ID or secret.
* **Server name:** use `airframe` wherever a client asks for one.

Adding the server to a client doesn't sign you in. Each section below ends with how to start sign-in. You need an Airframe account; if you've never signed in at [airframe.ai](https://www.airframe.ai/sign-up), do that once first.

**Chat apps:** [Claude](#claude) · [ChatGPT](#chatgpt) · [Microsoft Copilot Studio](#microsoft-copilot-studio) · [Mistral Le Chat](#mistral-le-chat) · [Perplexity](#perplexity)

**Coding agents:** [Claude Code](#claude-code) · [Codex](#codex) · [Gemini CLI](#gemini-cli) · [Antigravity CLI](#antigravity-cli) · [opencode](#opencode) · [Goose](#goose) · [JetBrains Junie](#jetbrains-junie)

**Editors:** [Cursor](#cursor) · [VS Code and GitHub Copilot](#vs-code-and-github-copilot) · [Devin Desktop (Windsurf)](#devin-desktop-windsurf) · [Zed](#zed) · [Cline](#cline) · [JetBrains AI Assistant](#jetbrains-ai-assistant)

**Everything else:** [Other clients](#other-clients)

## Chat apps [#chat-apps]

### Claude [#claude]

Works in claude.ai, Claude Desktop, Cowork, and the Claude mobile apps. Once connected, the connector is available everywhere you use Claude.

**Pro and Max**

1. Open **Customize → Connectors** and search the directory for **Airframe**, then select **Connect**.
2. If Airframe isn't listed for you, select **Add → Add custom connector**, enter the name `airframe` and the server URL, then select **Add**.
3. Sign in with your Airframe account and approve access.

**Team and Enterprise**

An organization Owner adds the connector once in **Organization settings → Connectors**. Each member then opens **Customize → Connectors**, finds Airframe, and selects **Connect** to sign in with their own Airframe account.

To use it in a chat, select **+ → Connectors** and make sure Airframe is on. For a consistent brief and battlecard format, also install the [Claude plugin](/docs/claude-plugin).

### ChatGPT [#chatgpt]

1. Go to [chatgpt.com/plugins](https://chatgpt.com/plugins) and select **+ → Add custom MCP server**.
2. Name it `Airframe`, add a short description, and enter the server URL under **Connection**.
3. Choose OAuth for authentication, confirm the prompt, and select **Create as a plugin**.
4. Install the plugin, then in a new chat type `@` and choose Airframe. ChatGPT opens Airframe's sign-in page the first time.

Availability depends on your ChatGPT plan and workspace settings. In Enterprise workspaces, an admin controls custom MCP servers under **Workspace settings → Permissions & roles**.

### Microsoft Copilot Studio [#microsoft-copilot-studio]

1. Open your agent and go to **Tools → Add a tool → New tool → Model Context Protocol**.
2. Enter the server name `airframe`, a description, and the server URL.
3. Choose **OAuth 2.0**, then **Dynamic discovery**, and select **Create**.
4. Select **Next → Create a new connection**, sign in with your Airframe account, and select **Add to agent**.

Your Power Platform data policies apply.

### Mistral Le Chat [#mistral-le-chat]

An admin adds custom connectors. On Free, Pro, and Student plans, the account owner is the admin.

1. Open **Connectors → + Add Connector** and choose the **Custom MCP Connector** tab.
2. Enter the name `airframe` (no spaces) and the server URL, then select **Connect**.
3. Le Chat detects OAuth and walks you through Airframe's sign-in.

### Perplexity [#perplexity]

1. Open **Customize → Connectors** (or **Plugins** in the sidebar) and choose **Add custom → Connector → Add MCP connector → Remote**.
2. Enter the name `airframe` and the server URL, set **Auth** to **OAuth** and **Transport** to **Streamable HTTP**, and accept the acknowledgement.
3. Select the Airframe connector card to sign in.

In Enterprise organizations, an admin adds custom connectors under **Enterprise settings → Permissions → Connectors**, and may need to turn on **Allow members to add custom connectors**.

## Coding agents [#coding-agents]

### Claude Code [#claude-code]

The [Claude plugin](/docs/claude-plugin) installs the connector and the company-research skill together:

```bash
/plugin install airframe --marketplace airframeai/claude-plugin
```

To add only the connector:

```bash
claude mcp add --transport http airframe https://mcp.airframe.ai/mcp
```

Add `--scope user` to make it available in every project, or `--scope project` to write it to the repository's `.mcp.json`:

```json title=".mcp.json"
{
  "mcpServers": {
    "airframe": { "type": "http", "url": "https://mcp.airframe.ai/mcp" }
  }
}
```

**Sign in:** run `/mcp` in Claude Code, choose **airframe**, and finish in the browser. From a shell, `claude mcp login airframe` does the same.

<Callout type="warn">
  Keep `"type": "http"` in `.mcp.json`. An entry with a `url` and no `type` is treated as a local server and skipped. Headless runs (`claude -p`) can't complete OAuth, so sign in from an interactive session first.
</Callout>

### Codex [#codex]

Works in the Codex CLI, the Codex IDE extension, and the ChatGPT desktop app, which share one configuration.

```bash
codex mcp add airframe --url https://mcp.airframe.ai/mcp
codex mcp login airframe
```

Or add it to `~/.codex/config.toml`:

```toml title="~/.codex/config.toml"
[mcp_servers.airframe]
url = "https://mcp.airframe.ai/mcp"
```

**Sign in:** `codex mcp login airframe` opens the browser. In the desktop app or IDE extension, go to **Settings → MCP servers → Add server**, choose **Streamable HTTP**, enter the URL, restart, and select **Authenticate**.

### Gemini CLI [#gemini-cli]

```bash
gemini mcp add --transport http airframe https://mcp.airframe.ai/mcp
```

Or add it to `~/.gemini/settings.json`. Use `httpUrl`; `url` means the older SSE transport:

```json title="~/.gemini/settings.json"
{
  "mcpServers": {
    "airframe": { "httpUrl": "https://mcp.airframe.ai/mcp" }
  }
}
```

**Sign in:** run `/mcp auth airframe`. Gemini CLI needs a local browser for the OAuth callback.

### Antigravity CLI [#antigravity-cli]

Add it to `~/.gemini/config/mcp_config.json`, or `.agents/mcp_config.json` in a project. Antigravity uses `serverUrl` and rejects `url` and `httpUrl`:

```json title="~/.gemini/config/mcp_config.json"
{
  "mcpServers": {
    "airframe": { "serverUrl": "https://mcp.airframe.ai/mcp" }
  }
}
```

**Sign in:** open Agent settings → **Customizations**, select **Authenticate** next to airframe, sign in in the browser, and paste the code back.

### opencode [#opencode]

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "airframe": {
      "type": "remote",
      "url": "https://mcp.airframe.ai/mcp",
      "enabled": true
    }
  }
}
```

**Sign in:** run `opencode mcp auth airframe`. `opencode mcp list` shows the connection status.

### Goose [#goose]

<InstallButton href="goose://extension?url=https%3A%2F%2Fmcp.airframe.ai%2Fmcp&type=streamable_http&id=airframe&name=Airframe&description=Software%20company%2C%20pricing%2C%20and%20market%20research">
  Add to Goose
</InstallButton>

Or run `goose configure` → **Add Extension → Remote Extension (Streamable HTTP)**, or add it to `~/.config/goose/config.yaml`:

```yaml title="~/.config/goose/config.yaml"
extensions:
  airframe:
    name: Airframe
    type: streamable_http
    uri: https://mcp.airframe.ai/mcp
    enabled: true
    timeout: 300
```

**Sign in:** Goose opens the browser for OAuth when it first connects.

### JetBrains Junie [#jetbrains-junie]

Add it to `.junie/mcp/mcp.json` in a project, or `~/.junie/mcp/mcp.json`:

```json title=".junie/mcp/mcp.json"
{
  "mcpServers": {
    "airframe": { "url": "https://mcp.airframe.ai/mcp" }
  }
}
```

**Sign in:** the server shows **Authorization required**. Open `/mcp`, select airframe, choose **Authorize**, and sign in in the browser.

## Editors [#editors]

### Cursor [#cursor]

<InstallButton href="cursor://anysphere.cursor-deeplink/mcp/install?name=airframe&config=eyJ1cmwiOiJodHRwczovL21jcC5haXJmcmFtZS5haS9tY3AifQ%3D%3D">
  Add to Cursor
</InstallButton>

Or add it to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (one project):

```json title="~/.cursor/mcp.json"
{
  "mcpServers": {
    "airframe": { "url": "https://mcp.airframe.ai/mcp" }
  }
}
```

**Sign in:** Cursor shows the server as needing login. Select it to open Airframe's sign-in page. In the Cursor CLI, run `agent mcp login airframe`.

### VS Code and GitHub Copilot [#vs-code-and-github-copilot]

<InstallButton href="https://vscode.dev/redirect/mcp/install?name=airframe&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.airframe.ai%2Fmcp%22%7D">
  Add to VS Code
</InstallButton>

Requires VS Code 1.99 or later with Copilot agent mode. Or add it to `.vscode/mcp.json`, or your user configuration with **MCP: Open User Configuration**:

```json title=".vscode/mcp.json"
{
  "servers": {
    "airframe": { "type": "http", "url": "https://mcp.airframe.ai/mcp" }
  }
}
```

**Sign in:** VS Code opens the browser the first time it starts the server. Manage the sign-in from the **Accounts** menu.

On Copilot Business and Enterprise, an organization admin must turn on the **MCP servers in Copilot** policy first. It's off by default.

### Devin Desktop (Windsurf) [#devin-desktop-windsurf]

Windsurf is now Devin Desktop. Open the Cascade panel's **…** menu, choose **Open MCP config file**, and add:

```json title="~/.config/devin/mcp_config.json"
{
  "mcpServers": {
    "airframe": { "serverUrl": "https://mcp.airframe.ai/mcp" }
  }
}
```

On Windows the file is `%APPDATA%\devin\mcp_config.json`. Enterprise users may need to turn MCP on, and team admins can restrict servers to an allowlist.

### Zed [#zed]

Open **Settings → AI → MCP Servers → Add Server → Add Remote Server**, or add it to `settings.json`:

```json title="settings.json"
{
  "context_servers": {
    "airframe": { "url": "https://mcp.airframe.ai/mcp" }
  }
}
```

**Sign in:** Zed prompts you to authenticate when it connects.

### Cline [#cline]

Open **MCP Servers → Remote Servers**, choose Streamable HTTP, enter the server URL, and select **Add Server**. Or add it to `cline_mcp_settings.json`:

```json title="cline_mcp_settings.json"
{
  "mcpServers": {
    "airframe": { "type": "streamableHttp", "url": "https://mcp.airframe.ai/mcp" }
  }
}
```

Keep `"type": "streamableHttp"`; without it, Cline falls back to the older SSE transport. If sign-in doesn't start, use the [mcp-remote bridge](#other-clients).

### JetBrains AI Assistant [#jetbrains-ai-assistant]

Open **Settings → Tools → AI Assistant → Model Context Protocol (MCP)** and add a server with this configuration:

```json
{
  "mcpServers": {
    "airframe": { "url": "https://mcp.airframe.ai/mcp" }
  }
}
```

If sign-in doesn't start, use the [mcp-remote bridge](#other-clients).

## Other clients [#other-clients]

Any client that supports remote MCP servers with OAuth can use the server URL directly.

For clients that only run local (stdio) servers, including the Claude Desktop config file, bridge with [`mcp-remote`](https://github.com/geelen/mcp-remote). It needs Node.js 18 or later and opens the browser to sign in on first connect:

```json
{
  "mcpServers": {
    "airframe": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.airframe.ai/mcp"]
    }
  }
}
```

`mcp-remote` stores tokens in `~/.mcp-auth`. Delete that folder to sign in again.

For headless agents and CI, where a browser sign-in isn't possible, see [API keys](/docs/authentication#api-keys).

Steps can differ slightly between client versions. If something here doesn't match what you see, [let us know](mailto:support@airframe.ai).


---

# Example prompts

Source: https://www.airframe.ai/docs/examples

Prompts that show what Airframe can do, and the tools each one uses.



You don't need to name tools. Ask the way you normally would; your assistant picks the tools. These examples show what each kind of question uses.

## Vendor brief [#vendor-brief]

```text
Brief me on Decagon: what it does, who it sells to, what it costs, and its top three competitors.
```

Uses `search_products` to resolve the name, then `get_product_details` for the profile, including alternatives. With the [Claude plugin](/docs/claude-plugin), the answer follows a standard brief format.

## Head-to-head comparison [#head-to-head-comparison]

```text
Compare Zendesk and Intercom on pricing, AI features, integrations, and compliance. Which fits a 500-person B2B SaaS company better?
```

Resolves both products, then makes one `get_product_details` call with both slugs and only the sections it needs.

## Pricing check [#pricing-check]

```text
What does Gong cost? Show the published tiers and Airframe's estimate of a typical contract.
```

Uses `get_product_details` with the `pricing` and `fipc` sections. The contract estimate is Airframe's model, not a quote.

## Market map [#market-map]

```text
Map the customer-service AI agent market for a board slide: the main vendors, how they're positioned, and who's gaining share.
```

Uses `ask_airframe` for the synthesis. If your team has the market report, it also reads `vendors`, `switches`, and `winloss` from [`read_market_report_section`](/docs/tools#read_market_report_section).

## Find a practitioner [#find-a-practitioner]

```text
Find people who have rolled out Salesforce Agentforce at an enterprise and could advise on a buying decision.
```

Uses `find_experts` with the product filter. Profiles are anonymized; contact Airframe for an introduction.

## Build or buy [#build-or-buy]

```text
We're a 200-person fintech. Should we build or buy an LLM evaluation harness? What are the leading options?
```

Uses `ask_airframe`, which grounds the recommendation in the catalog and cites its sources.

## Competitive copy [#competitive-copy]

```text
Write three homepage headlines that differentiate us from our two closest competitors. We make an AI SDR tool.
```

Grounds the claims about competitors in current Airframe data before writing, rather than in what the model remembers.


---

# Airframe for AI assistants

Source: https://www.airframe.ai/docs

Ground your AI assistant's answers about software companies, products, and markets in Airframe's live catalog.



Airframe connects Claude, ChatGPT, Cursor, and other AI assistants to a continuously refreshed catalog of 7,300+ software products, a network of 30,000+ practitioners, and the market reports your team has access to. Answers about pricing, funding, features, and competitors come from current data instead of a model's training set, which goes stale within months.

Airframe works through the [Model Context Protocol](https://modelcontextprotocol.io) (MCP). Add one server URL to your client, sign in with your Airframe account, and ask.

```text title="Server URL"
https://mcp.airframe.ai/mcp
```

Streamable HTTP transport, OAuth sign-in. Every tool is read-only.

<Cards>
  <Card title="Quickstart" href="/docs/quickstart" description="Connect Claude and run your first query in two minutes." />

  <Card title="Connect your client" href="/docs/connect" description="Setup for Claude, ChatGPT, Claude Code, Codex, Cursor, VS Code, and 12 more." />

  <Card title="Tools reference" href="/docs/tools" description="The seven tools, their parameters, and what each returns." />

  <Card title="Example prompts" href="/docs/examples" description="Vendor briefs, comparisons, market maps, and practitioner searches." />
</Cards>

## What you can ask [#what-you-can-ask]

* "Tell me about Decagon: what it does, what it costs, and who it competes with."
* "Compare Zendesk and Intercom on pricing, features, and compliance."
* "Map the customer-service AI agent market for a board slide."
* "Find practitioners who have deployed Gong at enterprise scale."
* "Write a sales email positioning us against our top competitor."

Your assistant decides when to call Airframe. The tools are described so that any answer stating facts about a specific software company is grounded in Airframe first, whether the task is research, a comparison, marketing copy, or a deck.

## What's included [#whats-included]

|                          |                                                                                                                                   |
| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| **Product catalog**      | Vendor firmographics and funding, positioning, features, integrations, pricing tiers, compliance, reviews, and known alternatives |
| **Practitioner network** | Anonymized profiles of people with hands-on experience of a product or domain                                                     |
| **Ask Airframe**         | Free-form questions answered from the catalog, with sources                                                                       |
| **Market reports**       | Vendors, adoption, switching, win/loss, and more, for the markets your team is entitled to                                        |

## For agents [#for-agents]

Every page is also available as markdown: add `.md` to its URL (for example [/docs/tools.md](/docs/tools.md)). [/docs/llms-full.txt](/docs/llms-full.txt) has every page in one file.


---

# Usage and limits

Source: https://www.airframe.ai/docs/limits

Rate limits, team quotas, and how to check your usage.



## Rate limits [#rate-limits]

Limits apply per person, across all of your clients:

| Limit                                                       | Per minute | Per day |
| ----------------------------------------------------------- | ---------- | ------- |
| All tools combined                                          | 30         | 1,000   |
| `ask_airframe` (also counts toward all tools)               | 10         | 100     |
| `read_market_report_section` (also counts toward all tools) | 10         | 40      |

Each credential is also limited to 300 requests per minute before identity checks, which bounds a runaway client. `get_my_usage` doesn't count toward these limits.

Market reports are for answering specific questions, so section reads have their own cap.

When you hit a limit, the tool returns a message saying how many seconds to wait before retrying.

## Team quotas [#team-quotas]

Your team's plan can set monthly, daily, or per-minute quotas for each tool. When a quota is used up, the tool returns a message naming the tool, the limit, and its window. Contact your Airframe admin or [support@airframe.ai](mailto:support@airframe.ai) to raise it.

## Check your usage [#check-your-usage]

Ask your assistant "How much Airframe have I used this month?" It calls [`get_my_usage`](/docs/tools#get_my_usage), which shows your team's successful calls this month and the remaining capacity on each quota.


---

# Quickstart

Source: https://www.airframe.ai/docs/quickstart

Connect Airframe to Claude and run your first query.



<Steps>
  <Step>
    ### Create an Airframe account [#create-an-airframe-account]

    [Sign up at airframe.ai](https://www.airframe.ai/sign-up) and sign in once on the website. That first sign-in finishes setting up your account and team. Already have an account? Skip this step.
  </Step>

  <Step>
    ### Add the connector [#add-the-connector]

    In Claude, open **Customize → Connectors**, search for **Airframe**, and select **Connect**. If it isn't listed for you yet, choose **Add → Add custom connector**, name it `airframe`, and enter:

    ```text
    https://mcp.airframe.ai/mcp
    ```

    On Claude Team and Enterprise plans, an organization Owner adds the connector first in **Organization settings → Connectors**. Members then connect it themselves.

    Using a different client? See [Connect your client](/docs/connect).
  </Step>

  <Step>
    ### Sign in [#sign-in]

    Claude opens Airframe's sign-in page. Sign in with the same email you use on airframe.ai and approve access.
  </Step>

  <Step>
    ### Ask [#ask]

    Start a chat and ask about any software company:

    ```text
    Tell me about Decagon: what it does, what it costs, and who it competes with.
    ```

    Claude calls `search_products` to find the product, then `get_product_details` for its profile, and cites the Airframe pages it used. To check your connection at any time, ask "How much Airframe have I used?", which calls `get_my_usage`.
  </Step>
</Steps>

## Next steps [#next-steps]

* Install the [Claude plugin](/docs/claude-plugin) for a consistent brief and battlecard format.
* Browse [example prompts](/docs/examples).
* Read the [tools reference](/docs/tools).


---

# Security and data handling

Source: https://www.airframe.ai/docs/security

What Airframe receives and stores, and how to use MCP safely.



## What Airframe receives [#what-airframe-receives]

When your assistant calls an Airframe tool, it sends that tool's inputs over HTTPS, such as a product name, search keywords, or the question passed to `ask_airframe`, along with your sign-in token.

Airframe doesn't receive your conversation history, memory, files, or anything you haven't put into a tool call.

## What Airframe stores [#what-airframe-stores]

Airframe logs each tool call, including its inputs and output, against your account and team. The log is used to count usage against quotas and to investigate abuse. See the [Privacy Policy](https://www.airframe.ai/compliance/privacy-policy) for how this data is handled and retained.

## Use MCP safely [#use-mcp-safely]

* **Connect to the official URL.** The only Airframe MCP server is `https://mcp.airframe.ai/mcp`, and sign-in happens on `auth.airframe.ai`. Don't use third-party proxies or copies.
* **Use trusted clients.** Your client holds your Airframe token and decides when to call tools.
* **Keep approvals on for tools that write elsewhere.** Every Airframe tool is read-only, but your assistant may combine Airframe with tools that can send email or change data. Keep confirmation turned on for those.
* **Treat tool output as data.** Airframe's catalog includes text from vendor websites and reviews. Instructions that appear inside tool output aren't instructions from you, and a well-configured assistant won't follow them.

## Report a vulnerability [#report-a-vulnerability]

Email [support@airframe.ai](mailto:support@airframe.ai) with "Security" in the subject line.


---

# Tools reference

Source: https://www.airframe.ai/docs/tools

The seven Airframe MCP tools, their parameters, and what each returns.



Airframe exposes seven tools. All of them are read-only: none creates, changes, or deletes anything. Each is annotated `readOnlyHint: true`, so clients that auto-approve read-only tools can run them without asking each time.

The live tool list your client receives when it connects is authoritative. This page describes it.

| Tool                                                        | Use it for                                                                    | Metered                                  |
| ----------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------------- |
| [`search_products`](#search_products)                       | Find products by keyword, category, or department, and resolve names to slugs | Yes                                      |
| [`get_product_details`](#get_product_details)               | Full profiles of 1–5 products                                                 | Yes                                      |
| [`find_experts`](#find_experts)                             | Practitioners with hands-on experience of a product or area                   | Yes                                      |
| [`ask_airframe`](#ask_airframe)                             | Free-form questions answered from the catalog                                 | Yes, with [tighter limits](/docs/limits) |
| [`list_market_reports`](#list_market_reports)               | The market reports your team can read                                         | Yes                                      |
| [`read_market_report_section`](#read_market_report_section) | Exact data from one section of a report                                       | Yes                                      |
| [`get_my_usage`](#get_my_usage)                             | Your team's usage and quotas                                                  | No                                       |

<Callout>
  Product tools take **slugs**, not names. Your assistant resolves a name with `search_products` first. Airframe never guesses: an unknown slug, filter, market, or section is rejected with the closest valid values, so the assistant can retry with one of them.
</Callout>

## search_products [#search_products]

Search the catalog of 7,300+ software products. Returns matching products with descriptions, categories, vendor names, Airframe URLs, and the slug the other tools take.

| Parameter    | Type    | Required | Description                                                                |
| ------------ | ------- | -------- | -------------------------------------------------------------------------- |
| `query`      | string  | Yes      | Descriptive words, such as a product name or "AI SDR tool"                 |
| `category`   | string  | No       | An Airframe category name, such as `Customer Service CRM (CSM)`            |
| `department` | string  | No       | The buying function, such as `Marketing`, `Finance`, or `Customer Support` |
| `limit`      | integer | No       | Results to return. Default 10, maximum 25                                  |

Filters are exact. An unrecognized filter value is rejected with the closest valid values. An empty result means no product matched.

**Example prompt:** "Is there software for SOC 2 automation?"

## get_product_details [#get_product_details]

Airframe's current profile of 1–5 products: vendor firmographics and funding, positioning and ideal customer, features, integrations, pricing, compliance, list price and median estimated annual contract value, review pros and cons, expert-network size, and known alternatives.

| Parameter       | Type      | Required | Description                                                                                                                                                                                 |
| --------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `product_slugs` | string\[] | Yes      | 1–5 catalog slugs, such as `["zendesk-com-service", "decagon-ai"]`. Pass every product of a comparison in one call                                                                          |
| `sections`      | string\[] | No       | Limit each profile to what the task needs. Any of `overview`, `vendor`, `classification`, `positioning`, `fipc`, `pricing`, `reviews`, `experts`, `alternatives`. Omit for the full profile |

`fipc` covers features, integrations, pricing, and compliance, including the vendor's published pricing tiers. The median estimated contract value under `pricing` is Airframe's modeled estimate, not a quoted price.

**Example prompt:** "What does Zendesk cost, and how does that compare with Intercom?"

## find_experts [#find_experts]

Search Airframe's network of 30,000+ software practitioners by expertise or product experience. Returns anonymized profiles with expertise areas and product experience. Contact Airframe for introductions.

| Parameter | Type    | Required | Description                                                                         |
| --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `query`   | string  | Yes      | The expertise you're looking for                                                    |
| `product` | string  | No       | Restrict to people with hands-on experience of one catalog product, by name or slug |
| `limit`   | integer | No       | Results to return. Default 10, maximum 15                                           |

**Example prompt:** "Find someone who has deployed Gong at enterprise scale."

## ask_airframe [#ask_airframe]

Ask any question about software products, markets, vendors, or technology decisions. Answers are grounded in Airframe's data and cite their sources. Use it for multi-part questions, build-versus-buy analysis, recommendations, market overviews, and writing tasks that depend on company facts.

| Parameter  | Type   | Required | Description                     |
| ---------- | ------ | -------- | ------------------------------- |
| `question` | string | Yes      | The question, in plain language |

Very broad questions get a clarifying prompt. Questions outside Airframe's scope fall back to general knowledge.

**Example prompt:** "Should a 200-person fintech build or buy an eval harness?"

## list_market_reports [#list_market_reports]

List the market reports your team is entitled to and the sections each one has. Returns each market's slug (the only value `read_market_report_section` accepts), its label, and what each section answers. Requires [OAuth sign-in](/docs/authentication).

No parameters.

**Example prompt:** "What market research do we have?"

## read_market_report_section [#read_market_report_section]

Read exact data from one section of an entitled market report, in bounded slices.

| Parameter     | Type      | Required | Description                                                                                                                                                                                                                                                                                        |
| ------------- | --------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `market_slug` | string    | Yes      | A slug from `list_market_reports`                                                                                                                                                                                                                                                                  |
| `section`     | string    | Yes      | One of `meta`, `vendors`, `overview`, `firmographic`, `adoption`, `customer-stack`, `company-stacks`, `industry-kpi`, `switches`, `messaging`, `winloss`, `visibility`, `integration`, `partnership`, `verticals`, `recommendation`, `bottomlines`, `rfp`, `best-practices`, `recent-acquisitions` |
| `path`        | string    | No       | A dot path into the section, such as `groups.0.vendors`                                                                                                                                                                                                                                            |
| `keys`        | string\[] | No       | Fields to keep from an object                                                                                                                                                                                                                                                                      |
| `offset`      | integer   | No       | Where to start in a list. Default 0                                                                                                                                                                                                                                                                |
| `limit`       | integer   | No       | Rows to return. Default 25, maximum 200                                                                                                                                                                                                                                                            |

List data returns a `total`; page on while `total` exceeds `offset + limit`. When a slice is too large, the response is an outline of its shape instead of data, so the assistant can narrow it with `path` or `keys`. Unknown markets, sections, paths, and keys are errors, never empty data.

**Example prompt:** "Who are the main vendors in the AI voice agent market, and what are buyers switching from?"

## get_my_usage [#get_my_usage]

Show your team's successful calls this month and any per-minute, per-day, or per-month quotas with their remaining capacity. This tool isn't metered, so it still works after you reach a quota.

No parameters.

**Example prompt:** "How much Airframe have I used this month?"


---

# Troubleshooting

Source: https://www.airframe.ai/docs/troubleshooting

Fixes for sign-in loops, missing tools, and other common problems.



<Accordions>
  <Accordion title="Every tool says my account registration isn't complete">
    Your Airframe account hasn't been set up yet. This happens when you create an account from your AI client's sign-in page without ever signing in on the website. Sign in once at [airframe.ai](https://www.airframe.ai/sign-in) with the same email, wait a few minutes, then try again.
  </Accordion>

  <Accordion title="A tool says the account isn't on an active team">
    Sign in once at [airframe.ai](https://www.airframe.ai/sign-in) to finish setting up your account, then retry. No usage is charged for the failed call.
  </Accordion>

  <Accordion title="Sign-in keeps repeating or fails">
    Disconnect the connector in your client, connect it again, and sign in with the email you use on airframe.ai. Make sure your browser allows pop-ups from your client. For `mcp-remote`, delete `~/.mcp-auth` and reconnect.
  </Accordion>

  <Accordion title="The tools don't appear">
    Restart your client after adding the server. In Claude, check that Airframe is turned on for the chat under **+ → Connectors**. In Claude Code, run `/mcp` to see the server's status; a JSON entry without `"type": "http"` is skipped. In Gemini CLI, use `httpUrl`, not `url`.
  </Accordion>

  <Accordion title="My assistant answers without using Airframe">
    Ask it to "use Airframe", or install the [Claude plugin](/docs/claude-plugin), whose skill makes Claude check Airframe before answering vendor questions.
  </Accordion>

  <Accordion title="A product, market, or filter isn't found">
    Airframe rejects values it doesn't recognize and lists the closest matches, and your assistant usually retries with one of them. If a product is genuinely missing, [tell us](mailto:support@airframe.ai).
  </Accordion>

  <Accordion title="list_market_reports returns nothing">
    Your team doesn't have a market report yet, or you connected with an API key, which can't read reports. Sign in with OAuth, or contact us to add a report.
  </Accordion>

  <Accordion title="I see a rate limit or quota message">
    See [Usage and limits](/docs/limits). Rate limits reset within a minute or a day; team quotas reset with their window.
  </Accordion>

  <Accordion title="My client only supports local servers">
    Use the [`mcp-remote` bridge](/docs/connect#other-clients).
  </Accordion>
</Accordions>

Still stuck? Email [support@airframe.ai](mailto:support@airframe.ai) with your client, its version, and the error message.
