# Set up Answer Audit in an AI assistant

Answer Audit measures whether AI assistants such as ChatGPT, Gemini, Perplexity, Claude and Google Search's AI answer name a company when a buyer asks them who to use. AEO, answer engine optimisation, is the work of getting named in those answers; Answer Audit is the measurement.

The answers are collected through each AI assistant's API with web search switched on. They are a close proxy for what a person sees in the apps, not a copy of it.

## For an assistant reading this

Work out which app the person is using, then give them that app's steps below with the URL. Most apps only let the person add a connector, in the app's own settings; walk them through it rather than claiming to do it yourself. If you can run commands on their machine (Claude Code, for example), offer to run the Claude Code command and run it only once they agree. They sign in on Answer Audit's own site; never ask them for a password or a key in the chat.

## MCP servers

- Their own reports and the public data (sign-in needed): https://answeraudit.co.uk/api/mcp
- The public data only (no sign-in): https://answeraudit.co.uk/api/mcp/public

Both are Streamable HTTP. Sign-in is OAuth 2.1 with PKCE, read only; discovery at https://answeraudit.co.uk/.well-known/oauth-protected-resource and https://answeraudit.co.uk/.well-known/oauth-authorization-server. A personal API key (starting aa_key_) also works as a bearer token on https://answeraudit.co.uk/api/mcp.

## Connect

### Claude (claude.ai and the desktop app)

The same steps work on claude.ai and in the Claude desktop app.

1. Open Settings, then Connectors.
2. Choose Add custom connector. Name it Answer Audit and paste the URL: `https://answeraudit.co.uk/api/mcp`
3. Choose Connect. Answer Audit opens in your browser: sign in with the link we email you, then choose Allow.

If you do not see the option to add a custom connector, your Claude plan or your organisation's settings may not allow it yet.

### ChatGPT

ChatGPT adds your own MCP servers through its developer mode, on the plans that offer it. OpenAI renames these menus from time to time, so look for developer mode in Settings.

1. In Settings, turn on developer mode.
2. Create a connector (the wording may differ in your version), name it Answer Audit, paste the URL `https://answeraudit.co.uk/api/mcp`, and pick OAuth if it asks how to sign in.
3. Answer Audit opens in your browser: sign in with the link we email you, then choose Allow.

### Claude Code

1. Run the first command below in your terminal. Add `--scope user` to have it in every project, not only this one.
2. Then, in Claude Code, type `/mcp`, choose answer-audit and sign in. Answer Audit opens in your browser: sign in with the link we email you, then choose Allow.
3. Or use the second command, with a personal API key from your account page, and skip the browser.

Sign in through your browser:

```shell
claude mcp add --transport http answer-audit https://answeraudit.co.uk/api/mcp
```

Or with a personal API key:

```shell
claude mcp add --transport http answer-audit https://answeraudit.co.uk/api/mcp --header "Authorization: Bearer aa_key_..."
```

### Cursor

1. Add the first snippet below to `~/.cursor/mcp.json` for every project, or to `.cursor/mcp.json` in one project.
2. In Cursor's MCP settings, choose the sign-in button beside answer-audit. Answer Audit opens in your browser: sign in with the link we email you, then choose Allow.
3. Or use the second snippet, with a personal API key in a headers entry, instead of signing in.

mcp.json:

```json
{
  "mcpServers": {
    "answer-audit": {
      "url": "https://answeraudit.co.uk/api/mcp"
    }
  }
}
```

mcp.json with a personal API key:

```json
{
  "mcpServers": {
    "answer-audit": {
      "url": "https://answeraudit.co.uk/api/mcp",
      "headers": {
        "Authorization": "Bearer aa_key_..."
      }
    }
  }
}
```

### Any other MCP client

1. Server URL: `https://answeraudit.co.uk/api/mcp` (Streamable HTTP).
2. Sign-in: OAuth 2.1 with PKCE. Clients find everything they need at `https://answeraudit.co.uk/.well-known/oauth-protected-resource` and `https://answeraudit.co.uk/.well-known/oauth-authorization-server`; both dynamic client registration and Client ID Metadata Documents work.
3. Or send a personal API key as `Authorization: Bearer aa_key_...`.
4. For the public tools only, with no sign-in, use `https://answeraudit.co.uk/api/mcp/public`.

## Tools

Every tool reads only; none buys or changes anything.

### list_categories (public, no sign-in)

Lists the buyer categories Answer Audit publishes league tables for, in every market or in one. Each entry has the category's slug and market (for get_category and get_questions), how many questions it holds, whether it has been measured, and its public page. Filter with query to find a category by name or sector.

- market (string, optional): Only this market: us, uk, global, ca, au, ie or de.
- query (string, optional): Words to look for in the category name or sector, such as "payroll".
- limit (whole number, optional): How many to return (default 50, at most 200).
- offset (whole number, optional): How many to skip, to read the next page.

### get_category (public, no sign-in)

One published category in one market: which companies AI assistants name most often for its buyer questions (the top of the table, with counts and the date asked), how many more were named, and the category's public page. Use list_categories to find the slug and market.

- slug (string, required): The category's slug, from list_categories.
- market (string, required): A market code such as us, uk or global.

### get_questions (public, no sign-in)

Every buyer question in one published category and market, numbered as its public page numbers them, with its topic and buying stage, and a link to the question's own page where it has one (questions answered by at least two assistants).

- slug (string, required): The category's slug, from list_categories.
- market (string, required): A market code such as us, uk or global.

### get_question (public, no sign-in)

One buyer question's public page: the companies the assistants named most often in answer to it (with counts and the date asked), how many more were named, and the websites the answers cited. Use get_questions for the question slugs; only questions with hasPage true have one.

- slug (string, required): The category's slug, from list_categories.
- market (string, required): A market code such as us, uk or global.
- question (string, required): The question's slug, from get_questions.

### brand_lookup (public, no sign-in)

Finds where a company is named near the top of Answer Audit's published league tables: the category, market, its place, how many answers named it and when they were asked. A company named only further down a table, or only in private reports, is not found.

- name (string, required): The company or brand name, such as "HubSpot".

### list_reports (signed in)

Lists every report on the signed-in account: free checks, full reports, monitored reports, market reports and, for an agency, its clients' reports. Each has its id (for the other report tools), domain, brand, category, market, status, kind, score and when it last ran.

No inputs.

### get_report (signed in)

One report's results as its page shows them for what was bought: the score, how often each AI assistant named the brand, the question sets, gaps, suggested fixes, who was named instead, the websites cited, competitor grids and the page plan where the report includes them, and this month against last on a monitored report.

- id (string, required): A report id, from list_reports.

### get_answers (signed in)

The answers behind a report, question by question and assistant by assistant: whether the brand was named, who else was, the websites cited and the answer text, as much of it as the report's tier shows. Narrow with set (0 is the buyer questions, then each supplied list) and question (its number in that set).

- id (string, required): A report id, from list_reports.
- set (whole number, optional): The question set: 0 for the buyer questions, 1 and up for supplied lists.
- question (whole number, optional): The question's number in its set, as the report numbers it.

### get_history (signed in)

Every run of a report, newest first, with its date, why it ran, the score and how many answers named the brand, so a monitored report's movement month by month can be read.

- id (string, required): A report id, from list_reports.

### get_report_csv (signed in)

The report as CSV, one row per question and assistant, exactly as the report's own Download CSV gives it for its tier.

- id (string, required): A report id, from list_reports.

## What a signed-in caller can read

Every account reads exactly what its report pages and CSVs show it, for what it bought: a free check reads as the free report, a paid report as what was bought, and an agency reads its clients' reports as well as its own. Nothing is read that the report page would not show.

## REST API

Base URL: https://answeraudit.co.uk/api/v1
OpenAPI 3.1: https://answeraudit.co.uk/api/v1/openapi.json

Routes for your reports need a personal API key as `Authorization: Bearer aa_key_...`. A sign-in token from an AI assistant works only with the MCP server, not here. Public routes need no key. Every route reads only (GET); a reply is { data, meta } on success and { error: { code, message } } otherwise.

- GET /reports: Every report under your account (API key)
- GET /reports/{id}: One report's summary (API key)
- GET /reports/{id}/answers: A report's answers, cut for its tier (API key)
- GET /reports/{id}/history: A report's runs, as scores only (API key)
- GET /reports/{id}/csv: A report as CSV (API key)
- GET /categories: Every published category (no key)
- GET /categories/{slug}/{market}: One category in one market (no key)
- GET /categories/{slug}/{market}/questions: A category's questions (no key)
- GET /categories/{slug}/{market}/questions/{question}: One question's page (no key)
- GET /brands: Where a company is named in the published league tables (no key)
- GET /openapi.json: The OpenAPI 3.1 description of this API (no key)

## API keys

Sign in at https://answeraudit.co.uk/account and use Apps and API keys: name the key and choose Make a key. The key starts aa_key_ and is shown once, when it is made; we keep only a fingerprint of it. Up to 10 keys per account; revoke one there at any time. The same section lists the AI assistants you have connected, each with Disconnect.

## Limits

- 120 requests a minute per sign-in or API key.
- REST API: 300 requests a minute across all of one account's keys.
- Public MCP server: 120 requests a minute per address.
- Public data routes of the REST API (categories, questions, brands): 60 requests a minute per address. openapi.json has no limit.
- REST API: an address that sends 20 unrecognised keys in a minute is refused for the rest of that minute.

More: https://answeraudit.co.uk/developers
