Skip to main content
Ask your agent this, with <product-name> replaced by your product’s name:
The agent reads your Query bank, which holds the searches Gemini, Claude, and ChatGPT run while answering your prompts, grouped into keywords. It tells you which keywords to work on and how the pages you already targeted are doing. These tools only read. They never change your Query bank.

Before you ask

  • Connect the server and sign in. See Connect the MCP server.
  • If you belong to more than one organization, put your organization slug in the same message. See Find your organization slug.
  • Use the product name as it appears in TPC.
  • Your product needs a Query bank. If the keyword list comes back empty, TPC has not prepared one for your product yet.
  • To follow results, mark keywords as targeted on the Query bank page in TPC first. See Find the searches behind your prompts.
  • Name a date range if you want one, as a start and end date, no more than 180 days back and not in the future. Without one, the agent uses the default range, which starts at the keyword’s own target date for one keyword, or at the earliest target date for results.

What the agent does

The agent chooses its own calls. A typical run follows these steps.
1

Find the product

list_organizations finds your organization slug if you did not give it. list_products returns the product’s slug and ID.
2

List the keywords

list_query_bank_keywords returns your keywords, the ones that cover the most prompts first. Each row has the keyword’s ID and label, how many prompts and searches it covers, and its target, which is the page you are writing for it and since when, or null when you have not targeted it. The result also lists the domains checked for indexing, taken from the latest full Google check that checked at least one search, and totals.
3

Look at one keyword

get_query_bank_keyword takes a keyword ID from the list. Its date range defaults to the keyword’s own target date through today, at most 180 days back. It returns the keyword’s prompts, its target, its rank history, and a recommendation. The rank history is grouped by engine (Google, then Bing, then Brave), newest first within each engine, up to 20 checks per engine. For a targeted keyword it also returns pageStatus, which says how the target page is doing with search engines and AI engines, and searchPerformance, which says how Google showed the target page, from Search Console. pageStatus is null when the keyword is not targeted, and searchPerformance is left out.
4

Check whether targeting paid off

get_query_bank_results compares share of voice before and after targeting, for targeted prompts against other prompts. Targeted prompts are those with at least two Gemini searches in one targeted keyword. Other prompts have at least one Gemini search and none of them belong to a targeted keyword. Every remaining prompt is in neither group, such as one with a targeted search but fewer than two in each targeted keyword, or one with no Gemini searches. The comparison period is the date range, by default from the earliest target date (at most 180 days back) to today, against an equally long period just before it. It also lists each targeted keyword with its page status and Google rank before and now. The result is { comparison }, and comparison is null when no keyword is targeted yet, or when a custom range ends before the first target date.
Rankings and share of voice usually take a few weeks to move after a page goes live. Ask the agent to judge targeting over weeks, not days.

Recommendations

When a keyword has a recommendation, it has one of three kinds.

Page statuses

A targeted keyword’s page has one of these statuses.

Reading the numbers

  • For each engine on a keyword’s page status, indexed is true, false, or null. indexInconclusive is true when the lookup ran but couldn’t confirm: it returned a full page of results, or the engine reported more results than it returned, and none was this exact page, because other pages under the same address can fill it. Then indexed is null, and the engine counts as unchecked, so it never makes the page not_indexed. indexed of null with indexInconclusive of false means there is no lookup result yet, or the engine has no page lookup (indexSupported is false).
  • indexSource says where an engine’s indexed came from: search_console when Google’s URL Inspection in your connected Search Console property answered, search when a search for the page answered, or null when it hasn’t been checked. When Search Console can’t answer for a page, the check falls back to a search. For Google, indexReason is Google’s reason when Search Console says the page is not indexed, and null otherwise. lastCrawledAt is when Google last crawled the page, and googleCanonical is the address Google treats as the main version of the page, given only when it differs from the target page. Both are null unless Search Console answered. Brave gives search once checked; Bing has no page lookup, so its indexSource is always null.
  • searchConsole on a keyword’s page status is connected, needs_reconnect, or not_connected for the target page’s domain, with the connected property. With needs_reconnect, Google checks use a search until you reconnect Search Console in TPC. It is not_connected when the keyword has no page.
  • searchPerformance is how Google showed the target page over the date range, read from Search Console. Its state is one of the following.
    • ok has impressions, clicks, position (the average position, weighted by impressions), and searches, the page’s top 10 searches by impressions. Each search has keywordSearch set to true when it is one of this keyword’s searches, and keywordSearchCount is how many of this keyword’s searches showed the page. searches is empty when Google doesn’t list the searches that only a few people made, even though impressions is above 0.
    • no_impressions means the domain is connected but Google showed the page no times in the range.
    • not_connected means the page’s domain is not connected to Search Console.
    • needs_reconnect means you must reconnect Search Console in TPC.
    • no_target_page means the keyword has no page address.
    • error means the Search Console lookup failed. It does not fail the rest of the keyword.
    asOf is the latest day Search Console has data for. It usually runs 2 to 3 days behind today, so the last days of the range can be missing.
  • citedAvailable is false when citations couldn’t be loaded or the lookup hit its row cap. A keyword whose status isn’t cited may then still be cited, and the counts in cited may be too low.
  • Share of voice values are fractions, so 0.12 means 12%. Before and after run from 0 to 1. A change is the value after minus the value before. It runs from -1 to 1 and is negative when that group’s share of voice fell. The difference between targeted and other prompts is the targeted change minus the other change. It runs from -2 to 2 and is negative when targeted prompts’ share of voice moved less than other prompts’, even if both rose.
  • In a keyword’s rank before and now, null means no Google check covered the keyword by then, or the check that did has no search results for the keyword’s searches. A rank of null inside a check means it was checked and none of your pages is in the top 10. A rank is the best position of any of your pages for the keyword’s searches, not only the target page.

What you get back

  • The keywords the agent suggests working on, with the recommendation behind each
  • For each targeted keyword, the page status and Google rank before and now
  • Share of voice for targeted prompts compared with your other prompts
To get the same data in a terminal, see the tpc query-bank command.