How it works
Querymemo is a local MCP server. Your AI CLI starts it (the querymemo serve command) and talks to it over stdio. When a tool runs, Querymemo asks Google's Search Console API for the rows it needs with your read-only token, computes the answer on your computer, and hands the answer to your CLI. Install steps are on the setup page.
Every tool accepts a plain domain such as example.com; Querymemo picks the matching property, preferring the domain property. Call list_sites when you're not sure which properties your account can read.
next_article
Answers: what should I write next?
It takes the searches you already appear for at positions 8 to 20 (or deeper with max_position), removes brand and junk queries, and groups the rest into one intent each. An intent becomes an idea when no ranking page's URL is built for its head terms (a new page), or when its queries are spread over three or more pages (a section). Buyer-intent queries (alternatives, versus, pricing, best for) count 1.5 times. Intents that already have a page are counted and left to improve_page.
Inputs: site, limit (default 5), max_position (default 20, up to 50).
Example: "What should I write next for visualsentinel.com?"
visualsentinel.com, web search, 2026-09-28..2026-10-25 (28 complete days, final data, Pacific time). 1. "check website status" (new page, topic): 2055 impressions, best position 8.1. Working title: "Check Website Status: A Practical Guide". Path: /check-website-status/. Ranking by accident: /tools/website-checker, /blog/best-status-page-tool; link to the new page from /tools/website-checker. 18 related queries; no page that ranks for them has a URL built for the head terms. 48 more intents already have a page built for them: those are improve_page work.
improve_page
Answers: which page should I improve first, and how?
Pages at positions 1 to 20 are ranked by the extra clicks they would get at the CTR their position should earn. That expected CTR is your site's own curve at positions where you have 200 or more impressions, never below a published benchmark (Backlinko's CTR by position, halved for AI Overviews). Each item says which one it used in expected_from, and when the benchmark replaced your lower curve it also gives the gap on your own curve. Each page gets one lever. Below position 8 with a CTR significantly under the curve (one-sided Poisson test, p under 0.05, at least 3 clicks missed), the lever is the title and meta description. From position 8 to 20 with 100 or more impressions, the lever is content and internal links, and the answer says not to rewrite the title. It lists the words the title and H1 must keep: the content words of every query the page ranks for in the top 20 with 5 or more impressions. It reads the live title and H1 from the page to check them. Pages with 100 or more impressions a week are flagged as ranking pages: change one thing, then wait 14 days so the result can be measured.
Inputs: site, limit (default 5), page_contains, read_live_pages (default true).
Example: "Which page on visualsentinel.com should I fix first?"
visualsentinel.com, web search, 2026-09-28..2026-10-25 (28 complete days, final data, Pacific time). 1. /tools/status/cursor: title and snippet, about +122 clicks per 28 days against the benchmark (+15 on this site's own curve). Position 7.8, 7491 impressions, CTR 0.08% against 1.71% expected from the benchmark (this site's own curve is lower there: 0.28%), p=1.3e-46. Keep these words in the title and H1: cursor, status, down. Live title: "Cursor Status: Is Cursor Down Right Now? Live Check". Ranking page: make one change, then leave it alone for 14 days. 2. /tools/website-checker: content and internal links, about +113 clicks per 28 days. Position 17.4 with 13438 impressions. Don't rewrite the title for this: the position, not the snippet, is the problem. CTR curve: fitted from this site's own rows (3327 rows; measured at positions 1-10). Expected CTR on the items above: 5 from the benchmark, because this site's own curve is lower there.
what_changed
Answers: what changed, why, and is it my site or Google?
It runs the full top_movers comparison (7 finished days against the 7 before, or 28 against 28), finds the day the site's daily clicks or impressions stepped up or down, and checks your other properties for the same step on the same day. Another site counts when it moved 20% or more the same way from that day. Half or more of your comparable sites moving together points at Google or a Search Console reporting change; one site alone points at the site. It names Google ranking updates and Search incidents within three days of the step. Other properties are read only as daily totals for this check.
Inputs: site, period (7d or 28d), compare_other_sites (default true).
Example: "What happened to bedsizechart.com this week?"
bedsizechart.com, web search, 2026-10-19..2026-10-25 vs 2026-10-12..2026-10-18 (final data, Pacific time). Daily impressions fell 95.9% from 2026-10-18 (45.4 -> 1.9 a day). Mixed: 3 of your 7 other sites with data fell 20%+ from the same day. Part of it may be Google; check the movers below. No Google ranking update or Search incident within 3 days of 2026-10-18. Biggest losing pages: / -396 impressions (it stopped showing for queries where it ranked low). Why /: 170 of its queries lost impressions, led by "bed sizes" -16, "bed sizes us" -13; index now: indexed, no index issues.
top_movers
Answers: what dropped or grew this week, and why?
Site totals with a significance test; the biggest losing and gaining queries and pages with click, impression, CTR and position changes; a cause for each (a ranking drop, fewer searches at a steady position, lower CTR at a steady position, or lost low rankings); device and country splits; for the top losing pages, the queries behind the loss and a live URL Inspection. Changes under a noise floor (3 or 5 clicks, 50 or 150 impressions) are left out.
Inputs: site, period, dimension, metric, min_change, min_impressions, page_contains, limit, explain.
visualsentinel.com, web search, week over week: 2026-10-19..2026-10-25 vs 2026-10-12..2026-10-18. Site: clicks 117 -> 118 (+1, 0.9%), impressions 34008 -> 34834 (2.4%). Within normal variation (p=1). Biggest losing queries: "is chatgpt down" -3 clicks (Ranking drop to results page 3: average position 7.4 -> 21.7, impressions -60.4%; could be noise, p=0.25).
opportunities
Answers: where can I gain clicks fastest?
Query and page pairs at positions 4 to 10 with a CTR significantly under the expected CTR (fix the snippet), pairs at positions 11 to 20 with real impressions and the clicks they'd get at position 5 (content and links), and pages that lost clicks against the previous 28 days. Each item flags other pages of yours competing for the same query.
visualsentinel.com, web search, 2026-09-28..2026-10-25 (28 complete days, final data, Pacific time). Low CTR for the position: "soundcloud down" on /tools/status/soundcloud at position 7.2: CTR 0.17% vs 1.9% expected, about 99 clicks missed. Striking distance: "chatgpt status" on /tools/status/chatgpt at 12.1, 685 impressions, about +19 clicks at position 5.
page_report
Answers: everything about one URL.
28 days against the 28 before with a cause, a 12-week trend, top queries with CTR against expected, the queries it gained and lost, and live URL Inspection.
https://visualsentinel.com/tools/status/soundcloud, 2026-09-28..2026-10-25 vs 2026-08-31..2026-09-27. Clicks 117 -> 19 (-98), impressions 27028 -> 6970, average position 6.1 -> 7.3. Fewer impressions (-74.2%): mostly fewer searches or seasonality, not a ranking loss. Index status now: indexed (Submitted and indexed), last crawl 2026-10-26.
index_status
Answers: are these URLs indexed?
Live URL Inspection for up to 20 URLs: indexed or not, the coverage reason, last crawl, Google's canonical against yours, robots.txt and fetch state, with a plain list of problems. Search Console allows about 2,000 inspections per site per day.
sc-domain:visualsentinel.com: 3 of 3 inspected URLs are indexed (Google's index as of 2026-10-27T20:08Z). Coverage: Submitted and indexed: 3.
sitemaps
Answers: are my sitemaps healthy?
Every sitemap in Search Console with errors, warnings, pending state, and any not read by Google for 7 days or more.
sc-domain:visualsentinel.com: 1 sitemap in Search Console, 280 web URLs submitted (as of 2026-10-27). No errors, warnings or stale sitemaps.
performance
Answers: any breakdown you want.
Clicks, impressions, CTR and position by query, page, country, device, date or search appearance, with filters, for any finished date range, always compared with the period before. Totals come from the property total, so they match the Search Console chart.
visualsentinel.com, web search, 2026-09-28..2026-10-25 (28 days, final data, Pacific time): 454 clicks, 135265 impressions, CTR 0.34%, average position 16.3. Previous 28 days (2026-08-31..2026-09-27): 734 clicks (-38.1%), 208125 impressions.
list_sites
Answers: which sites can I read, and which property should I use?
The properties your Google account can read, grouped by website, with the property to use for each.
Plans and site limits
The Free plan covers one website; a domain property and the URL-prefix properties of the same site count as one. When a tool reads a website your plan doesn't cover, the answer says so and links to your account page, where you can swap the site (once every 7 days) or see the plans. what_changed reads daily totals of your other properties for its comparison without counting them as sites.
Coming next
bing_performance: Bing Webmaster Tools side by side with Google, through Bing's own sign-in (built, waiting on Querymemo's Bing app registration).dont_touch,did_it_work,split_or_merge,not_indexed,index_check,potentialandrival_watch. See the changelog.