AuditAE SEO MCP
app.auditae/mcpVersion 0.1.1SEO MCP: Search Console, GA4, SERP and domain data, rank tracking, AI citations and site fixes.
Status
Responds270 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 13:36 UTC
- Latency
- 270 ms
- Remotes responding
- 2 of 2
- Sign-in
- OAuth sign-in, No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://auditae.app/api/mcpSign-in required270 msOAuth sign-in
Claude Code
This server asks for sign-in. Your client opens the sign-in when it connects.
claude mcp add --transport http auditae https://auditae.app/api/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: auditae
Remote MCP server URL: https://auditae.app/api/mcpCursor
{
"mcpServers": {
"auditae": {
"url": "https://auditae.app/api/mcp"
}
}
}VS Code
code --add-mcp '{"name":"auditae","type":"http","url":"https://auditae.app/api/mcp"}'Streamable HTTP
https://auditae.app/api/mcp/payResponds275 msNo sign-in
Claude Code
claude mcp add --transport http auditae https://auditae.app/api/mcp/payClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: auditae
Remote MCP server URL: https://auditae.app/api/mcp/payCursor
{
"mcpServers": {
"auditae": {
"url": "https://auditae.app/api/mcp/pay"
}
}
}VS Code
code --add-mcp '{"name":"auditae","type":"http","url":"https://auditae.app/api/mcp/pay"}'Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
41 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
add_siteCreate (or update) a site in the agent workspace and return its site_id, for the tools that take one (explore_llm_mentions, explore_web_mentions, mine_competitor_prompts, find_content_gap, crawl_site, detect_tech_stack, get_backlink_summary, submit_urls, schedule_recheck). Creates the workspace on first use and returns its API key.
Billing: bundled — free.
Example: { domain: "linear.app", brand: "Linear", competitor_domains: ["asana.com"] } | No | No | Yes | Yes |
cancel_recheckRemove a recheck from schedule_recheck before it fires (nothing was charged). One that fired can't be cancelled: already_ran with its audit_id.
Billing: free.
When to call: the user no longer wants it (to change prompts or date: cancel, then schedule again).
Returns { recheck_id, cancelled: true, already_cancelled? } or { error: not_found | already_ran | not_pending }. | Yes | No | Yes | No |
check_agent_readinessScore a site 0–100 on agent readiness: can an AI assistant acting for a buyer reach it, read what it sells and at what price, and find its machine interfaces.
Billing: free. Fetches ~10–14 URLs in 5–15 s; cached 10 min per URL; 30 uncached checks per hour per host.
When to call: agentic commerce ('can ChatGPT buy from us'), MCP or agent discoverability. Whether AI search crawlers may crawl: check_ai_crawlers; one page's SEO health: run_technical_audit.
Checks: agent fetchers allowed in robots.txt; no bot wall as ChatGPT-User; Product / SoftwareApplication / Service JSON-LD with an Offer price; prices in the pricing page's server HTML; an MCP server card; robots.txt Content-Signal; UCP/ACP checkout (stores only); A2A agent card. A store's Product markup is graded on a product page (store_reason, product_url); none found: offer_schema "na".
Returns { domain, score, grade, store, store_reason, product_url, pricing_url, schema_urls_checked, checks: [{ key, label, status: pass|partial|fail|na, earned, possible, why, detail, fix: { summary, code? } | null }], suggested_next, next_step, blocked?, not_checked? }. blocked (401/403/429/503): { http_status, as_agent_http_status, summary } plus not_checked; relay blocked.summary as written, and don't call the site invisible to AI search from it. | No | Yes | Not declared | Yes |
check_ai_crawlersWhich AI crawlers and assistants (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Perplexity-User, Google-Extended, Applebot-Extended…) may crawl a site, each with the deciding robots.txt rule; a homepage probe as AI bots for firewall/CDN blocks; paste-ready robots.txt fixes.
Billing: free.
When to call: 'can ChatGPT / AI bots reach my site', or before blaming content for lost citations. One page's full check: run_technical_audit; agents buying: check_agent_readiness.
Returns { domain, robots_txt, summary: { blocked, limited, training_blocked, unclear, likely_blocked_by_firewall, firewall_unconfirmed, robots_unknown }, bots: [{ bot, owner, purpose, verdict, robots_verdict?, firewall_note?, rule }], firewall_probe, llms_txt_blocked_for, fixes: [{ title, how: append, robots_txt, bots }], cached_at, since_last_check?, suggested_next?, next_step }. limited: a rule keeps the bot off a public page. fixes are lines to append, never a replacement; with a free fix there's no suggested_next. The probe fakes user-agents, with a faked Googlebot as control: refused too means the site likely verifies crawler IPs (firewall_unconfirmed, not blocked; confirm in server logs). suggested_next: one priced step; relay once, run only if the user agrees. | No | Yes | Not declared | Yes |
check_brand_citationAsk one question of AI answer engines now; per engine: brand URL cited?, brand named and where, competitors named, cited sources, sentiment. Saved as a citation audit.
Billing: 5–12¢ per engine check — Perplexity 5¢, ChatGPT 7¢, AI Overviews 9¢, Gemini 12¢ (33¢ a prompt on the four defaults), AI Mode 10¢ if asked; only answered checks bill (a repeat within an hour is cached but billed). Then the fix-it playbook get_fix_plan plans from (playbook: false skips it): at most 12¢ per answered check that didn't cite the brand, plus about 45¢ for a rollup when 2+ questions were lost. Default engines: 33¢ + at most 48¢ playbook. dry_run: true quotes it free.
When to call: ask the engines now about one question, or re-check one after a fix. An audit that already ran: get_audit (free); many questions: get_share_of_voice.
Returns { audit_id, report_url (public; give it to the user), results: [{engine, status, brand_mentioned, brand_url_cited, position, competitors, sources, sentiment, was_cache_hit, error_message, answer_excerpt}], citation_rate, completed, total, partial, out_of_credits, charged_cents, charged_breakdown_cents }. Past ~45 s: { audit_id, status: "running", next_step }; it finishes in the background (read with get_audit). | No | No | No | Yes |
check_citation_freeAsk one buyer question of ChatGPT, Perplexity, Gemini and Google AI Overviews and report, per engine, whether the brand's site is cited as a source, whether the brand is named, and who is named instead. Returns a shareable report link.
Billing: free — one fresh check per connection per day (repeats of the same check within 24h are free too); no account needed.
When to call: no AuditAE account yet and the user asks whether AI engines cite their brand.
Returns { brand, domain, question, cached, citation_rate, cited_on, engines: [{ engine, answered, site_cited, brand_named, position, named_instead, sources }], report_url, since_last_check?, suggested_next?, next_step }. position is the brand offset, not a rank: characters into the answer where the brand is first named (lower = named earlier; null if not named). sources are the cited URLs, utm_* tags removed. since_last_check compares with the last time this question was checked for the site (gained, lost). For more questions, the other engines' detail and fixes, a free AuditAE account runs check_brand_citation (paid per check; a new account's first audit is free). | No | No | Yes | Yes |
check_llms_txtValidate a site's /llms.txt against the llms.txt format (plain text, H1 title, summary, link sections with descriptions, links that resolve); each finding by line and severity.
Billing: free.
When to call: the user asks about llms.txt, or a crawl or audit flags it. On WordPress the free AuditAE plugin serves and maintains it automatically.
Returns { url, status, missing, verdict: pass|warn|fail, generator?, counts, findings: [{ line, severity, code, message }], links_checked, links_not_checked, links_note?, cached_at, since_last_check?, suggested_next?, next_step }. missing: no usable file (error status or fetch error). Up to 25 same-site links are opened. generator: the SEO plugin that wrote it (Rank Math, Yoast…); next_step says what its settings can and can't change. Errors or warnings: next_step is the free fix and there's no suggested_next; otherwise suggested_next is one priced step (on a paired WordPress site with no usable file, the plugin's llms.txt reset). | No | Yes | Not declared | Yes |
compare_crawlsWhat changed between two Site Audit crawls of a site: Site Health and theme deltas, new and fixed issues per check, pages added, removed or changed status, and robots.txt rule changes.
Billing: free — compares stored crawls; nothing is fetched.
When to call: after a re-crawl, to show what was fixed and what broke; then get_crawl_issue with compare "new" or "fixed" for the URLs.
Default: the latest scored crawl vs the one before with the same check version (a different settings scope gives scope_changed: true, no pages added/removed). Different check versions compare totals only (mode "summary": new/fixed null).
Returns: { site_id, run: { run_id, started_at, site_health }, base (null: first scored crawl), comparison: { mode, health: { from, to, delta }, themes, totals: { new_errors, fixed_errors, new_items, fixed_items }, checks: [{ id, severity, from, to, new, fixed }] (changed only, biggest first), pages: { added, removed, status_changed, became_broken, became_noindex, became_indexable, samples } | null, robots: { changed, added_rules, removed_rules } } | null, history (≤12), suggested_next?, next_step }. | No | Yes | Not declared | No |
crawl_siteSite Audit: the whole-site technical crawl. Fetches the homepage, sitemap and every internal link (robots.txt respected) up to max_pages, grades 170+ checks (error / warning / notice) and scores Site Health (0–100) and 9 themes.
Billing: 1¢ per 10 pages fetched (1,000 pages = $1.00, 10,000 = $10.00), billed as it crawls; link, image and script checks, site checks and Core Web Vitals on 10 pages included. Stops as "partial" if the balance runs out. dry_run: true quotes it free (estimated_cents from the sitemap size, max_cents at max_pages); confirm max_pages and the most it can cost with the user first.
When to call: 'audit my whole site' (technical SEO), or to re-check after fixes. One page: run_technical_audit; an earlier crawl: get_latest_crawl (free).
Timing: 3–6 pages a second. It runs ~40 s in this call: a small site comes back complete, a bigger one returns status "running" and keeps crawling; read it with get_latest_crawl. Core Web Vitals follow minutes later (cwv_state "pending"; never in Site Health). Optional settings (source, include/exclude, …): see each param; omit them to crawl the whole site.
Returns: { run_id, site_id, status: running|complete|partial|failed, coverage, pages_crawled, pages_found, pages_failed, skipped_by_rules, charged_cents, max_cost_cents, rejected?, site_health, counts: { errors, warnings, notices }, themes, cwv_state, checks: [{ id, severity, title, n, of }] (failing, worst first, ≤30; provisional while running), vs_previous?, note, suggested_next?, next_step }. One check's URLs and fix: get_crawl_issue (free). | No | No | No | Yes |
create_top_up_linkA Stripe Checkout link that adds prepaid credit to this workspace. Nothing is charged by this call: give url to the user, who pays by card; the credit lands seconds after payment (get_balance confirms).
Billing: free — the user pays only if they complete the checkout. The link expires after 24 hours.
When to call: a paid tool returned out_of_credits, or the credit is short for the run the user asked for. Suggest an amount that covers the planned work and say what it's for.
Returns { url, amount_cents, amount_usd, expires_at, note }. An agent workspace (no account behind it) also gets claim_url: the user opens it to sign up and take over the workspace. | No | No | No | Yes |
detect_tech_stackWhat a site runs on: CMS, ecommerce platform, analytics, JavaScript frameworks, CDN, servers and hosting (Vercel, Netlify, Heroku…). A workspace site's stack is cached on it; any other domain (a competitor) works too.
Billing: free. A workspace site's stack under 7 days old is served from its profile (detected_at); older ones are re-detected. Other domains: 50 new lookups a day per workspace, cached 24 h.
When to call: before writing fix instructions, to tailor them to the platform (WordPress vs Shopify vs Webflow vs a custom Next.js app).
Returns { site_id (null for a non-workspace domain), domain, detected_at, detected_cms, is_wordpress, technologies: { cms, ecommerce, analytics, javascript, cdn, servers, hosting }, all, note? }, or detected: false when the index has no data. Errors: provider_unavailable (retry), rate_limited. From DataForSEO's index, which can lag a recent platform change. | No | Yes | Not declared | Yes |
discover_brand_entitiesFind a brand's Wikidata entity, the URLs for Organization.sameAs (Wikidata, Wikipedia, X, LinkedIn, Crunchbase, GitHub, YouTube, Facebook, Instagram), its official site and its Google Knowledge Graph entity.
Billing: free — public APIs, no LLM tokens.
When to call: before writing Organization schema (wp_set_organization_schema), Article.publisher or Product.brand. Always pass domain.
Strict match: found:true only when the entity's Wikidata official website matches domain, or you pin qid. Otherwise found:false, same_as [] and candidates: never use a candidate's URLs unless the user confirms it's their brand (then call with its qid). google_kg follows the same rule; google_kg_status not_confirmed ≠ no entity; unavailable: conclude nothing.
Returns { found, domain_matched, matched_by, wikidata_qid, label, official_site, same_as, detail: {wikipedia_url, twitter, linkedin, crunchbase, github, youtube, facebook, instagram}, candidates, google_kg | null, google_kg_status: matched|not_confirmed|unavailable, site_same_as?: [{url, resolves}] (the homepage's own sameAs, checked live; resolving ones are safe to keep), next_step? }. | No | Yes | Not declared | Yes |
explore_llm_mentionsWhich AI answers cite a domain, or what AI answers say for a keyword, from an already-crawled corpus (Google AI Overviews worldwide, ChatGPT US/EN): each answer, its sources (position, date), where the checked domain sits, AI search volume trend. Any domain, incl. prompts no audit asked. Saved as a report.
Billing: 75¢ at most per call — 5¢ per prompt found, at least 30¢. Not billed when nothing is found or the lookup fails. dry_run: true quotes it free.
When to call: coverage beyond your own audits ('where does asana.com get cited in AI answers'). Prompts competitors win in the site's audits: mine_competitor_prompts; one audit: get_audit.
Returns { report_id, url, target, platform, checked_domain, prompt_count, prompts_citing_checked_domain, unique_domains_cited, charged_cents, prompts: [{question, answer_preview, target_position, target_in_answer, sources: [{domain, url, position, publication_date?}], ai_search_volume, trend}] }: the 25 prompts with most AI search volume. checked_domain: the target (domain pull) or the site's domain (keyword pull); target_position: its 1-based place among sources (null: not cited). | No | No | No | Yes |
explore_web_mentionsOpen-web pages (news, blogs, forums, stores, organizations) mentioning a brand or keyword, with a snippet; pages about the brand are tagged positive / negative / neutral. Saved as a report.
Billing: 25¢ per call — one flat fee whatever the limit. Not billed when nothing is found or the lookup fails.
When to call: what the web (not AI answers) says about the brand: press, reviews, forums, mention targets. AI answers: explore_llm_mentions.
Returns { report_id, url, keyword, mode, total_count, sample_count, relevance: {about_brand, listing, own_page, off_topic, excluded}, relevance_note (relay it), sentiment: {positive, negative, neutral}, charged_cents, mentions: [{kind, sentiment?, domain?, url?, title?, snippet?, date_published?}] (≤50, about the brand first) }. sentiment counts only kind about_brand pages (not namesakes, own pages or listings). | No | No | No | Yes |
extract_competitors_from_textRead any text (e.g. an AI answer) and return the competitor brands it names and the sentiment toward the brand (positive | neutral | negative). Skips the brand, AI assistants and search engines cited as sources, and platforms the work runs on. The extractor audits use.
Billing: free — uses no AuditAE credit and works at a zero balance.
When to call: to classify an answer you already have, without paying for engine checks.
Returns { competitors, sentiment, charged_cents: 0, error? } (error: it couldn't run; competitors is empty). | No | Yes | Not declared | No |
find_citation_sourcesThe pages AI engines cite where the brand isn't — listicles, directories, reviews, forums, news, videos, competitors' pages — from the site's audits, as outreach targets: typed, checked for whether they name or link the brand, ranked by leverage, each with a next step. Asks no engine.
Billing: 10¢ per site per 24h; repeats and other filters that day are free. Not billed when nothing in scope was lost (no_data, nothing_lost, no_sources) or on an error.
When to call: after get_audit shows lost prompts, or when asked where to get listed or why AI cites other sites.
Returns { scope, summary: {lost_cells, prompts_lost, cited_pages, by_type, brand_absent_on}, targets: [{rank, url, host, type, competitor, brand_on_page, title, submit_url, own_listing?, dated_prompts?, lost_prompts, engines, example_prompts, leverage, why, next_step: {action, detail, tool?, args?}}], more_targets, notes, charged_cents }. type: listicle | review_site | directory | forum | news | article | video | social | company_page | docs | reference | other. brand_on_page: linked | mentioned | absent | unknown | not_checked (top 15 fetched). Outreach is the user's call: present targets, draft a pitch only when asked, save the pick with update_site_brief. | No | No | Yes | Yes |
find_content_gapThe Google keywords a competitor ranks for that the site doesn't, and those where it outranks the site, ranked by opportunity.
Billing: 25¢ per run; the same inputs within 24h are free from cache. Not billed on a rejected site / competitor_domain or when no keywords come back.
When to call: 'what does <competitor> rank for that we don't'. AI-answer gaps: mine_competitor_prompts.
Returns { rows: [{keyword, search_volume, cpc_cents, competition (Ads 0–1), kd (0–100), intent, competitor_position, user_position, competitor_url, user_url, gap_kind: they_rank_we_dont|they_outrank_us|co_ranked, relevance, opportunity, tags?}], dropped, max_competitor_position, cache_hit, charged_cents }. Order: on-topic first, real gaps first, then opportunity = volume × position weight × relevance (0–1, overlap with the site's questions and keywords). tags: off_topic, other_brand / brand_review (half weight), comparison. Brand searches are dropped unless include_brand_queries. Not on the site's list: competitor_not_on_site with valid_competitor_domains. | No | No | Yes | Yes |
generate_schemaBuild a complete schema.org JSON-LD object (Article, BlogPosting, HowTo, FAQPage, Product, Organization, BreadcrumbList, WebSite, SoftwareApplication, Service, LocalBusiness) from a few fields, then validate it.
Billing: free — deterministic, no network, no LLM tokens.
When to call: instead of hand-writing JSON-LD. Pipe `schema` into wp_set_*_schema once validation.valid. sameAs: discover_brand_entities first; publisherId links to the Organization's @id.
Returns { schema, validation, ignored_fields (likely typos: fix and re-run), notes (rewritten values, e.g. '15 minutes' → PT15M), suggested_next?, next_step? }. Relative URLs resolve against data.siteUrl (else rejected); @handles in sameAs are rejected. Bad input: isError listing every problem. | No | Yes | Not declared | No |
get_auditRead a citation audit that already ran: per prompt and engine, brand cited or named, competitors cited or named, cited URLs; summary rates, the playbook's top actions, a report_url. Asks no engine. (The technical Site Audit is crawl_site.)
Billing: free, at any balance.
When to call: before paying for new checks, to see where competitors are cited instead (list_sites' latest_audit.audit_id); then get_fix_plan. Across all the site's audits: mine_competitor_prompts.
Returns { audit_id, brand, domain, status, engines, prompt_count, competitor_domains, visibility_score, failure_reason, report_url, charged_cents (0), audit_charged_cents (what the run billed), summary: {answered, total, cited, mentioned, citation_rate, mention_rate, branded, non_branded, prompts_lost, by_engine, competitors: [{domain, cited_cells, cited_where_brand_not}], top_cited_domains, top_competitors_mentioned, suggested_competitor_domains, suggested_sources}, do_this_first?: [{priority, title, description, closes_lost_cells, target_hosts, verified, already_done?, evidence?}], results: [{prompt, engines: [{engine, status, cited, mentioned, competitors_cited, competitors_mentioned, urls, answer_excerpt?}]}] }. summary covers every cell; filters narrow only results. branded / non_branded: rates over questions naming / not naming the brand. do_this_first: the playbook's top 3 open actions, re-checked now on the live site (already_done: skip). suggested_competitor_domains: untracked hosts cited instead (confirm before add_site). | No | Yes | Not declared | No |
get_backlink_summaryA domain's off-page authority: domain rank (0–1000, higher = stronger), backlinks, referring domains, dofollow referring domains, spam score (0–100, higher = more links from spammy sites) and broken backlinks; a major reason competitors out-rank and out-cite a site. A workspace site or any domain (a competitor).
Billing: free. A workspace site's snapshot is cached on it for 24 h; other domains: 50 new lookups a day per workspace (repeats within 24 h don't count).
When to call: 'why do they outrank us', or to compare authority with a competitor. Which sites link (names, anchors): get_referring_domains (paid).
Returns { site_id (null for a non-workspace domain), target, rank, backlinks, referring_domains, dofollow_referring_domains, spam_score, broken_backlinks, note? }, or found: false when the index has no data. Errors: provider_unavailable (retry), rate_limited. | No | Yes | Not declared | Yes |
get_balanceThe workspace's prepaid credit: balance, what a new paid run can use, each engine's check price and about how many checks that covers, auto-refill, and today's free allowances.
Billing: free — works at a zero balance.
When to call: before a large paid run (get_share_of_voice on many prompts, crawl_site on a big site; their dry_run: true gives the exact quote), or after out_of_credits. Paid results already carry balance_cents after their charge.
Returns { balance_cents, balance_usd, available_cents (less credit held by runs in flight), prices_cents_per_check, estimated_checks_left, auto_refill | null, spend_approved (true: the user approved agents spending this credit without asking per call; the balance is the limit), billing_url (null for an agent workspace: use create_top_up_link), free_today?: { technical_audit?: {used, of, then_cents} }, first_topup_match: { eligible, cents } | null (eligible: the first top-up is matched up to cents), suggested_next?, next_step? }. When the credit can't cover one citation check and auto-refill is off, suggested_next is create_top_up_link for $10: relay it once. | No | Yes | Not declared | No |
get_changesWhat moved for a site: its weekly briefing (this week's moves, up to 5 priced fixes), citations gained or lost per question and engine since the run before (for a loss, who was cited instead), tracked Google keywords that moved, and the latest crawl vs the one before.
Billing: free — reads stored results; works at a zero balance.
When to call: at the start of a session about a site, when the user asks what changed, or after a monitor run.
Returns { briefing: {week_of, headline, stats, summary, findings, offers, dashboard_url} | null, briefing_status?, site_id, domain, headline (relay it), your_changes?: {recorded, waiting_for_results, note, changes: [{changed_on, page_url, change_type, summary, source, after_14_days?, after_28_days?, next_result_on?}]} (edits to the site and what happened after; relay each result's sentence as written, and don't claim the change caused it), citations: {current, previous, compared_cells, cited_before, cited_after, gained: [{prompt, engine, brand_url}], lost: [{prompt, engine, cited_instead, competitors_named}], mention_gained, mention_lost} | null, keywords: {tracked, up, down, unchanged, dropped_out, entered, moved: [{keyword, position, previous_position, change, url}]} | null, monitor | null, crawl: {site_health, health_delta, new_errors, fixed_errors, top_new_errors} | null, next_step, suggested_next? }. Spot checks (under 3 questions, no monitor) aren't compared. Relay the briefing's fixes with prices; run one only if the user agrees. | No | Yes | Not declared | No |
get_competing_domainsThe domains competing with any domain in Google: who ranks for the most of the same keywords, how many they share, their average position on those, and each one's keyword count and estimated traffic. Big generic sites and competitors sharing too few keywords are left out. Data: DataForSEO's Google index; estimates.
Billing: 10¢ per call. Not billed when nothing comes back or the call fails; the same call within 24h is free. No-account server: one free data call a day without credit.
When to call: who a domain's search competitors are (e.g. to pick competitors to track); then get_domain_keywords on one to see what it ranks for.
Returns { domain, country, coverage: {indexed_keywords, confidence, note}, competitors: [{domain, shared_keywords, overlap_pct, avg_position, shared_keywords_traffic, organic_keywords, estimated_monthly_traffic, broad_site}], dropped_low_overlap, cached, charged_cents }. broad_site: shared keywords under 0.25% of the competitor's own (a big generic site, not a direct rival; listed last). Dropped: under 3 shared keywords, or under 1% of the domain's. confidence low: under 100 known keywords, so the list is a sample. | No | No | Yes | Yes |
get_crawl_issueOne Site Audit check from a site's latest crawl (or run_id): what it means, why it matters, how to fix it, which MCP tools fix it, and the affected URLs with evidence, paginated.
Billing: free — reads the stored crawl; nothing is fetched.
When to call: on a failing check from crawl_site / get_latest_crawl (checks[].id) before fixing it; with compare "new" / "fixed" after a re-crawl.
Returns: { site_id, run_id, check: { id, title, severity, themes, scope, rule, why, fix, fix_tools, semrush_ids }, status: fail|pass|not_run|pending, n, of, items: [{ url, evidence }], total, next_offset, groups?, compare?, vs_previous?, note? }. Site-wide checks have one item; duplicate and broken-link checks add groups on the first call. After fixing: submit_urls with the changed URLs, then crawl_site to confirm. error run_predates_checks: crawl again. | No | Yes | Not declared | No |
get_domain_keywordsThe Google keywords any domain ranks for (its own or a competitor's), by the traffic each sends: position, ranking URL, volume, CPC, difficulty, intent; plus totals (organic keywords, estimated monthly traffic and its ad value, new / up / down / lost). Data: DataForSEO's Google index, monthly; estimates, not Search Console numbers.
Billing: 10¢ per call. Not billed when nothing comes back or the call fails; the same call within 24h is free. No-account server: one free data call a day without credit.
When to call: what a domain ranks for (a competitor's best pages, a site's keyword footprint). A connected site's real clicks: query_search_console; ideas for a topic: keyword_research.
Returns { domain, country, totals, coverage: {indexed_keywords, confidence: low|medium|high, note}, keywords: [{keyword, position, previous_position, url, search_volume, cpc_usd, keyword_difficulty, intent, estimated_traffic}], volume_source, cached, charged_cents }. position is organic; previous_position last month's. estimated_traffic = volume × the click-through rate at that position (#1 ≈ 28%, #10 ≈ 2%, page 2 ≈ 1–0.5%, past 30 none). coverage.confidence low (under 100 indexed keywords): the index sees only part of a small site's queries. | No | No | Yes | Yes |
get_fix_planTurn the site's audits into a ranked list of exact edits that get the brand cited by AI engines instead of competitors — sentences, FAQs, title and meta, JSON-LD, missing pages. Checks the live site first.
Billing: 50¢ per plan. Free (charged_cents=0): repeats within 24h, errors, and plans with nothing left to fix or only drafts/off-site work. dry_run: true quotes it free.
When to call: before editing a site for AI search, or when asked what to fix or why competitors get cited. page_url (recommended): one page, from the audit about it, else its Search Console queries; without it, site-wide.
already_done: true fixes are live (see evidence): skip. audit_stale (over 21 days) or site_changed_since_audit: say so, re-check first. draft: true fixes state facts the site doesn't show (needs_input): the user confirms or supplies each; never publish a draft as-is. Apply via how_to_apply, each fix's `apply` and `code` for `platform` (paired WordPress: the wp_* tools in `tools`); then submit_urls, inspect_url, and schedule_recheck with verify_prompts and audit_id.
Errors (unbilled; see message): site_not_found, audit_not_found, audit_brand_mismatch, no_audit, nothing_to_fix, not_diagnosed, no_relevant_audit, nothing_left_to_fix, truncated, empty_plan, fetch_failed (retry), not_configured, page_fetch_failed, page_not_on_domain, out_of_credits.
Returns { summary, platform, how_to_apply, fixes: [{priority, kind, page, title, why, already_done, evidence, draft?, needs_input?, find?, replace?, content?, faq?, meta?, code?, apply, tools, closes_prompts}], verify_prompts, site_check, audit_id, audit_stale, report_url, charged_cents, cache_hit }. | No | No | Yes | Yes |
get_keyword_metricsSearch volume and more for up to 60 known keywords: monthly Google volume (Google Ads' 12-month average, the source every AuditAE tool uses), the last 12 months, trend, CPC, ad competition, difficulty (0–100) and intent. Trends compare calendar months: monthly = last month vs the one before; quarterly / yearly = the median of the last 3 months vs the 3 before / a year earlier.
Billing: 10¢ per call (1–60 keywords). Not billed when nothing comes back or the call fails; the same call within 24h is free. No-account server: one free data call a day without credit.
When to call: volumes and difficulty for a list you already have. New ideas around a topic: keyword_research.
Returns { country, volume_source, keywords: [{keyword, search_volume, monthly_searches, data_through, trend_pct: {monthly, quarterly, yearly}, cpc_usd, competition, keyword_difficulty, intent}], not_found, not_found_detail, cached, charged_cents }. intent is corrected by the query's words, so a singular and its plural agree. not_found: no Google Ads volume in this country (too rare, too new, or counted under a close variant); Search Console can still show impressions for one. | No | No | Yes | Yes |
get_latest_crawlRead a site's latest Site Audit crawl (or run_id): Site Health 0–100, theme scores, failing checks, what wasn't checked, problem pages and the last 5 runs.
Billing: free — reads the stored run; nothing is fetched.
When to call: after crawl_site returns "running", or to read an earlier crawl. One check's URLs: get_crawl_issue; what changed between two crawls: compare_crawls (both free).
Staleness: stale: true (over 30 days old, or before the 2026-09-24 crawler fixes): don't verify fixes against it. coverage "legacy": before Site Audit checks (issue rollup only); "partial": stopped early, Site Health covers the pages crawled. cwv_state "pending": read again in minutes. Never report not_run checks as passed.
Returns: { site_id, run: { run_id, status, completed_at, pages_crawled, billed_cents, settings, … }, stale, coverage, stage, site_health, counts, themes: { <id>: { score, failing, ran } }, cwv_state, checks: [{ id, severity, title, n, of }] (≤40, worst first), not_run: [{ id, reason }], vs_previous? (incomplete_baseline: a capped earlier crawl inflates new), history, schedule, theme?, check?, issues_summary, pages_view, pages_total, next_offset, pages, suggested_next?, next_step, note? }. provisional: true while crawling. { run: null }: never crawled. | No | Yes | Not declared | No |
get_recheckRead a recheck from schedule_recheck. Before it runs: status and run_at. After: per prompt and engine, baseline vs recheck — citations (brand URL in sources) and mentions gained or lost.
Billing: free — reads stored results only; asks no engine and works at a zero balance.
When to call: when asked whether fixes worked, or once run_at has passed. recheck_id reads one; site_id/domain lists the site's; nothing lists the workspace's.
Status: scheduled | queued | running | complete | failed | paused (site archived; it won't run).
Returns { recheck_id, status, headline (relay it), site_id, domain, run_at, ran_at, prompts, engines, baseline, audit_id, report_url, failure_reason, out_of_credits, answered, total, charged_cents, summary: {compared_cells, cited_before, cited_after, mentioned_before, mentioned_after, citation_gained: [{prompt, engine}], citation_lost, mention_gained, mention_lost, no_baseline}, results: [{prompt, engines: [{engine, before, after, after_error, citation, mention}]}] }. citation / mention: gained | lost | kept | still_missing, null if a side has no answer. A list: { rechecks: [{recheck_id, status, domain, run_at, ran_at, prompt_count, audit_id}] }. | No | Yes | Not declared | No |
get_referring_domainsThe sites linking to any domain (the workspace's own or a competitor's), strongest first: each referring domain's rank (0–1000), live backlinks, dofollow, first seen and spam score, plus the top anchors and totals. Data: DataForSEO's backlink index.
Billing: 20¢ per call. Not billed when nothing comes back or the call fails; the same call within 24h is free. No-account server: one free data call a day without credit.
When to call: which sites link to a domain (link-building targets, a competitor's links). Counts only (rank, totals, spam score): get_backlink_summary, free.
Returns { target, total_referring_domains, total_anchors, referring_domains: [{domain, rank, backlinks, dofollow, first_seen, new?, spam_score, likely_spam?}], dofollow_share, new_last_30_days, likely_spam, top_anchors, suggested_next?, cached, charged_cents }. Live links only. likely_spam: spam score 30+ (paid or PBN links are a risk, not a win). suggested_next compares with the site's first competitor, or the competitor with the site. | No | No | Yes | Yes |
get_serpLive Google results for any keyword in a country: the organic top 10–30, whether an AI Overview shows and which domains it cites, the featured snippet owner, People Also Ask, the SERP features and, with target_domain or site_id, where that site ranks. position = organic place, 1 = first result (features not counted), as Search Console and track_keywords count it.
Billing: 5¢ per call. Not billed when nothing comes back or the call fails; the same call within 24h is free. No-account server: one free data call a day without credit.
When to call: who ranks for a keyword right now, whether its AI Overview cites a domain, or a look at the results before rewriting a page. To watch a keyword weekly: track_keywords.
Returns { keyword, country, device, ai_overview: {present, cited_domains}, featured_snippet_owner, people_also_ask, serp_features, results: [{position, domain, url, url_source?, breadcrumb?, unresolved?, title, description}], hidden_url_count, own_position?: {domain, status: found|not_found|unknown, position, url, ai_overview_cited}, google_url, cached, charged_cents }. Results Google hides behind a redirect are followed to the real page; if one can't be read, its domain comes from the breadcrumb (url from another link to the page, url_source; else null with breadcrumb naming the page). unresolved: no site could be read. own_position also searches 10 extra results. | No | No | Yes | Yes |
get_share_of_voiceAsk up to 25 questions of AI answer engines now and measure the brand's and each competitor's share: URL cited among the sources, and brand named. Saved as a citation audit.
Billing: 5–12¢ per engine check, per answered prompt × engine (a repeat within an hour is cached but billed) — Perplexity 5¢, ChatGPT 7¢, AI Overviews 9¢, Gemini 12¢ (33¢ a prompt on the four defaults), AI Mode 10¢ if asked. Then the fix-it playbook get_fix_plan plans from (playbook: false skips it): at most 12¢ per answered check that didn't cite the brand, plus about 45¢ for a rollup when 2+ questions were lost. E.g. 10 prompts, default engines: 330¢ + about 525¢ playbook if nothing cites the brand. dry_run: true quotes it free. Engines get ~4 min; unfinished checks are skipped unbilled (partial, timed_out): split runs past ~15 prompts.
When to call: share of voice across many buyer questions, fresh. One question: check_brand_citation; an audit that already ran: get_audit (free).
Returns { audit_id, report_url (public), tracked: [{domain, is_brand, cite_count, share_pct, mention_count, mention_share_pct}], total_cites, total_mentions, sample: {answered_checks, prompts, confidence, note}, suggested_competitor_domains, suggested_sources, completed, total, partial, timed_out, out_of_credits, charged_cents, charged_breakdown_cents }. Relay sample.note (confidence low = few answers). suggested_competitor_domains: untracked hosts winning lost answers (confirm before add_site); suggested_sources: places to earn mentions. Past ~45 s: { audit_id, status: "running" }; read it with get_audit. | No | No | No | Yes |
list_sitesEvery active site in this workspace with its site_id, domain, brand, tracked competitor domains, latest citation audit, WordPress pairing and Google connections.
Billing: free — a read-only lookup; works at a zero balance.
When to call: first, for the site_id values (every site-scoped tool takes site_id or domain) and each site's competitor_domains (pass only those as competitor_domain); also when the user asks which sites or competitors are tracked. Pass latest_audit.audit_id to get_audit (free) to see where competitors are cited instead.
Returns { sites: [{ site_id, domain, brand, name, competitor_domains, created_at, latest_audit: { audit_id, completed_at, prompt_count, engines, citation_rate (0–1), report_url } | null, wordpress: { wp_site_id, status } | null, google: { search_console, analytics, reconnect_required?, connect_url? }, briefing | null, memory?: { notes, updated_at } | null, competitor_hints? }], next_step?, suggested_next? }. latest_audit includes check_brand_citation / get_share_of_voice runs on the domain; report_url is public: give it to the user. wp_site_id is what the wp_* tools take. google false: give connect_url (a one-time Google sign-in) before query_search_console / query_google_analytics; reconnect_required: true means the Google sign-in stopped working, so nothing can be read until the user reconnects at connect_url. memory: the notes in the site's memory (read them with get_site_brief where this server offers it); null: none yet; missing: not available here (agent workspaces), or the memory listing failed or ran out of time. competitor_hints: tracked competitors no answer cited in 60 days (maybe a wrong domain): raise them, never applied. Empty list: ask for the domain and call add_site. | No | Yes | Not declared | No |
mine_competitor_promptsThe prompts where competitors' URLs were cited in the site's own audit history (MCP runs on its domain included) but the site's weren't — one competitor, or all at once. Asks no engine.
Billing: 5¢ per call, one competitor or all. Not billed when the site or competitor_domain is rejected, the scan fails, or nothing was answered in the window (total_prompts_scanned 0).
When to call: 'what is <competitor> cited on that we're not', 'who beats us in AI answers' across the site's audits (omit competitor_domain for all, one call). One audit: get_audit (free); prompts no audit asked: explore_llm_mentions.
Returns { rows: [{prompt, competitor_url (one competitor) or winning_urls + competitors_cited (all), engines_competitor_cited_on, last_cited_at, user_brand_mentioned, leverage, winnable, flags?}], competitors? (all: [{competitor_domain, prompts_won, high_leverage, pure_loss, engines}]), leverage_legend, total_prompts_scanned, window_days, charged_cents }. leverage: high_leverage = brand named but not URL-cited (closest gap), pure_loss = not named either. winnable false (flags dated / other_brands_head_to_head): usually not worth a fix. A competitor not on the site: competitor_not_on_site with valid_competitor_domains. | No | No | No | Yes |
monitor_citationsTurn on, change or pause recurring citation monitoring for a site: AuditAE re-asks its buyer questions weekly (or monthly), keeps every answer, and emails the owner when a citation is gained or lost. One schedule per site; calling again updates it.
Billing: free to schedule; when it runs, 5–12¢ per engine check per question × engine answered, plus the fix-it playbook (about 12¢ per uncited check + about 45¢ rollup), plus a 25¢ report per run. cost_per_run_cents estimates it. dry_run: true quotes it free and changes nothing: say per-run and monthly cost, enable only after the user agrees. No credit at run time pauses it.
When to call: the user wants citations watched over time. One later re-check: schedule_recheck; what moved: get_changes (free).
Returns { monitor_id, site_id, domain, status: active|paused, cadence, next_run_at, prompts, engines, created, checks_per_run, cost_per_run_cents, cost_breakdown_cents, monthly_estimate_cents, next_step }. | No | No | Yes | No |
optimize_imageShrink images for page speed: resize to max_width (never enlarging), compress to WebP (or keep the type with format "original") and step down toward the 200 KB large_images limit without visible loss. Returns a private download link (48 h) per image, sizes before and after, and a paste-ready <img> tag.
Billing: 1¢ per 5 images optimized (rounded up per call); free when an image saves under 10 KB or 10%, when an image CDN already serves WebP/AVIF under 200 KB (served_optimized), for errors and skipped files, and for a repeat within 24h. 300 images an hour per workspace.
When to call: after get_crawl_issue(large_images): site_id or domain optimizes the latest crawl's images over 200 KB, largest first; or urls for any public image.
Returns: { items: [{ url, status: optimized|optimized_still_over_limit|already_optimized|skipped|failed|not_processed, reason?, before, after, saved_bytes, saved_pct, download_url?, filename, expires_at, snippet?, references_to_update, billed, repeat_free? }], totals, charged_cents, next_offset?, note, next_step }. Follow next_step, then submit_urls and crawl_site to confirm. SVG and animated images are skipped; past 45 s, unfinished images come back not_processed (free). | No | No | Yes | Yes |
run_technical_auditTechnical SEO check of one page (a domain's homepage, or `url`): meta tags, JSON-LD types, headings, robots.txt (sitemaps, AI crawlers blocked), /llms.txt, bot protection, and graded Core Web Vitals (PageSpeed Insights mobile + desktop, real-user CrUX).
Billing: 2¢ per page after 3 free pages a day; a page already audited today (incl. the PSI re-poll) or that didn't load is free. 30/hour per host.
When to call: one page's technical health or Core Web Vitals. Whole site: crawl_site (the Site Audit, 1¢ per 10 pages). Not the citation audit (get_audit).
Timing: ~10 s. A PSI strategy still "pending": call again after pagespeed_retry_after_seconds (free; waits up to 38 s). Cached 10 min.
Returns: { url, final_url, redirected, response_status, fetch_error, meta, schema_types, headings, robots: { found, status, sitemaps, ai_crawlers: { allowed, blocked, fix } | null }, llms_txt, pagespeed: { mobile, desktop } | null, cwv_summary?, pagespeed_note?, field_data?, bot_protection?, billing, latest_crawl?, suggested_next, next_step }. Each strategy: { status: ok|error|pending, score (0–100), lcpSec, inpMs, clsUnitless, fcpSec, ttfbSec, tbtMs, field, grades }; grades rate each metric good|needs_improvement|poor, core_web_vitals pass|fail|null (field data only). Lab = one Lighthouse run; field = real-user p75. bot_protection { verdict: checker_refused|ai_blocked|verifies_bots, note, fix? }: relay its note. | No | No | Yes | Yes |
schedule_crawlTurn on, change or stop a site's automatic Site Audit re-crawl, weekly or monthly at a fixed hour 05:00–10:00 UTC. Each run crawls up to max_pages like crawl_site, is compared with the crawl before (compare_crawls) and emails the owner the Site Health change and new and fixed issues. One schedule per site; calling again changes it and resumes a paused one.
Billing: free to schedule; when it runs, 1¢ per 10 pages fetched, billed as each run crawls; a run that hits a zero balance pauses the schedule.
When to call: after a crawl, to keep watching the site. Omit cadence (or dry_run: true) to read the schedule and quote; say max_cost_per_run_cents and monthly_estimate_cents to the user and turn it on only after they agree. Crawl settings passed are kept for every run.
Returns: { site_id, domain, schedule: { cadence, weekday, day_of_month, run_hour_utc, max_pages, notify, next_run_at, paused, paused_reason, last_run_at, last_skip_reason, settings? } | null, cost_per_run_cents (at the last crawl's size), max_cost_per_run_cents, monthly_estimate_cents, last_crawl_pages, rejected?, created?, resumed?, stopped?, dry_run?, note }. paused_reason out_of_credits: create_top_up_link, then call again with the cadence. | No | No | Yes | No |
schedule_recheckSchedule a one-time re-ask of prompts N days from now, to see whether published fixes got the brand cited — typically get_fix_plan's verify_prompts with its audit_id as baseline. Nothing runs or bills now.
Billing: free to schedule; when it runs, 5–12¢ per engine check (33¢ a prompt on the four defaults, ai-mode 10¢) per prompt × engine answered; no playbook. estimated_cost_cents assumes every check answers; short on credit then, only what the balance covers runs.
Limits: 25 waiting per workspace, 25 prompts each; cancel_recheck removes one.
When to call: after fixes are published, to learn later whether engines now cite the brand (days to weeks; an answer now: check_brand_citation).
Runs on the daily 06:00 UTC pass at or after run_at, with fresh answers; read it with get_recheck.
Returns { recheck_id, status: "scheduled", site_id, domain, run_at, prompts, engines, checks, baseline: {audit_id, completed_at} | null, prompts_without_baseline (after-only results), estimated_cost_cents, charged_cents: 0, note? }. | No | No | No | No |
submit_urlsTell Bing, Yandex, Naver and Seznam (IndexNow) that pages on a workspace site changed so they re-crawl sooner (not a guarantee of indexing). Google doesn't use IndexNow; Bing's index feeds ChatGPT search and Copilot.
Billing: free. At most 30 calls per hour per org that reach the key-file check.
When to call: after changed pages go live on a site that isn't a paired WordPress site (the plugin pings IndexNow itself). Submit only changed URLs: IndexNow throttles hosts that resubmit unchanged ones.
Key file: IndexNow needs https://<host>/<key>.txt served; if it isn't, nothing is submitted and status is "key_file_missing" with the filename and contents to publish, then call again.
Returns: { status: "submitted" | "not_accepted", site_id, host, key_location, submitted_urls, rejected: [{ input, reason }], duplicates_removed, batches: [{ host, url_count, http_status, ok, meaning }] } (200/202 accepted; 403 key file missing or wrong; 422 URLs don't match the host; 429 slow down) | { status: "key_file_missing", key_file: { url, filename, contents }, how_to_fix, wordpress? } | { status: "no_valid_urls", rejected }. | No | No | Yes | Yes |
validate_schemaCheck a schema.org JSON-LD object before it ships: every node and the nested items engines read (FAQ answers, breadcrumbs, HowTo steps, Product offers/ratings, addresses), each issue with a property path.
Billing: free — local check, no network, no LLM tokens.
When to call: before every wp_set_post_schema / wp_set_organization_schema / wp_set_faq_schema write and on hand-edited JSON-LD (generate_schema already validates).
Types: Article, BlogPosting, HowTo, FAQPage, Product, Organization, BreadcrumbList, WebSite, SoftwareApplication, Service, LocalBusiness, WebPage, Person and subtypes. Checks: schema.org @context, absolute URLs, ISO 8601 dates/durations, enums, ISO 4217 currencies, plain-number prices, Product offers/review/rating; misspelled properties warn.
Returns { valid, type, checked_types, issues: [{severity: error|warning|info, property, message}], suggestions, suggested_next?, next_step? }. Fix every error and re-validate before writing; each message says whether the rule is Google's or AuditAE's. | No | Yes | Not declared | No |
Details
- Registry status
- Active
- Published
- Oct 9, 2026
- Updated
- Oct 9, 2026
- Repository
- Not given
- Categories (suggested)
- Marketing and SEOSearch and webSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared