Skip to content
Docs · MCP server

Ask your AI assistant about your AI visibility

The CiteBrief MCP server lets Claude, Cursor, VS Code and any Model Context Protocol client read your workspace: which buyer questions name your brand, on which engines, who gets named instead, the pages engines cite, and the fixes and outreach that close the gap. Every tool reads; none runs a check or changes anything.

Endpoint
https://getcitebrief.com/api/mcp
Transport
Streamable HTTP, stateless, JSON responses
Auth
Authorization: Bearer cb_…
Plans
Starter, Pro and Business
Rate limit
120 tool calls a minute per key
Access
Read-only by default; a key made with “Can make changes” also gets the write tools. One workspace per key

1. Create a key

  1. In CiteBrief, open Settings, then API and MCP. Owners and admins can create keys.
  2. Name the key after where it will live, for example “Claude Code on my laptop”, and choose Create key.
  3. Copy the key straight away: it is shown once. Store it in an environment variable such as CITEBRIEF_API_KEY rather than in a file you commit.

› A workspace can hold 10 active keys. Revoke one in the same place; anything using it stops at once.

2. Connect a client

Claude Code

Terminal
export CITEBRIEF_API_KEY=cb_your_key
claude mcp add --transport http citebrief https://getcitebrief.com/api/mcp \
  --header "Authorization: Bearer $CITEBRIEF_API_KEY"

Check it with claude mcp list, then ask in any session. Add --scope user to use it in every project.

Cursor

.cursor/mcp.json (or ~/.cursor/mcp.json for every project)
{
  "mcpServers": {
    "citebrief": {
      "url": "https://getcitebrief.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:CITEBRIEF_API_KEY}"
      }
    }
  }
}

VS Code

.vscode/mcp.json
{
  "servers": {
    "citebrief": {
      "type": "http",
      "url": "https://getcitebrief.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:CITEBRIEF_API_KEY}"
      }
    }
  }
}

Claude Desktop and other clients that only run local servers

Bridge to the remote server with mcp-remote, which runs locally and forwards to CiteBrief with your header. Add this to the client’s config (Claude Desktop: Settings, Developer, Edit config).

claude_desktop_config.json
{
  "mcpServers": {
    "citebrief": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://getcitebrief.com/api/mcp",
        "--header",
        "Authorization:${CITEBRIEF_AUTH}"
      ],
      "env": {
        "CITEBRIEF_AUTH": "Bearer cb_your_key"
      }
    }
  }
}

Any HTTP client

Send one JSON-RPC message per POST. Clients normally call initialize and tools/list first; a direct call works too.

curl
curl -s https://getcitebrief.com/api/mcp \
  -H "Authorization: Bearer $CITEBRIEF_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_visibility","arguments":{"brand":"acme.com"}}}'

3. Ask

Ask in plain words. The assistant picks the tools; start broad and narrow down.

  • Which of my brands lost visibility since last week, and on which engine?
  • For acme.com, which buyer questions does ChatGPT answer without naming us, and who does it name instead?
  • Which sources do engines cite when they recommend our competitors? Draft an outreach plan from get_outreach.
  • List the open fixes for acme.com by priority and tell me which ones I can ship today.
  • Show me exactly what Gemini answered to “best invoicing tool for agencies” in the latest check.

› CiteBrief tracks whether AI engines (ChatGPT, Gemini, Perplexity, Google AI Overviews and others) name a brand for the questions its buyers ask. Read tools change nothing; keys made with “Can make changes” also get write tools (pause_prompts, save_competitor, pause_weekly_checks, create_article, update_fix) that never run a check, draft a page or touch a site. Start with list_brands, then get_visibility, get_competitors and get_citations; get_outreach and list_fixes say what to do next. Visibility is the share of scored buyer questions where the brand was named, from one answer per question per engine per weekly check.

Tools

8 read tools for every key, and 5 write tools for keys made with “Can make changes”. Write tools never run a check, draft a page or change your site, and each call is in the audit log. Brands can be named by name, domain or id; list_brands shows them.

list_brandsList brands

Every brand tracked in this workspace with its domain, question count, open fixes and latest visibility (share of scored buyer questions where AI named the brand).

› No arguments.

get_visibilityGet visibility

How often AI engines name the brand for its scored buyer questions: latest check overall and per engine, plus confidence over the last four checks (average, range, whether the latest change beats the usual swing, and how steady each question × engine pair is).

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.
enginestringOptional engine id to focus on: chatgpt, gemini, grok or aio (Google AI Overviews).

list_questionsList questions

The buyer questions tracked for a brand, each with its type, whether it is scored, which engines named the brand in the latest check, the best position and the change since the check before.

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.

get_competitorsGet competitors

Share of brand mentions in AI answers for the brand and its rivals, how each share moved over the last four checks, the scored questions each rival wins where the brand is missing, and the source cited most when AI names them.

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.

get_citationsGet citations

The pages AI engines cited in the latest check, grouped by domain and typed (your site, competitor, review site, forum, video, wiki, social, editorial), with gap sources cited only when the brand was left out, per-engine source differences and the web searches engines ran before answering.

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.
enginestringOptional engine id to focus on: chatgpt, gemini, grok or aio (Google AI Overviews).

get_outreachGet outreach targets

Pages AI cites when it names a rival instead of the brand (last four checks), ranked, each with the kind of source, the play (get reviewed, ask to be added to a list, join the thread…) and the user's progress. No link buying: every play is a real listing, review or reply.

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.

list_fixesList fixes

Fixes from the brand's site audit that help AI read and cite the site (structured data, llms.txt, FAQ, meta and content), with priority, how each is applied and its status.

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.
statusopen | live | rechecking | done | dismissed | allDefaults to open.

get_answersGet answers

What each engine actually answered to one buyer question in the latest check: whether it named the brand, its position, the other brands named, the URLs cited and the answer text.

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.
question requiredstringThe question's id, or words from its text.

pause_promptsPause or resume prompts · write key

Pause prompts so weekly checks skip them (their history stays), or resume them. Name prompts by id or exact text from list_questions.

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.
prompts requiredarrayPrompt ids or exact texts.
paused requiredbooleantrue pauses, false resumes.

save_competitorAdd or update a competitor · write key

Track a competitor for the brand, or set its other names (aliases count as naming it from the next check).

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.
name requiredstringThe competitor's name.
aliasesarrayOptional other names AI uses for it. Replaces the current ones.

pause_weekly_checksPause or resume weekly checks · write key

Pause the brand's weekly checks (history stays, checks by hand still work) or resume them.

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.
paused requiredboolean

create_articleStart an article · write key

Start a New page opportunity on a topic: it appears on Opportunities and Articles, ready to draft in CiteBrief. Does not write the draft (drafts are metered and reviewed in the app).

ArgumentTypeDescription
brand requiredstringThe brand's name, domain or id. Call list_brands to see them.
topic requiredstringWhat the page should cover, 8 to 160 characters.

update_fixMark a fix done, skip it or reopen it · write key

Change a site fix's status: done (you made the change; a re-check follows when the plan has them), dismiss (skip it) or reopen. Fix ids come from list_fixes.

ArgumentTypeDescription
fix_id requiredstring
action requireddone | dismiss | reopen

Limits and errors

ResponseWhenWhat to do
401No key, a malformed key, or a revoked oneSend the header exactly as shown; create a new key if it was revoked
403The workspace is on the Free planThe MCP server comes with every paid plan
429More than 120 calls a minute on one key, or 30 bad-key attempts a minute from one addressWait for the Retry-After seconds
isError: trueA tool could not answer: an unknown brand, question or engine, or a missing argumentThe message says what exists; the assistant usually corrects itself
-32603Something failed on our sideTry again in a moment

› Numbers match the app: visibility is the share of scored buyer questions where the brand was named, from one answer per question per engine per check. Confidence comes from the last four checks.

Security

  • CiteBrief stores only a SHA-256 hash of each key. A lost key cannot be shown again; revoke it and create another.
  • A key reads one workspace and nothing else. It cannot run checks, change questions, apply fixes or see billing.
  • Creating and revoking keys is recorded in the workspace audit log, with who did it.
  • Keep keys in environment variables or your client’s secret store, never in a repository.

Protocol

  • Streamable HTTP without sessions: POST one JSON-RPC 2.0 message, get one JSON response. Batches are not accepted. Notifications get 202 Accepted.
  • Protocol versions: 2025-06-18, 2025-03-26, 2024-11-05. The server answers initialize with your version when it supports it, otherwise with 2025-06-18.
  • Capabilities: tools only (no resources, prompts or server-sent events). GET returns 405.
  • CORS is open so browser-based inspectors work; the key is the only credential, never a cookie.

Get a key

Paid plans start at $39 a month, with unlimited team members.

Open API and MCP settings

See what AI says about you.

Enter your website. It takes about a minute, and there’s no card.

Paid plans from $39 a month.