CrunchJunkie
Server Details
Ask how ten AI engines (ChatGPT, Gemini, Perplexity, Claude, Google AI Overviews, AI Mode, Copilot, Grok, DeepSeek, Meta AI) describe a brand, which sources they cite and how that changed, then build white-label client reports from the same data. 74 tools; every write is shown as a preview first and needs a second, confirmed call.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 101 tools
Most tools have a distinct resource+action target, and the long descriptions do a lot of work separating near-neighbours (get_ai_visibility_metrics vs get_visibility_trend vs get_prompt_details; get_citations vs get_cited_url vs list_citation_lifetimes; get_link_overview vs get_referring_domains vs get_link_anchors vs get_linked_pages). However, several families overlap heavily within a single domain (six get_link_* readers, four audit tools, two 'visibility' metrics tools, search+fetch vs list_reports/get_report), so an agent must read descriptions carefully to avoid misselection.
The surface is overwhelmingly consistent verb_noun snake_case (get_/list_/add_/remove_/update_/run_/create_/set_/manage_), with predictable groupings by domain. Minor deviations exist: the bare `search` and `fetch` break the pattern (they implicitly target clients/reports), and `manage_*` tools bundle add/remove operations that elsewhere get their own dedicated verbs (manage_competitors vs add_market).
101 tools is far beyond what an agent can navigate comfortably in one flat namespace, even though the server genuinely spans many sub-products (AI visibility, SEO/geo audits, rank tracking, keyword research, link data, reporting, goals, approvals, signals, workspaces). The breadth is real rather than gratuitous, but the count needs grouping or tiering to be practical.
Coverage is unusually deep: full create/read/update/remove lifecycles for prompts, reports, widgets, rank keywords, labels, goals, approvals, signals and site-audit issues, plus spending previews and merge/unmerge flows. Gaps remain at the entity level — there is no delete_report, delete_client, remove_market, or standalone update_client (partly absorbed by update_project_settings), which are dead ends an agent may hit.
Publisher details
- Operator
- Tiki-Taka Media GmbH · Publisher source
- Operator website
- https://crunchjunkie.io
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://crunchjunkie.io/docs/mcp-connector
- Trust center
- https://crunchjunkie.io/trust
- Restrictions
- Requires a CrunchJunkie account on a paid plan (from €14/month). Write actions need a workspace admin to switch them on; actions that spend AI credits need a second switch.
Available Tools
101 toolsadd_annotationAInspect
Add a manual timeline annotation to a client's AI-visibility project — a dated note that pins onto the charts so metric movements come with their explanation. By default the note is internal (team-only); set showInReports:true to make it visible on shared report charts too. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: text (required), date, confirm, clientId, +3 more.
add_marketAInspect
Add a market to a client's AI-visibility project: a country and a language (or a language alone) its prompts are scanned in, with its own prompts and competitors. prompts are the reviewed prompt texts (from translate_prompts, edited, or written in that language); without them the market starts empty. Competitors default to the project's list; competitors gives the market its own, against which only its share of voice is measured. The preview states what one scan of the market uses (prompts × runs × engines, premium engines counted 3×) and when it is first scanned. Requires MCP write actions; without confirm:true it returns a preview. Writes an internal timeline note.
Inputs: market (required), confirm, prompts, clientId, +3 more.
add_rank_keywordsAInspect
Start tracking keywords for a client, for one place and language. By default Google on desktop and mobile, top 100; Bing and the local lists ("More places", Google Maps) can be switched on with tracks. A keyword that is already tracked for the same place and language is left as it is; a keyword with a search operator (site:, inurl: …) is refused. Tracking runs weekly on the workspace's own DataForSEO account (or, on a Rank Tracker budget, on CrunchJunkie's account, charged to the budget), so every keyword and every engine adds to what is charged: the preview states the most it can cost per month. Get location from find_rank_location. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: clientId (required), keywords (required), location (required), languageCode (required), +5 more.
add_text_widgetAInspect
Add a text widget, a free-text block written by the caller, to a report. Deterministic, no AI: the text goes in exactly as given, as HTML (p, br, strong, em, u, s, ul, ol, li, h2–h4, blockquote, a href) or plain text, at most 50,000 characters; scripts, event handlers, javascript: links, frames, images and inline styles other than text-align are removed. Styling is carried by attributes, never inline styles: (text colour), (highlight), , (a tinted box around one block) and (a divider); each is painted with the report theme's own colours in light and dark mode and in the PDF. Goes at the end of the report unless position says otherwise. An existing text block is changed with edit_widget (text). Requires MCP write actions; without confirm:true it returns a preview.
Inputs: text (required), title (required), reportId (required), width, +5 more.
add_tracking_promptAInspect
Add AI-visibility tracking prompts for a client — queries to monitor across AI engines (e.g. "best CRM for startups"): one with text, or a set with prompts (up to 50) under one preview and one confirmation; how many is the user's choice (suggest_prompts without count gives the advice). A prompt the project already tracks in that market is skipped (a paused one is named), and a trial workspace keeps its active-prompt allowance; the preview lists what will be added and what is left out. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: clientId (required), tags, text, market, +4 more.
add_widgetAInspect
Add a data widget (table, chart, KPI) to a report from a plain-language instruction. The request is mapped to the report's connected data; when the data is not connected or the metric is not supported yet, the answer gives the reason. Blended all-channels widgets need two or more paid ad accounts; their blended rates are recomputed from pooled totals, never averaged. Granularity words (daily, weekly, monthly) set a chart's time scale; a period ("last 12 months") is not one. GA4 visits by channel per month is the GA4 table "Channel × Month": one row per channel, one column per calendar month, one metric. The widget goes at the end of the report unless position (start, end, before or after a widget, section_start or section_end, with anchorId from get_report) or the instruction names an existing widget or section. budgetLines builds a Budget vs actual table without AI. The instruction is read by AI; the preview's aiCost states who pays. Free-text blocks use add_text_widget. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: reportId (required), instruction (required), title, confirm, +7 more.
compare_site_auditsARead-onlyInspect
What changed between a client's SEO audit crawl (default the latest) and the previous crawl of the same scope it was compared with: per issue the pages new, fixed (re-checked and passing), persisting, on newly checked pages and not re-checked, with sample URLs; or why the two are not comparable (then no new / fixed numbers exist). Definitions arrive in note.
Inputs: clientId (required), crawlId.
create_clientAInspect
Create a client (brand/domain) in the workspace and, by default, its AI-visibility project in one step — brand name, product type, Brand Profile, target attributes, brand facts, competitors (with optional domains/aliases), market, answer language, engines and passes per prompt. Respects the plan's client cap. Prompts are added afterwards with add_tracking_prompt. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: name (required), label, market, models, +16 more.
create_content_briefAInspect
Generate an evidence-grounded content brief for one tracked prompt: it reads the recent answers for the prompt, the pages the engines cited and the searches they ran, checks the brand's own Search Console (when connected) for a page already within Google's top 20 for those searches, and writes a page plan (target question, recommendations, structure, schema to add, and proof to include: the kind of proof and its genuine source, never a figure to publish) with the evidence and a refresh-or-new verdict. When the recent answers show no real gap, it says so instead of writing a brief. It spends AI on the workspace's own key or Managed AI, not against the scan allowance. Requires write actions and "Allow actions that spend AI"; counts toward 20 assistant-started scans, briefs and rankings refreshes per workspace per day. Without confirm:true it returns a preview. Saved briefs are read with get_content_brief.
Inputs: promptId (required), tag, days, engine, +4 more.
create_reportAInspect
Create a new report for a client. It can be pre-filled from one or more connected data sources' standard templates (e.g. "Google Ads", "Meta", "GA4"), including "All channels", a blended cross-channel section available with at least two paid ad accounts. add_widget and edit_widget refine it afterwards. Requires MCP write actions to be enabled for the workspace; without confirm:true it returns a preview and creates nothing.
Inputs: name (required), clientId (required), confirm, language, +4 more.
create_site_audit_taskAInspect
Create a task in the Approvals queue from an SEO audit issue (or some of its pages) for a client: title (default the issue's name), note, assignee (a member's user id) and due date; its body names the issue, the crawl, the pages (up to 20) and the fix. Nothing is sent to anyone; people close it in Approvals. Without confirm:true it returns a preview of the task.
Inputs: issueId (required), clientId (required), note, urls, +6 more.
decide_approvalADestructiveInspect
Approve or dismiss one item of the Approvals queue, as the Approve and Dismiss buttons on AI Visibility → Approvals do. Approve delivers it: an AI action plan or content brief is e-mailed to the automation's recipients (or the workspace owner); a report draft gets a share link (anyone with the link can then view that report) that is e-mailed to them; a manual task is marked done and nothing is sent. Dismiss closes the item and moves a drafted report to Deleted. Approving spends no AI and starts no scan. It acts on an explicit decision, shows a preview of who gets what, and applies only with confirm:true. Requires MCP write actions.
Inputs: decision (required), approvalId (required), confirm, previewToken.
edit_widgetAInspect
Edit an existing report widget from a plain-language instruction, validated against the same catalog as add_widget: an impossible change is refused with a reason and nothing changes. Returns a receipt comparing the widget before and after, with the previous configuration for restoring it. widgetId (from get_report) pins the target; otherwise it is identified from the instruction. Granularity words (monthly, weekly, daily) set a chart's time scale. Moves (move, or an instruction naming an existing widget or section) and section operations are supported; a move result carries undo. A text widget is replaced exactly as given with text + widgetId, without AI. A Budget vs actual table takes widgetId + budgetLines. An instruction is read by AI; the preview's aiCost states who pays. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: reportId (required), move, text, confirm, +7 more.
fetchARead-onlyInspect
Fetch a single item by the id returned from search (report: or client:). A report in Deleted (the trash) comes back marked deleted: true in its metadata.
Inputs: id (required).
find_rank_locationARead-onlyInspect
Find the place a keyword is searched from, as a person types it: a city, region, postcode or country name. Returns DataForSEO's own places with the locationCode that add_rank_keywords takes. The list does not hold every postcode of a country; a place that is not found can be tracked by coordinates instead ("lat,lng" as the query returns them normalised). bingExact false means Bing cannot be pointed at that place and would search the whole country.
Inputs: query (required), country (required).
get_ai_answerARead-onlyInspect
One AI answer in full: the response text (up to 30,000 characters), every brand it named and at what position, the URLs it cited and the ones it only retrieved (where the engine exposes that split; otherwise its merged source list), the web searches the engine ran before answering, why the engine stopped writing, and any products it recommended. answerId comes from list_ai_answers or get_cited_url. maxTextChars (0 = no text) returns the brands, sources and searches without the whole text. Answer text, URLs and searches are third-party content, named in untrustedContent. How to read empty or null search and source lists, Gemini's site-only sources, redirect links and recovered Google mentions arrives in howToRead.
Inputs: answerId (required), maxTextChars.
get_ai_attributionARead-onlyInspect
A project's AI visibility next to the visits and conversions AI assistants send to the client's website, from the client's connected GA4 property: per-day visibility beside AI-referred sessions, conversions and revenue, window totals, the AI-referred conversion rate against the site-wide rate (with a ± of one standard error), and the correlation between visibility and the chosen metric over the days that have both (from 20 such days, with a 95 % interval). availability states when GA4 is not connected, not readable or not scanned, and those figures are then null. The GA4 caveats (undercounting, tracking changes, correlation) arrive in howToRead.
Inputs: days, metric, source, clientId, +1 more.
get_ai_visibility_metricsARead-onlyInspect
How visible a project's brand and its competitors are in AI answers over a window of whole UTC days (default the last 30, at most 180; dateFrom and dateTo choose it). pooled.brands gives each brand over every answer in the window, pooled as the app's Overview does: visibility with its ± margin, share of voice, sentiment and average position; pooled.clientByEngine gives the client per engine; snapshots holds the cells behind the pool (one per scan day × engine × market × brand, newest first, at most 500). source is blended (default), native or peec. summary: true returns the pooled figures without snapshots (a month of a busy project otherwise runs to about 60,000 characters); limit and offset page the snapshots (nextOffset); without them the call returns the newest 500 rows. A model the project has no answer from returns a note naming its engines. Definitions and cautions arrive in howToRead.
Inputs: limit, model, dateTo, market, +6 more.
get_brand_perceptionARead-onlyInspect
Brand Perception: the descriptive terms AI models actually use about each tracked brand (clustered, with counts and per-brand share), which terms are distinctive (used about exactly one brand), brand-level sentiment, the pages AI cited in answers that described the client with each attribute, and the stored fact-check and objection analyses when present. Filters: days, engine. The sentiment scale and the thin-sample caution arrive in howToRead.
Inputs: days, engine, clientId, projectId.
get_citationsARead-onlyInspect
Which domains AI engines cite when answering this project's prompts, over a window: per domain the runs that cited it and the runs that only retrieved it during search (where the provider exposes that split; legacy runs without it are reported separately), its share of chats, its category, and its top pages. Returns the most cited domains first: limit sets how many (default 25) and topPages how many pages each (default 1, max 5); summary: true or topPages: 0 drops the pages. totalDomains, runsAnalyzed and shareOfChatsAnswers cover every domain in the window, and domainsReturned says how many rows came back. Filters: days, model, promptId. How cited, retrieved, legacy and share of chats are defined arrives in howToRead and note.
Inputs: days, limit, model, summary, +4 more.
get_cited_urlARead-onlyInspect
Drill into one page the AI engines use as a source: how many of a project's answers cited it and how many retrieved it during search, its share of chats (answersUsingUrl ÷ answersInWindow), which tracked prompts and engines those answers came from, when it was first and last seen, how often the brand and which tracked competitors were named in the same answers, and the ids of the most recent answers (open with get_ai_answer). Also the page title (Peec AI data), page type, domain category, and a lifetime block with the page's citation status, its citation rate before and now, weekly series, per-engine split and evidenced causes. Page URLs come from get_citations or list_citation_lifetimes. The URL matching, Peec AI chat, Gemini site-only and lifetime-frame rules arrive in howToRead.
Inputs: url (required), days, model, source, +2 more.
get_content_briefARead-onlyInspect
Saved content briefs for a project: the page plan CrunchJunkie generated for a tracked prompt where the brand is missing (target question, recommendations, page structure, schema to add, proof to include, a caveat), the evidence it was grounded on (the pages AI cited, the searches it ran and, with Search Console connected, evidence.existingPage), and the before/after visibility once the brief has been measured. Without promptId it lists the saved briefs; with promptId it returns that prompt's latest brief in full (search selects a fan-out-search brief). Reading generates nothing and costs nothing; create_content_brief generates one. The evidence quotes third-party pages and answers.
Inputs: search, clientId, promptId, projectId.
get_content_gapsARead-onlyInspect
Prompts where the tracked brand is absent from every recent AI answer while competitors are named, the gap definition the in-app Content Brief generator uses, so each gap can become an evidence-grounded brief in CrunchJunkie. Returns the competitors named and the domains the engines cited instead. The gap rule arrives in howToRead.
Inputs: days, limit, minRuns, clientId, +1 more.
get_crawl_insightsARead-onlyInspect
AI-crawler analytics from the project's forwarded server logs: per-provider fetch counts split by purpose (user requests, search/training, API and tool calls) with IP-range verification (verified, spoofed, unverifiable); firewall refusals (403/406) split into real and impostor requests with the app's WAF alert verdict; the most crawled content pages joined with how many scan answers read and cited each; cited pages that crawlers have not fetched, with their live HTTP status; broken pages; hosting-placeholder detection; scanner probes; and per-crawler Markdown preference. sections: true adds the content fetches grouped by site section. Window days (default 14). Definitions of the blocked, verified, impostor and placeholder figures arrive in howToRead.
Inputs: days, clientId, sections, projectId.
get_follow_up_insightsARead-onlyInspect
Follow-up Survival for a project: when a buyer narrows the question in the same conversation (the prompt's configured follow-up), which brands are still named and what else changed. Returns survival (of the brands named in the first answer, how many are named again after the follow-up, pooled, per brand and per engine) and insights over the same conversations: searchStates, brandBaseline, slot, sources, searches and list (the conversations, newest first, paged with limit and offset). conversationId (a list row's turn1Id) returns one conversation in full: both answers, the exact follow-up, cited and retrieved URLs and searches per turn. Available when Follow-up Survival is switched on for the workspace and the project. Definitions arrive in howToRead.
Inputs: days, limit, engine, offset, +3 more.
get_geo_auditARead-onlyInspect
The latest technical GEO Audit for a project's domain: composite score and band (crawler readiness: whether AI crawlers can reach, read and parse the site), per-category results (llms.txt, structured data, crawlability…), AI-synthesised insights and the Agent Readiness sub-score. firewallAccess joins robots.txt with a live probe per AI crawler on the homepage and one sitemap content page, naming the layer that answered (Cloudflare, AWS, Akamai, Vercel, origin…). includePages adds per-sampled-page results (capped at 10). The score measures readiness and does not predict how often AI answers name the brand (scoreNote); the probe's limits and the layer attribution rules arrive in howToRead. run_geo_audit creates a new audit.
Inputs: clientId, projectId, includePages.
get_goalsARead-onlyInspect
The Goals on the Monitoring page: per client, a target for one paid-ads metric (ROAS, CPA, Conversions, Leads, Cost per lead, Clicks, Impressions, CTR or Spend) over the month, quarter or year to date, with the current value, progress and status as the page shows them. current is the blended to-date number an All channels report widget shows across the client's connected ad accounts, refreshed by a scheduled job (updatedAt); current: null means no data. Includes roasCoverage, expectedToDate and status (on_track, at_risk, too_early, no_target, no_data). Paid-ads metrics only; AI-visibility metrics are in get_ai_visibility_metrics. The pairing and status rules arrive in howToRead.
Inputs: clientId.
get_insightsARead-onlyInspect
The prioritised actions on the AI Visibility Insights page: citation, content, reputation, technical (llms.txt, AI-crawler access in robots.txt, Organization schema), PR, social and competitive actions (among them one Gap analysis awareness action, gap: how many sites AI answers used when they named a tracked competitor and not the client, with the top three, counted by the Gap analysis's own tally over the same 30 days), each with its priority (high, medium, low), the rationale (the observation with the answers behind it and the window), how many tracked prompts it affects, and the domain and engines involved. Worked out at call time from the last 30 whole UTC days of answers plus a live check of the client's website, as the page does. projectId or clientId selects one brand; without either, the agency page across every brand with a scan (at most 10). Detected changes are in get_signals. Changes nothing. Priority and wording rules arrive in howToRead.
Inputs: source, clientId, priority, projectId.
get_keyword_opportunitiesARead-onlyInspect
Where to start for a client, from its own data. (1) Striking distance — Search Console queries at an average position of 4–20 in the last 30 days (all countries), most impressions first, with the monthly searches already stored for the chosen country and language (a stored lookup, or a Google Ads figure the workspace looked up), and what one lookup of the missing figures would cost. (2) The plain searches AI engines ran for the client's tracked prompts, with runs of n answers and the window. Reads only; lookup_keyword_volumes fetches the missing figures, research_keywords researches a seed.
Inputs: country (required), clientId (required), language (required), limit.
get_keyword_researchARead-onlyInspect
One stored keyword lookup (key) or saved list (listId) with this client's joins, filtered, sorted and paged like the app's table: per keyword the monthly searches (a Google Ads-based model, with its band and date), 12-month trend, difficulty and its step, intent, CPC and bids, SERP features of the dated sample, the AI Overview by its best evidence (the Rank Tracker's newer check where tracked, else DataForSEO's dated sample; source, date, age, stale after 90 days, client cited), how often AI engines ran the search for the client's prompts (runs of n answers, window), and the client's Search Console position. Also the summary of the matching rows (median difficulty with n, AI Overview k of n) and how many rows each view holds (aio_gap, striking, ai_searched). Reads only; nothing is sent to DataForSEO.
Inputs: clientId (required), key, sort, view, +14 more.
get_keyword_research_setupBRead-onlyInspect
How keyword research runs for this workspace: which DataForSEO account a lookup would use (the workspace's own, or a Rank Tracker budget) and why, the budget left, DataForSEO's price per request and per keyword with the date it was read, the most a lookup of 100 to 1,000 keywords can cost in USD and EUR (and what a budget is charged), the lookup types, the languages it offers per country (languagesByCountry), row limits and the published difficulty formula. Reads only.
Inputs: no named parameters.
get_link_anchorsARead-onlyInspect
The anchor texts of the links DataForSEO found to a client's site, from the STORED answer (no new request, no charge): referring domains, nofollow domains, backlinks, first seen and spam score per anchor, and OUR class (brand, url, generic, descriptive, empty — a heuristic from the client's name and domain, never DataForSEO's). With no stored answer it says so.
Inputs: clientId (required), limit, domain.
get_linked_pagesARead-onlyInspect
The client's own pages that links point to, from the STORED DataForSEO answer (no new request, no charge): HTTP status DataForSEO last read, title, referring domains, backlinks, broken backlinks and first seen. A page answering with an error (status >= 400) while links point to it is a reclaim candidate (redirect or restore it). With no stored answer it says so.
Inputs: clientId (required), limit, domain, errorsOnly.
get_link_gapARead-onlyInspect
Domains that link to a client's competitors and not to the client, from the workspace's STORED gap answer (no new request, no charge), ranked by usefulness: domains AI engines cited in this client's answers first, then those linking to more of the competitors, then DataForSEO Rank — each with why (the facts behind its place). competitors picks a stored gap; omitted, the newest stored gap for the domain. With no stored answer it says so; run_link_lookup with kind "gap" buys one.
Inputs: clientId (required), limit, scope, domain, +1 more.
get_link_monitorARead-onlyInspect
The weekly spam check of a client's new linking domains: whether it is on, the domain, the account it runs on, its last status (with the next step: confirm_again means the workspace's account type changed since it was switched on, so it waits for a person to confirm it again), the workspace's monthly cap and what this month used, the weekly readings (new and lost referring main domains, newest first) and the link-spam Signal (open, else the latest), and what each cap choice would cover. Reads only.
Inputs: clientId (required).
get_link_overviewARead-onlyInspect
A client's link profile from the workspace's STORED DataForSEO answer (never a new request, never a charge): referring domains and main domains, backlinks found, broken backlinks, DataForSEO Rank (theirs, 0-100), DataForSEO's average spam score, the attribute and domain-ending mix, a year of weekly referring domains and new / lost referring domains per week. With no stored answer it says so; run_link_lookup buys one. Definitions arrive in note.
Inputs: clientId (required), domain.
get_prompt_detailsARead-onlyInspect
Full detail for one tracked prompt: per-engine pooled visibility over a window, which competitors the AI named (with counts), the domains cited for this prompt (runsCiting = runs that cited it at least once; citations = total citations), and the freshest answer excerpt. promptId comes from list_prompts.
Inputs: promptId (required), days.
get_query_fanoutsARead-onlyInspect
Query fan-outs: the web searches each AI model ran through the provider's official API before answering the project's tracked prompts. One row per distinct search, sorted by answers, with the engines and prompts behind it, its tags, the tracked brands named inside the search string, the client's citation and mention counts, the hosts cited and matching Search Console rows. limit sets how many rows come back (default 5, max 200) and, above 10, how long the lists in signals, brandsInSearches and sequences are (default the top 10 of each, with their totals); summary: true returns those blocks without rows; distinctSearches, the totals in signals, brandsInSearches and sequences, and the per-engine coverage describe every search in the window. Filters: days, engine, promptType (shopping or other), tag. fanoutSource "peec" returns the sub-queries Peec AI recorded in its own chats instead, for clients with a Peec AI connection (a separate capture, never pooled with ours). The reading rules for these figures arrive in howToRead.
Inputs: tag, days, limit, engine, +6 more.
get_ranking_evidenceARead-onlyInspect
The evidence behind one ranking: the results list the search engine returned for that check with the tracked domains marked, how many results came back against how many were asked for, the link to repeat the same search, every tracked domain's position in that check, the keyword's position history, and what the check cost. It answers "why does it say position 9?" or "why was it not found?".
Inputs: checkId (required), clientId (required), rows.
get_rankingsARead-onlyInspect
A client's keyword rankings in Google and Bing: per keyword the position among organic results and among everything on the page, the change since the last comparable check, the ranking page and whether it is the page the client wants to rank, the local pack position, whether an AI Overview was shown and cited the site, and when it was checked. Also a summary over the keywords of the chosen engine and device (top 3, 10 and 20 with sample size, average position, distribution, movement), the same per tag and for branded and non-branded keywords, monthly search ranges per keyword, and competitors' positions. Rows are paged and filterable (column, tag, search, branded, within, movement, aiOverview, needsAttention, compareDays). Definitions arrive in howToRead.
Inputs: clientId (required), tag, page, sort, +13 more.
get_rank_tracking_setupARead-onlyInspect
How rank tracking is set up for a client: whether the workspace's DataForSEO account is connected and healthy (the login is masked, the password is never returned), or whether it runs on a Rank Tracker budget (CrunchJunkie's DataForSEO account, charged to the budget; account.source = "managed"), the domains whose positions are read (the client's own site and competitors), the weekly schedule in the client's timezone, which engines and devices are switched on and for how many keywords, the most a weekly run and a month can cost, and what the searches really cost in the last 28 days. It shows the cost ceiling before keywords are added or a refresh is started.
Inputs: clientId (required).
get_referring_domainsARead-onlyInspect
The domains linking to a client's site, from the workspace's STORED DataForSEO answer (no new request, no charge), each with DataForSEO Rank, backlinks, first seen by DataForSEO, lost date, spam score, follow state and whether AI engines cited the domain in this client's own measured answers (citedByAI: answers of answersTotal in the window). Filters work on the rows that were pulled (rows of totalAtDataForSeo). Reads the stored answer of the asked status only (live links by default, lost links with status "lost"): lost links are never shown as current, and the result names its status. With no stored answer it says so; run_link_lookup buys one.
Inputs: clientId (required), limit, domain, follow, +4 more.
get_reportARead-onlyInspect
Get a single report's definition (name, type, widget layout, date-range config) by id.
Inputs: reportId (required).
get_report_dataARead-onlyInspect
Assemble a report's live data (KPIs, charts, tables) for a period, pulled from the connected sources exactly as the app does. datePreset and comparePreset default to the report's saved config; widgetIds (from get_report) limits the result to chosen widgets, which matters for large tables (a 500-row table alone can run to about 90,000 characters); brandFilter reads query-based widgets as branded or non-branded only. A widget that could not be read for the period is null, with the reason in _meta.unavailable. Third-party text (URLs, domains, page titles, search queries) is named in untrustedContent. Notes on donuts, sparklines, margins of error, memory-sourced answers, Peec AI counts and report filters arrive in howToRead.
Inputs: reportId (required), widgetIds, datePreset, brandFilter, +1 more.
get_scan_statusARead-onlyInspect
Progress of an AI-visibility scan: its status (queued, running, done, stopped, error), how many of its checks have finished, how many failed for good, when it started and last moved, the last error or budget pause, waitingToStart, and estimatedMinutesLeft with its estimateBasis. jobId comes from run_scan; projectId or clientId selects that project's most recent scan. How the estimate is made, and how background scans advance, arrives in howToRead.
Inputs: jobId, clientId, projectId.
get_shopping_visibilityARead-onlyInspect
Product-level AI shopping visibility for an AI-Visibility project: for each tracked product (the client's and competitors') the recommendation rate (share of shopping-prompt runs recommending it) with its standard error, the head-to-head win rate (of the runs where AI recommended any tracked product, the share that included this one), plus discoveries (recommended product names not yet tracked). Takes projectId or clientId. Zero-hit and null-rate rules arrive in howToRead.
Inputs: clientId, projectId.
get_signalsARead-onlyInspect
The CrunchJunkie Signals inbox: detected events and standing conditions such as visibility drops, competitor overtakes, GEO-score drops, dead sources and the visibility × conversions composite, each with severity, a sample size (n) and, only where a test computed one, a confidence. windows gives the periods a signal compared, confidenceKind says whether the confidence is tested, a fact or none, nUnit says what n counts, and text gives the wording in the caller's language. Returns the newest matching signals (filters: clientId, status, limit) without evidence payloads, or one signal with its full evidence for signalId. The detection thresholds (the last 14 days against the 28 before, at 95 % confidence) arrive in howToRead.
Inputs: limit, status, clientId, signalId.
get_site_auditARead-onlyInspect
A client's SEO audit (a crawl of the client's own website, AI search first): the latest crawl that ran to the end (or crawlId; a later crawl that did not is named in laterUnfinishedCrawl), its status, Site Health and AI Search Health (pages without errors of pages evaluated, with n and the crawl date), site-wide errors, issue counts by severity and category, the value windows behind the figures, the comparison with the previous crawl of the same scope, a running crawl's progress, the settings and schedule, the page allowance left, and the health of earlier crawls. Reads stored crawls only; run_site_audit starts one. Definitions arrive in note.
Inputs: clientId (required), crawlId.
get_site_audit_historyCRead-onlyInspect
A client's SEO audit crawls over time, oldest first: per crawl its date, status, pages requested, Site Health and AI Search Health with n, site-wide errors, new / fixed against the previous comparable crawl, and whether it has the latest crawl's scope (only those compare), plus the key-page monitor's newest changes.
Inputs: clientId (required), limit.
get_site_audit_issueARead-onlyInspect
One issue of a client's SEO audit crawl: what it is, why it matters and how to fix it (in the user's language), its evidence basis and source, its priority and the value on the affected pages, the affected URLs (sorted by priority and Google clicks; capped, with the true total; paged with offset) with each page's finding detail, the site-wide detail for a site-wide issue, mutes with their reasons, and fixContext: the facts and rules the in-app "Draft the fix with Crunch" uses, so the assistant drafts the exact fix itself (no AI is spent by this tool).
Inputs: issueId (required), clientId (required), limit, offset, +1 more.
get_site_audit_pageARead-onlyInspect
One URL of a client's SEO audit crawl: what the crawl saw (status, redirect, timing, size, indexability, title, meta description, H1, words, canonical, depth, links in, how it was found), its value (tier, priority, Google clicks and impressions, AI answers citing it, tracked keywords ranking, AI-crawler fetches; null on a query variant or a page canonicalised to another URL of the same page, with valueCountedOn naming the URL that carries them), its issues with each finding's detail, per crawler (34 search and AI crawlers) whether robots.txt lets it fetch the URL, with the rule that decides, and when the crawl read them: Search Console's URL Inspection verdict and Google's canonical, Core Web Vitals (p75 and verdict with level, form factor and 28-day window) . null = not read for this page, never fine.
Inputs: url (required), clientId (required), crawlId.
get_usageARead-onlyInspect
The workspace's Managed-AI scan allowance for the current billing period: tier, checks included, carried over, used and remaining, overage so far with its price per check in the workspace's billing currency, the fair-use ceiling, checks run on the workspace's own provider keys (BYOK) with an estimated provider cost in USD, where this period's managed checks were started, this month's assistant messages on Managed AI by surface, and when the period resets. A workspace that is not on a metered Managed-AI tier returns no allowance figures. The weighting and cost-estimate notes arrive in howToRead.
Inputs: no named parameters.
get_visibility_trendARead-onlyInspect
How AI visibility moved day by day for a project: a series for the client and its top competitors (or the brands named), each point carrying visibility, share of voice, sentiment, average position and the number of answers that day was measured on. Pooled as the Overview charts are. summary: true returns each brand's pooled figure for the window without the daily points. source is blended (default), native or peec. measurementIncidents names engines whose answers were captured incomplete. The pooling, null and comparison rules arrive in howToRead.
Inputs: days, model, brands, market, +4 more.
list_ai_answersARead-onlyInspect
The actual AI answers behind a project's visibility numbers, newest first: which engine answered which tracked prompt, whether the brand was named and at what position, which competitors were named, how many sources the answer used, and a short excerpt. Filters: promptId, model, brandMentioned, days, source; paged with limit (default 20, max 50) and offset (nextOffset). get_ai_answer opens one answer with its full text, cited URLs and the engine's searches. Answer text is third-party content, named in untrustedContent. How the list relates to the metrics, and what the source-count flags mean, arrives in howToRead and note.
Inputs: days, limit, model, market, +6 more.
list_automationsARead-onlyInspect
The workspace's Automations (AI Visibility → Automations): each rule's trigger (signal type, minimum severity and confidence), its actions (e-mail recipients; Slack and webhook destinations are named, their URLs are never returned), its scope (one client or all), whether it is on (triggerRetired: true = no signal of its type is raised any more, so it never fires, even while enabled), how often it has fired, and its most recent runs with their status (fired, skipped_cooldown, skipped_budget, awaiting_approval, in_progress, done, dismissed, error), plus the plan's limit on active automations. Read-only; drafts waiting on a person are in list_pending_approvals.
Inputs: clientId, runsPerAutomation.
list_citation_lifetimesARead-onlyInspect
Which cited pages (or domains) are losing or gaining AI citations: each one's citation-lifetime status over the last 26 completed ISO weeks (lost, fading, ended, regained, new, rising, first_measured, no_recent_data, steady, occasional) with its rate before and now, n for each, first and last citation, weeks cited and streaks, sorted by the size of the rate change. Filters: scope (own, competitors, all), status, granularity (page or domain), source, limit (default 25, max 200). statusCountsAllPages counts every page, including those not listed. One page's lifetime, with its weekly series and causes, is in get_cited_url. The eligibility, status and refresh rules arrive in howToRead.
Inputs: limit, scope, source, status, +3 more.
list_clientsARead-onlyInspect
List the clients (brands/domains) in the CrunchJunkie workspace, with their connected data-source providers and report counts (reports in Deleted not counted).
Inputs: no named parameters.
list_data_sourcesARead-onlyInspect
List connected data sources (Google Ads, GA4, Meta, Search Console, etc.) across the workspace, optionally filtered to one client.
Inputs: clientId.
list_keyword_researchARead-onlyInspect
A client's stored keyword lookups (each kept 30 days for the workspace; showing one again is free) and saved keyword lists: seed, type, country, language, keyword count and dates for each lookup; name, country, language, keyword count and last change for each list. Reads only; get_keyword_research opens one.
Inputs: clientId (required).
list_pending_approvalsARead-onlyInspect
The Approvals queue (AI Visibility → Approvals): AI drafts that automations produced and that wait for a person (an action plan, a report or a content brief), plus manual tasks teammates created, open or in progress (at most 100, soonest due first; totalOpen and truncated say when there are more). Each item carries its draft text, the triggering signal's client, severity, type and current status (resolved = the issue already cleared on its own), the assignee, due date and note. Read-only; decide_approval approves or dismisses one.
Inputs: clientId, bodyChars.
list_promptsARead-onlyInspect
List the tracked AI-visibility prompts for a project or client, each with pooled visibility over a recent window (mentioned runs ÷ total runs), run counts and the engines that ran it, plus namedMeasured / namedNotCited (answers that named the brand with readable sources, and of those how many cited no page on the client's own domains). Takes projectId or clientId. Returns totalAvailable + truncated when capped.
Inputs: q, days, market, clientId, +2 more.
list_reportsARead-onlyInspect
List the reports in the workspace, optionally filtered to one client. Returns report ids for get_report and get_report_data. Reports in Deleted (the trash) are left out unless includeDeleted is true; they are then listed too, each marked deleted: true or false.
Inputs: clientId, includeDeleted.
list_site_audit_issuesARead-onlyInspect
The issues of a client's SEO audit crawl, in the audit's order: priority (P1 = an Error on a key page or a site-wide Error), then Google clicks on the affected pages, then AI answers citing them, then pages affected. Each with severity, category, pages and key pages affected, new / fixed since the previous crawl of the same scope (null when not comparable), the value on the affected pages with its window, a one-line whyFirst, and whether it is muted. Filters: category, severity, priority, newOnly, includeMuted. total counts every matching issue; rows are capped.
Inputs: clientId (required), limit, crawlId, newOnly, +4 more.
list_site_audit_pagesARead-onlyInspect
The URLs of a client's SEO audit crawl, highest priority first, then most Google clicks: state, HTTP status, indexable and why not, click depth, internal links in, title, words, issues, value tier, priority, Google clicks / impressions (28 days), AI answers citing the page, tracked keywords ranking, AI-crawler fetches (30 days) and how the URL was found. A query variant of another crawled page, or a page canonicalised to another URL of the same page, has null value figures and valueCountedOn names that URL: the figures are counted there, never repeated here. Filters: state, valueTier, issueId, urlContains, httpStatus, indexable, depth, source. total counts every matching URL; rows are paged (offset).
Inputs: clientId (required), depth, limit, state, +8 more.
list_workspacesARead-onlyInspect
List the workspaces the account belongs to — id, name, the account's role, plan, whether the connector works there, whether write actions and actions that spend AI are switched on, whether it is archived (frozen: every tool refuses there until an owner restores it) and, for a workspace covered by another workspace's plan, which one bills it (coveredBy) — and which one the connector acts in now. Every other tool reads and writes only the active workspace. switch_workspace changes it.
Inputs: no named parameters.
lookup_keyword_volumesAInspect
Fetch the Google Ads monthly searches of a client's striking-distance queries (get_keyword_opportunities) that have no figure yet, for one country and language: ONE DataForSEO request of up to 1,000 keywords on the workspace's own account or its Rank Tracker budget, kept 30 days. The preview states how many keywords and the most it can cost. Requires write actions and "Allow actions that spend AI", and counts toward the 20 assistant-started spend actions per workspace per day.
Inputs: country (required), clientId (required), language (required), confirm, +1 more.
manage_competitorsAInspect
Add or remove competitor brands tracked in a client's AI Visibility (competitors set the Share-of-Voice denominator), optionally with a website domain (used by the GEO-audit crawler benchmark, which always reads the project's own list) or brand aliases (alternate spellings counted as the same brand). Every market tracks the project's competitors unless it has its own list. market changes one market's own list (its first change starts from the project's list); without it the project's list changes, which every market without its own list tracks (the preview names those markets); market plus resetMarket:true puts a market back on the project's list. A market's list affects that market's Share of Voice only. Changing competitors rebases Share of Voice, so an internal timeline note is written. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: add, market, remove, aliases, +6 more.
manage_keyword_listADestructiveInspect
Create, rename, add keywords to, remove keywords from, or delete a client's saved keyword list. A keyword added from a stored lookup (resultKey) keeps that lookup's figures with their dates; one typed in has none until researched. A client has up to 50 lists of up to 5,000 keywords. Delete removes the list only, never a stored lookup. Spends nothing. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: action (required), clientId (required), name, listId, +6 more.
manage_project_tagsAInspect
Rename or remove a tag across ALL prompts in a client's project (bulk tag hygiene). Provide EITHER rename {from,to} OR remove [tags]. Requires MCP write actions; without confirm:true it returns a preview of how many prompts are affected.
Inputs: remove, rename, confirm, clientId, +2 more.
manage_rank_competitorsADestructiveInspect
Set the domains whose positions are read from every search of a client: the client's own site (isOwn) and up to ten competitors. A competitor costs nothing extra. A domain matches itself, its www form and its subdomains, never its parent; local results are matched by Google's business id (cid), or by the linked website when there is none. Saving another domain with isOwn:true moves the own site: the previous one keeps its measured positions, stays listed as a previous own site (ownUntil) outside the ten competitors and is still read at no cost, up to 3 previous own sites; a move past that stops reading the oldest (stoppedReading). Removing a domain removes its measured positions. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: action (required), clientId (required), cid, isOwn, +5 more.
merge_projectAInspect
Merge another client's AI-visibility project of the same brand into this one as a new market. Its prompts, answers, daily figures, content briefs, timeline notes and signals move here and count in that market from the days they ran, and so do its Gap analysis steps marked done or set aside (unless this project has one for the same site or page); the other markets' numbers stay as they are. The other project stays, inactive and empty; unmerge_project undoes the merge. projectId or clientId is the project that keeps going, sourceProjectId or sourceClientId the one merged in (without a source, the result lists the projects that can be merged in). The preview states every count that moves and what stops showing data (acceptReportsGoDark: true records agreement). Owners and admins only. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: confirm, clientId, projectId, previewToken, +3 more.
refresh_rankingsAInspect
Check a client's keywords now instead of waiting for the weekly run: all of them, or only the ones named. It runs on the standard queue (results normally within the hour, at the weekly run's price per page) on the workspace's own DataForSEO account or, on a Rank Tracker budget, on CrunchJunkie's account, charged to the budget, so it costs money: the preview states how many searches it would make and the most they can cost. Requires write actions and "Allow actions that spend AI", and counts toward the 20 assistant-started scans, briefs and rankings refreshes per workspace per day. One run per client at a time. Without confirm:true it returns a preview; get_rankings returns the result afterwards (lastRun shows the progress).
Inputs: clientId (required), confirm, keywordIds, previewToken.
remove_rank_keywordsADestructiveInspect
Stop tracking keywords. Default mode "pause" keeps the keyword and its history and stops the weekly checks (and their cost); it is reversible with update_rank_keywords. Mode "delete" removes the keywords PERMANENTLY together with every position ever measured for them — totals and the distribution history will change. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: clientId (required), keywordIds (required), mode, confirm, +1 more.
remove_tracking_promptADestructiveInspect
Stop tracking an AI-visibility prompt. Mode deactivate (default) pauses it: no future scans (it also leaves a scan that is queued or running) and every stored answer is kept; update_tracking_prompt (active: true) or Resume on the app's Prompts tab resumes it. Mode delete removes it permanently and cannot be undone: every answer stored for it is deleted with it. Views that count individual answers are recalculated without them for past periods too, and the daily totals stored for past days (the headline visibility in get_ai_visibility_metrics and get_visibility_trend) are rebuilt for the days it was measured on. Both modes write an internal timeline note. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: promptId (required), mode, confirm, previewToken.
remove_widgetAInspect
Remove one widget from a report by its exact id (from get_report). Deterministic — no AI interpretation. Returns the removed widget's configuration so it can be re-created if needed. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: reportId (required), widgetId (required), confirm, previewToken.
research_keywordsAInspect
Look up keywords around a seed in DataForSEO Labs (Google, one country and language) for a client: contains (keywords with the seed's words), ideas (same topic), related (searched together) or questions. A lookup stored in the last 30 days answers at no cost and without a preview. Otherwise it costs money on the workspace's own DataForSEO account or its Rank Tracker budget: the preview states the most it can cost and the budget left. Requires write actions and "Allow actions that spend AI", and counts toward the 20 assistant-started spend actions per workspace per day. Returns the key and the first rows; get_keyword_research filters the rest. Keywords are tracked with add_rank_keywords (Google positions) or turned into AI tracking prompts with suggest_prompts (keywords) and add_tracking_prompt.
Inputs: seed (required), country (required), clientId (required), language (required), +4 more.
resolve_signalAInspect
Move one signal in the Signals inbox, exactly as its buttons do: "resolve" (dealt with), "acknowledge" (seen, still open), "snooze" (hidden for snoozeDays — 1 to 90, default 7 — then open again) or "reopen" (back to new). Reversible: reopen undoes any of them. It does not change the data behind the signal, and a new occurrence is raised again by the detector. Requires MCP write actions; without confirm:true it returns a preview and changes nothing.
Inputs: action (required), signalId (required), confirm, snoozeDays, +1 more.
run_geo_auditAInspect
Run a fresh GEO Audit of the client's website now and save it: AI-crawler access (robots.txt, and whether test requests with each crawler's name were refused, a sign of a block, not proof), llms.txt, structured data, content and technical checks on the homepage and sampled pages, Agent Readiness (preconditions only, not a task test), and AI-written insights. It audits the website set on the client, not an arbitrary domain, uses none of the workspace's scan allowance, and can take a minute or more. One audit per project per 15 minutes. Without confirm:true it returns a preview; get_geo_audit returns the full result.
Inputs: confirm, clientId, projectId, previewToken.
run_link_lookupAInspect
Buy a link-profile lookup from DataForSEO for a client: kind overview, referring_domains, anchors, pages or gap (the competitors are required for a gap). It costs money on the workspace's own DataForSEO account (DataForSEO bills it; CrunchJunkie adds nothing) or, where offered, on the Rank Tracker budget (charged 2x the reported price): the preview states the most it can cost, the budget left, and when a stored answer makes it free. retry:true asks again ONLY the parts of a stored partial answer that failed. Requires write actions and "Allow actions that spend AI", and counts toward the assistant-started spend actions per workspace per day. Without confirm:true it returns a preview; the get_link_* tools read the answer afterwards.
Inputs: kind (required), clientId (required), limit, order, +7 more.
run_scanAInspect
Start an AI-visibility scan of a project now: every active tracked prompt on each of the project's engines that has a key, for the project's passes per prompt. It spends AI: checks on managed keys count against the workspace's Managed-AI allowance (premium engines three times), then as overage, pausing at the overage cap; checks on the workspace's own keys are billed by that provider. Requires write actions and "Allow actions that spend AI"; counts toward 20 assistant-started scans, briefs and rankings refreshes per workspace per day. Without confirm:true it returns a cost preview and starts nothing. The scan runs in the background; get_scan_status follows it. When the project is already scanning, the new scan is queued and starts when that one finishes (one queued scan per project; a second call updates it); a running scan is never stopped.
Inputs: confirm, clientId, projectId, previewToken.
run_site_auditAInspect
Start an SEO audit crawl of the client's own website (its host and the www twin only). Our crawler (CrunchJunkieSiteAudit) reads robots.txt first and obeys it, asks for at most one page a second, and keeps derived facts only. It uses the workspace's page allowance (no money is charged); the preview states the pages it may request, the allowance left and when the period ends, the estimated duration and, for a site's first audit, the attestation the user confirms (then pass attest:true). One running crawl per client; a few starts per client per day while in preview. Requires write actions and "Allow actions that spend AI" (it starts billable work), and counts toward the assistant-started spend actions per day. Without confirm:true it returns a preview; get_site_audit follows the crawl.
Inputs: clientId (required), attest, confirm, previewToken.
schedule_reportAInspect
Schedule an existing report to send automatically, weekly or monthly, to a list of recipients. Requires MCP write actions; without confirm:true it returns a preview and changes nothing.
Inputs: reportId (required), frequency (required), recipients (required), hour, +4 more.
searchARead-onlyInspect
Search the workspace's reports and clients by name. Returns a list of {id,title,url} results for use with fetch, plus totalMatches and a truncated flag (when truncated, a narrower query shows the rest). Reports in Deleted (the trash) are not searched.
Inputs: query (required).
send_reportAInspect
E-mail a report once to up to 10 recipients, the same e-mail as "One-time email" on the report's Share panel: a localized subject naming the period, an optional message, a button to the report's share link, sent in the name of the report's creator, with the PDF attached unless attachPdf is false, and logged in the report's send history. An invalid address is refused; none is dropped silently. AI summaries go out as last saved and are never rewritten, so the send spends no AI. Recurring sends are schedule_report. At most 20 assistant-started sends per workspace a day; an identical send repeated the same day is not sent twice. A report in Deleted cannot be sent. Requires MCP write actions; without confirm:true it returns a preview and sends nothing.
Inputs: reportId (required), recipients (required), confirm, message, +2 more.
set_goalADestructiveInspect
Create, change or remove a monitoring goal (Monitoring → Goals), validated exactly as the app validates one. create needs clientId, label, metric and target (period defaults to month; lowerIsBetter defaults to the metric's own direction: true for CPA and Cost per lead, false for the rest). update changes any of label, metric, target, lowerIsBetter and period on an existing goal; a new metric or period clears its current value until it is computed again. remove deletes the goal for good and, as in the app, only owners and admins may do it. Requires MCP write actions; without confirm:true it returns a preview and changes nothing.
Inputs: action (required), label, goalId, metric, +6 more.
set_link_monitorAInspect
Switch a client's weekly spam check on or off. ON reads the client's recent history once (a few cents) and then checks its new linking domains every Monday, within ONE monthly cap for all the workspace's clients (capUsd: 1, 2, 5 or 10, in DataForSEO's USD; on the Rank Tracker budget at most 2x that): the preview states the cap, what it covers, the account it runs on and the one-time read; switching on again with another cap changes the cap, and confirms a check paused by an account-type change. OFF stops it and resolves its open Signal. Requires write actions (and, to switch on, "Allow actions that spend AI"). Without confirm:true it returns a preview.
Inputs: on (required), clientId (required), capUsd, domain, +2 more.
set_prompt_tagsAInspect
Replace the tags on a single tracking prompt (tags group prompts into topics/themes for filtering and reporting). The full desired tag list is given and replaces the existing tags. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: tags (required), promptId (required), confirm, previewToken.
set_rank_scheduleAInspect
Set when a client's keywords are checked: once a week, on a weekday and hour in the client's own timezone, or switch the weekly run off. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: hour (required), weekday (required), clientId (required), timezone (required), +3 more.
set_site_audit_issue_statusAInspect
Mute or ignore an SEO audit issue for a client — the whole issue type, or one page of it with url — with a reason the team can read (required), or make it active again (status active). Muting hides it from lists, Fix first and the Signals, never from a score. Without confirm:true it returns a preview.
Inputs: status (required), issueId (required), clientId (required), url, +3 more.
stop_site_auditAInspect
Stop a client's running SEO audit crawl. What it requested so far is analysed and kept (a stopped crawl is reported as stopped, its health over the pages it reached); the pages it did not request go back to the allowance. Without confirm:true it returns a preview.
Inputs: clientId (required), confirm, previewToken.
suggest_promptsARead-onlyInspect
Suggest new AI-visibility tracking prompts for a project, in two steps. Without count it returns plan — how many prompts to add to this project and why, from its active prompts, engines, runs per prompt and trial allowance — and spends nothing; the user picks the number. With count it drafts that many buyer questions grounded in the brand, its competitors, product type, its own scan data (topics where competitors out-rank it) and, with Search Console connected, real Google queries of the last 90 days (sourceQuery, sourceImpressions). approach method (default) follows the CrunchJunkie prompt method: one open question per buyer intent across the buying stages, naming no brand, each with stage, intent and tags; broad is the older mix with competitor and brand questions. Deduped against the tracked prompts. Read-only: add_tracking_prompt adds chosen ones. Not measured AI prompt volume. It spends AI only when it drafts — with count, or with approach broad (one model call on the workspace's own key or Managed AI), counts toward 20 assistant-started scans, briefs and suggestions per workspace per day, and runs without a preview on a paid plan because it changes nothing.
Inputs: count, approach, clientId, keywords, +1 more.
switch_workspaceAIdempotentInspect
Make the connector act in another of the user's workspaces, by its id from list_workspaces. Without confirm:true it returns a preview naming the workspace, the user's role there and its write and AI-spend switches, and changes nothing. It changes only which workspace the user's connector uses, for every assistant connected with the account, until the next switch; it changes no workspace data and works even where write actions are off or the plan has lapsed. Every later call reads and writes in the new workspace, under the user's role there and that workspace's own plan and switches.
Inputs: workspaceId (required), confirm, previewToken.
translate_promptsARead-onlyInspect
AI drafts of a project's tracked prompts in another market's language, the first step of adding a market: each prompt rephrased the way people in the new market ask it, with brand and product names kept as written. Read-only: nothing is saved; the drafts are meant for review, and the final texts go to add_market as prompts. It spends AI (one or two model calls on the workspace's own key or Managed AI) and counts toward the workspace's 20 assistant-started scans, briefs and suggestions a day.
Inputs: toMarket (required), clientId, projectId, promptIds, +1 more.
unmerge_projectAInspect
Undo a merge made with merge_project or Settings → Markets: the market's prompts, answers, daily figures, content briefs, timeline notes and signals, and the Gap analysis steps the merge moved, go back to the project they came from, which becomes active again. projectId or clientId is the project the market was merged into, plus mergeId; without mergeId the result lists the merges that can be undone. Refused while a scan of either project runs. Owners and admins only. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: confirm, mergeId, clientId, projectId, +1 more.
update_project_settingsAInspect
Change a client's AI-visibility project settings beyond scanning: brand name, product type, the Brand Profile, pause or resume the project, Local-GEO fields (locality, region, Google Business Profile URL, service areas), the brand's own off-site channel URLs, the monthly perception email opt-in, target attributes, declared brand facts for fact-checking, and the Follow-up-Survival opt-in. Only the fields passed are changed; array fields replace the stored list. Changing brandName changes how mentions are matched from the next scan onward. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: active, region, confirm, isLocal, +14 more.
update_rank_keywordsAInspect
Change tracked keywords: pause or resume them (a paused keyword is not checked and costs nothing; its history stays), replace their tags, set the page the client wants to rank, or change which engines and devices are tracked. Switching an engine off keeps its history. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: clientId (required), keywordIds (required), tags, active, +6 more.
update_report_settingsAInspect
Change a report's settings that apply to all of its widgets. Takes language, excludeMetaCampaigns or both. language: the report's language (en, de, es or fr) for its labels, dates, numbers and AI text in the app, share links, PDFs and e-mails; it changes how the report reads, not its figures. excludeMetaCampaigns: Meta Ads campaigns whose name contains any of the terms (case-insensitive) are left out of every figure of the report (widgets, blends, share links, PDFs, e-mails, get_report_data), and each such widget says so in its aiNote. The full list replaces the current one; [] or null removes the exclusion; at most 20 terms of at most 100 characters. When a period's exclusion cannot be applied or verified (more than 200 matching campaigns, or a campaign list that does not add up to the account's spend), the affected widgets have no figures and get_report_data names the reason in _meta.unavailable. Requires MCP write actions; without confirm:true it returns a preview.
Inputs: reportId (required), confirm, language, previewToken, +1 more.
update_scan_settingsAInspect
Change a client's AI-visibility scan settings: answer language, market/country, the engines scanned, passes per prompt, cadence (including day, hour and timezone) and GEO-audit frequency. Only the fields passed are changed, with one exception: a changed scheduleDay or scheduleHour also writes scheduleTz so the hour keeps its meaning. Passing the values the project already has changes nothing (changed:false). Market, language and engine changes rebase the metrics, so an internal timeline note is written. A project imported from Peec AI gets no scheduled scans (its data comes from the Peec sync). Requires MCP write actions; without confirm:true it returns a preview.
Inputs: market, models, confirm, clientId, +12 more.
update_site_audit_settingsAInspect
Change a client's SEO audit settings: pages per crawl (10 to the workspace's per-crawl cap), the crawler's device (mobile or desktop), the start URL (an https page of the client's own website; null resets it to the website), URL Inspection (inspectTop: pages per crawl, 0 to 100, on the client's Search Console quota), the key-page monitor (keyPages, monitor off / daily / hourly, acceptChecks: the checks a month the call states, off by default), the parameters to ignore (ignoreParams: up to 100 query parameter names removed from every URL found, so /contact/?topic=a is crawled once as /contact/; the start URL is kept as entered; [] clears it; free, from the next crawl; a changed list is another comparison scope) and the schedule (off, weekly with scheduleDay 0-6, monthly with scheduleDay 1-28; scheduleHour UTC, default 3). A schedule is off by default and switched on only with acceptPages: the pages per crawl it will request, as the call's own answer states it (call once without acceptPages to see the cap and the most a month of it can use). The preview shows each change, before and after. Without confirm:true it returns a preview.
Inputs: clientId (required), device, confirm, monitor, +11 more.
update_tracking_promptAInspect
Change one tracking prompt's category (discovery, brand, competitor, shopping), intent, active flag, market, or its Follow-up-Survival follow-up question (followUpNarrower: the one question asked in the same conversation right after the prompt; only discovery or Commercial-intent prompts can have one; null clears it). Category moves the prompt between the brand and non-brand pools in dashboards and reports from the next render; no scan is triggered and history is untouched. The prompt text is not editable (a reworded prompt would keep the old history; a new prompt is added instead). Requires MCP write actions; without confirm:true it returns a preview.
Inputs: promptId (required), active, intent, market, +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs112 npm29 PyPIMIT
- AlicenseAqualityDmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.169 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityCmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.