Peak Answer is an MCP server as well as an app. Ask your assistant how your visibility moved this week, which questions name a competitor, or to track a new one: without opening the dashboard.
Most products that advertise an AI integration mean a chatbot bolted onto their own interface. This is the other direction. The connector exposes the product’s own tools to whichever assistant you already work in, so the question “are we losing any buying questions this week?” gets answered in the place you were already typing, by an assistant that can then go and do something about it.
It is a remote server over streamable HTTP. There is nothing to install and nothing to run locally; a client that speaks MCP connects to a URL and authenticates.
36 tools. 33 of them read your own measured data, and 3 work on any public URL, which means they are useful before you have any history at all.
my_brand | Which brand this connection is working on. |
list_brands | Every brand on your account, and which one is active. |
switch_brand | Move the connection to another of your brands. |
my_competitors | Who is being tracked as a competitor, with your notes. |
my_visibility | Your visibility index and how it has moved. |
my_questions | Every question being tracked, and which ones you lose. |
my_question_history | One question over time, run by run. |
my_actions | The work the product is recommending, in order. |
my_search_console | Traditional search performance alongside the AI measurement. |
gsc_query | Your Search Console performance data as Google returns it: any dimensions, filters and search type. |
gsc_properties | The Search Console properties on your connected Google account. |
gsc_sitemaps | The sitemaps submitted to a property, with Google's warnings, errors and indexed counts. |
gsc_inspect_url | Google's index status for one URL. |
ga4_report | Your Google Analytics data as Google returns it: any measures by any breakdowns, with filters, totals and period comparisons. |
ga4_realtime | Who is on your site right now. |
ga4_metadata | Every dimension and metric your Google Analytics property supports, custom ones included. |
ga4_properties | The Google Analytics properties on your connected Google account. |
ga4_pivot_report | Cross-tab reports, such as channel by device. |
ga4_funnel_report | How many people get through each step, and where they drop. |
ga4_check_compatibility | Whether a set of dimensions and metrics can be reported together. |
ga4_property_config | How your property is set up: streams, key events, custom definitions, audiences and links. |
audit_site | Answer readiness, crawler access, robots, sitemap, schema, headings, readability. |
geo_audit | Ten real buying questions asked of a real model. |
generate | llms.txt, FAQ schema, a content brief, a prompt set or semantic keywords. |
13 more. A connector that can only read turns the assistant into a reporting surface, which is half a product: you find out a question is being lost and then have to go somewhere else to act on it. These close that loop.
track_question | Start measuring a question. |
track_questions | Start measuring a whole list at once. |
rename_question | Reword a tracked question. |
move_question | Change which questions come first. |
untrack_question | Stop measuring one. |
mark_action_done | Close an action. |
skip_action | Decline one, with the reason recorded. |
add_competitor | Add a brand to the competitive set. |
remove_competitor | Take one out. |
set_competitor_note | Add or clear a note on a competitor. |
set_autopilot | Pause or resume autopilot. |
save_context | Tell the product something about your business that it should use. |
approve_article | Approve a draft for publishing. |
Every tool carries annotations, so a client knows which are read-only, which are idempotent, and which change something outside the system. approve_article is the only one marked destructive, because approving a draft for publishing is a decision that should prompt a confirmation.
The useful shape is a question that would take four clicks in a dashboard:
Peak Answer MCP puts Peak Answer inside Claude, ChatGPT, Cursor or any MCP client. Ask your assistant how your AI visibility is moving, which questions you are losing, or to audit a page, without leaving the chat. It is included on every plan, and connecting takes one click on Approve.
Peak Answer MCP is included on every plan, and the free trial includes it too.
Sign up for Peak AnswerSettings, then Connectors, then Add custom connector. Name it Peak Answer, paste the URL below and press Connect. Peak Answer opens, you click Approve, and you are done.
Server URL
https://peakanswer.com/api/mcp
Add a custom connector from ChatGPT’s settings with the URL below, and choose OAuth if it asks how to sign in. Peak Answer opens, you click Approve.
Server URL
https://peakanswer.com/api/mcp
Add it in your terminal, then run /mcp inside Claude Code, pick peakanswer and approve in the browser.
terminal
claude mcp add --transport http peakanswer https://peakanswer.com/api/mcp
Add this to the MCP config file your client uses. Clients that support MCP sign-in open Peak Answer for you to approve.
mcp.json
{
"mcpServers": {
"peakanswer": {
"type": "http",
"url": "https://peakanswer.com/api/mcp"
}
}
}If yours cannot sign in, create a key in Settings, API key and MCP and send it as a header instead.
mcp.json with a key
{
"mcpServers": {
"peakanswer": {
"type": "http",
"url": "https://peakanswer.com/api/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}| Tool | What it does |
|---|---|
my_brand | The brand this connection is for: its domain, name, plan, how many questions are tracked, and which integrations are connected. Call this first whenever the user says 'my site', 'my website' or 'my domain', rather than asking them which site they mean. |
my_competitors | The competitors tracked for the active brand: name, domain and any note, in the order answers are checked for them. Use this before add_competitor, remove_competitor or set_competitor_note, or when the user asks who is being tracked. |
my_visibility | The signed-in brand's current visibility index, per-engine presence, and how it has moved. Use this when the user asks how they are doing, whether anything changed, or how they compare to their category. |
my_questions | Every buying question tracked for the signed-in brand, whether the brand is named, who wins it instead, and how volatile the answer is. Use this when the user asks what they are losing or which questions are worth attacking. |
my_question_history | The 90-day per-engine history for a single tracked question: presence rate, volatility, who gets named instead, and the daily trend. For the answer text and the sources each engine cited, call my_answers. Use this when the user asks about one specific question by name. |
my_actions | Everything Peak Answer currently recommends for the signed-in brand, with the reason, the expected effect and which engine it targets. Use this when the user asks what to do next. |
my_search_console | Google queries where the signed-in brand ranks between positions 5 and 15, from their connected Search Console. Use this when the user asks about quick SEO wins or what is close to page one. For any other Search Console question, such as top queries, pages, countries, devices, filters or a daily trend, use gsc_query. |
my_answers | The actual answers recorded for a tracked question, with the sources each engine cited, consulted or linked. Use this when the user asks what an engine said, which pages it read, or why a competitor is being named. |
my_cited_sources | Every domain the engines have been seen citing for this brand's questions, how often, and whether the brand's own pages are among them. Use this for 'which sites do the models trust here' and for link and PR targeting. |
my_links | The ranked list of places worth being on: sites the engines already quote, directories, and review sites, with how reachable each is and what it takes. Mirrors the Links page. Use this for link building, PR targeting and directory submissions. |
my_landscape | Who wins this brand's questions, how often, and where the brand sits against them. Mirrors the Competitive Landscape page. Use this for 'who are my competitors in AI answers' and 'who beats me and where'. |
my_proof | Questions that started or stopped naming this brand, with the before and after. Mirrors the Proof page. Use this for 'is it working', 'what have we won' and 'what did we lose'. |
my_weekly_report | The weekly report as the customer receives it: what moved, what was published, and what to do next. Mirrors the Weekly Report page. |
my_traffic | Clicks and impressions over time from Search Console, as the Traffic page shows them. Use this alongside my_search_console, which reports the queries. |
gsc_query | The Search Console performance report, as Google returns it: clicks, impressions, ctr and average position, broken down by any dimensions (date, hour, query, page, country, device, searchAppearance), for any search type (web, image, video, news, googleNews, discover), with filters. Use this for any analysis of the customer's own Search Console data: top queries, top pages, countries, devices, daily trends, a single page's queries, a query's pages, branded versus non-branded, regex filters. Up to 5,000 rows per call; page through with startRow. ctr is a fraction, so 0.05 is 5%. Search Console data runs about 2 days behind. |
gsc_properties | Every Search Console property on the connected Google account with the permission level, and which one this brand is connected with. Use this to find the exact property string to pass as site to the other gsc_ tools. |
gsc_sitemaps | The sitemaps submitted to a Search Console property, as Google reports them: path, type, when each was last submitted and downloaded, warnings, errors and how many URLs of each type were submitted and indexed. Use this when the user asks whether Google has read their sitemap or why pages are not indexed. |
gsc_inspect_url | Google's own record of one URL from the URL Inspection API: whether it is indexed, the verdict and coverage state, last crawl time, the canonical Google chose against the one declared, robots and fetch state, mobile usability and rich results. Use this when the user asks why a specific page is not showing up. The URL must belong to the property. Google allows about 2,000 inspections a day per property. |
my_ai_visits | Visits that reached the site from an AI assistant, measured in the customer's own Google Analytics (GA4) and PostHog, as the Traffic page shows them. Use this when the user asks about GA4, Google Analytics, PostHog, analytics or visits from ChatGPT, Claude, Perplexity and the like. Pass source to ask for one by name. This covers visits from AI assistants only; for any other Google Analytics question (sessions, users, channels, pages, countries, events, revenue, realtime, setup) use the ga4_ tools such as ga4_report. |
ga4_properties | Every Google Analytics 4 property on the connected Google account with its account name, and which one this brand is connected with. Use this to find the exact property id to pass as property to the other ga4_ tools. |
ga4_metadata | Every dimension and metric a property supports, with Google's API name, the label shown in Google Analytics, a description and the category, including the property's own custom dimensions and metrics (customEvent:, customUser:, customItem:). Use this before ga4_report when unsure of a name, or when the user asks what they can measure. Pass search to narrow the list. |
ga4_report | The Google Analytics report, as Google returns it: any metrics broken down by any dimensions, for any date range, with filters, sorting and totals. Use this for any analysis of the customer's own Analytics data: sessions and users over time, traffic by channel, source or medium, top pages and landing pages, countries and cities, devices and browsers, new versus returning, events and key events, ecommerce revenue and transactions, campaign and UTM performance, engagement, custom dimensions. Add a second date range (dateRanges) to compare periods. Up to 10,000 rows per call; page through with offset. Rates such as engagementRate and bounceRate are fractions, so 0.5 is 50%. averageSessionDuration is in seconds. Analytics data can run a day or more behind, and Google may sample or withhold small groups, which the answer says. |
ga4_realtime | Who is on the site right now, from the Google Analytics realtime report: the last 30 minutes by default (up to 60 on Analytics 360), by realtime dimensions such as country, city, deviceCategory, unifiedScreenName, eventName, platform, minutesAgo, and sources such as firstUserSource or audienceName. Metrics are activeUsers, eventCount, keyEvents and screenPageViews. Use this when the user asks who is on the site now, whether a launch, post or campaign is sending visitors, or whether tracking is firing. |
ga4_pivot_report | A Google Analytics pivot report: one breakdown across the rows and another across the columns, such as channel by device, or country by week. Pass request as Google's runPivotReport body without the property: dateRanges, dimensions, metrics, pivots (each with fieldNames, limit, orderBys), and optional dimensionFilter, metricFilter, keepEmptyRows. Returns Google's response as JSON. Use ga4_report for ordinary tables; use this only when a cross-tab is the question. |
ga4_funnel_report | A Google Analytics funnel report: how many users get through each step you define, and where they drop. Pass request as Google's runFunnelReport body without the property: dateRanges, funnel (steps, each with a name and a filterExpression on eventName or another field, optional isDirectlyFollowedBy and withinDurationFromPriorStep, and isOpenFunnel), and optionally funnelBreakdown, funnelNextAction, funnelVisualizationType, segments. This is Google's alpha API, so Google can change it. Returns Google's response as JSON. |
ga4_check_compatibility | Asks Google whether a set of dimensions and metrics can be reported together, before running ga4_report. Pass dimensions and metrics; Google says which are compatible and which are not, and why. Use this when ga4_report fails with an incompatible combination. |
ga4_property_config | How a Google Analytics property is set up, read from Google's Admin API: the property itself (time zone, currency, industry, creation date, service level), data streams (web and app, with measurement ids and default URLs), key events (what counts as a conversion), custom dimensions and custom metrics, audiences, channel groups, calculated metrics, data retention, and links to Google Ads, Firebase and BigQuery. Use this when the user asks how Analytics is configured, what is tracked as a conversion, whether a custom dimension exists, or why a number looks off. Pass what to choose one; omit it for the property, streams and key events together. Kinds: property, dataStreams, keyEvents, customDimensions, customMetrics, googleAdsLinks, firebaseLinks, dataRetention, audiences, channelGroups, calculatedMetrics, bigQueryLinks. |
my_suggested_questions | Up to 20 relevant questions this brand is not tracking yet, with search demand labels. Use track_question to start tracking one. |
my_question_google_results | Google results for one tracked question: the first 10 sites, your position in up to 100 results, whether Google showed an AI answer, active competitors on page one, and the check date. Pass the exact question text. |
my_question_google_page | The page on your website that appears on Google for one tracked question's search phrase, its position and check date. Returns no page when there is no current match. Pass the exact tracked question text. |
export_answers | Every recorded answer as CSV rows, one row per source per answer: date, question, engine, whether the brand was named, the other brands named, source URL, source domain and source type (cited, linked, consulted, or organic for Google results, with position). Filter by one question (its id or exact text, or leave empty for all), one engine, and a date range (from and to, YYYY-MM-DD, UTC). No cap on answers. Returns the first rows inline and a link to download the full CSV. Use this when the user wants the raw data for a sheet or their own analysis; for reading a few answers use my_answers. |
track_question | Start tracking a buying question for the connected brand, so it is asked of every engine on the next weekly sweep. Use this when the user says they want to track, add, watch or measure a question. Re-adding one that was removed brings back its earlier runs. Refused when the plan is full, with the limit named. |
track_questions | Start tracking a list of buying questions for the active brand in one call, up to 50. Each goes through the same checks as track_question: already tracked ones are skipped, and the plan's limit stops the list where it is full. The reply says what happened to each. Use this when the user gives or approves a list. |
rename_question | Change the wording of a tracked question. It keeps its history and is measured with the new wording from the next sweep. Refused when the new wording is already tracked. Give the current question as the user says it; an exact match or a unique fragment both work. |
move_question | Move a tracked question one place up or down the priority list, which is the order the content engine works down. Call my_questions to see the current order. |
untrack_question | Stop tracking a question for the connected brand. Its measured history is kept and it can be added back later. Give the question text as the user says it; an exact match or a unique fragment both work, and an ambiguous one is refused with the candidates listed. |
mark_action_done | Mark one of the brand's recommended actions finished, which is also what makes the next one appear. Call my_actions first to see the open ones, then pass the action's title. Use this when the user says they have done something Peak Answer recommended. |
skip_action | Turn down one of the brand's recommended actions. It stops being offered and the next one takes its place. Use this when the user says an action is not relevant or they do not want to do it. |
add_competitor | Track a competitor for the connected brand, so every answer is checked for whether it is named. Pass the domain when the user knows it, which is what makes the match reliable for a common company name. |
remove_competitor | Stop tracking a competitor. Always pass the reason when the user gives one: it is read by the discovery pass so the same name does not come back next month, which is the difference between removing it once and removing it every month. |
set_competitor_note | Save or clear a note on a tracked competitor, such as why they are or are not a real rival. The discovery pass reads it. Pass an empty note to clear it. Call my_competitors to see who is tracked. |
set_autopilot | Turn autopilot on or off for the active brand. Off pauses the work Peak Answer does on its own, such as content. Questions keep being measured either way. Use this only when the user asks to pause or resume. |
save_context | Save something about the business that the crawl cannot see: who the buyer really is, what the product does not do, a positioning decision, why a competitor is not one. The content engine reads it when it writes. Use this whenever the user explains something about their business in conversation that the product would otherwise be guessing at. |
approve_article | Approve a drafted article, which PUBLISHES IT to the brand's connected website immediately. This is the only tool here that changes something outside Peak Answer, so before calling it, tell the user which brand and domain it will publish to and get their go-ahead, and never call it to 'check' anything. Pass the article's title. The confirmation names the brand and domain it published to. |
audit_site | The full technical and answer-readiness audit for one URL, in a single call: answer readiness, AI crawler access, robots.txt, sitemap, structured data, headings, meta description, readability and the entities the page states. Use this for any 'audit my site', 'check my site' or 'why am I not being recommended' question. Returns in seconds. Add extra_checks for the slower ones. What each check looks at, and what the report means: https://peakanswer.com/tools/claude-mcp. |
generate | Produce something ready to ship: llms_txt and faq_schema for a site, content_brief, prompt_set and semantic_keywords for a topic. One call per thing. What each one produces, and the shape it comes back in: https://peakanswer.com/tools/claude-mcp. |
geo_audit | Check whether ChatGPT names your brand on 5 real buying questions, who it names instead, and which sources it cites. Free, no account needed. Slow: it starts a background run and you call it again with the same domain to collect the result. Use audit_site for anything that needs an answer now. How the questions are chosen and how to read the result: https://peakanswer.com/product/mcp-api. |
There is also reference documentation covering the transport, the auth flow and every tool’s parameters, which is the page to send a developer to.
Published in the official MCP registry as io.github.peakanswer/peak-answer, and listed on Glama with ownership verified. Both mean the same thing in practice: the server is discoverable by clients that browse registries rather than being configured by hand.
MCP is the Model Context Protocol, an open standard for connecting tools to AI assistants. A client that speaks it (Claude, ChatGPT, Cursor and a growing list of others) can call a server's tools during a conversation.
No, the Peak Answer MCP connector and the API are included on every plan, including the trial.
The Peak Answer MCP server can both read and change things, with nine read tools and eight write tools. The write tools cover tracking questions, managing competitors and actions, saving context and approving articles, which is most of what the app itself does.
approve_article is the one Peak Answer MCP tool marked destructive and open-world in its annotations, so a well-behaved client will confirm before calling it. Approval means a draft is cleared for publishing, which is a decision worth a confirmation step.
The Peak Answer MCP server authenticates with OAuth 2.0, with dynamic client registration and client ID metadata documents both supported, or with an API key from Settings. Each connection starts on one brand, and an account with several can list them and switch between them.
The MCP server and the API both come with the trial. Connect it on day one and ask it what it found.
Start 7 day trial