PendiumDocs

Run a visibility scan

Trigger an AI visibility scan for a brand, poll for results, and read the full report and cited sources.

Measure how ChatGPT, Claude, Gemini, and AI Overviews perceive and recommend a brand. Trigger a scan, poll until it finishes, then read the score summary, the full report, historical trends, and the sources AI platforms cite.

When to use

  • Reach for this when you want a fresh, authoritative visibility measurement for an agent you own (a Starter or Pro plan is required — the scan is a write plus LLM/SerpAPI spend).
  • Scanning by url will create a new agent for the domain if one doesn't already exist; scanning by syntheticId re-scans an existing agent.
  • After a scan, turn results into work with get_recommendations, and deep-dive a cited source with analyze_url.
  • For a fast, public, shareable report without managing an agent, use the brand preview instead. For any brand's public score with no API key, use the brand score lookup.

Typical sequence

  1. scan_visibility — trigger the scan. Returns immediately.
  2. get_scan_status — poll every 30–60s until scanAvailable: true.
  3. get_report — pull the full report (raw responses, query-level analysis, topics) for deep analysis.
  4. get_cited_sources — list the URLs AI platforms cite for this brand.
  5. get_scan_history — track score trends across scans to measure content impact.

Tools

scan_visibility

Trigger an AI visibility scan for a brand across ChatGPT, Claude, Gemini, and AI Overviews. Provide either a website url (creates a new agent if needed) or a syntheticId (for an existing agent). Returns immediately — poll with get_scan_status.

Authentication: Paid (Starter or Pro). An account in read-only mode can't run a scan (it's a write plus LLM/SerpAPI spend) — the tool errors with a read-only message.

ParameterTypeRequiredDefaultDescription
urlstringOne of url or syntheticIdWebsite URL to scan. Creates a new agent if one doesn't exist for this domain.
syntheticIdintegerOne of url or syntheticIdID of an existing agent to re-scan.
mode"batch" | "full"No"batch"Both batch and full scan all 4 AI platforms with fast, cost-effective models. (Premium-model runs are an advanced opt-in, not selected by full on its own.)
maxQueriesinteger (1–100)No30Total queries to run across all platforms. 20–40 recommended. Higher values give more coverage but cost more credits.
platformsstring[]NoAdditional enterprise-only platforms to scan alongside the standard four. Options: Perplexity, Grok, DeepSeek, Qwen, MiniMax, Nemotron, Llama. Requires the enterprise plan.

Enterprise platforms: every scan covers the four standard platforms. Enterprise plans can broaden coverage via platforms. On non-enterprise accounts the requested enterprise platforms are skipped (the scan still runs on the standard four) and the response includes a droppedEnterprisePlatforms array plus an enterpriseNotice.

Behavior notes:

  • Scanning an existing syntheticId verifies ownership, checks credit balance, and — if a scan is already running — returns current progress (scanAlreadyRunning: true with a progress object) instead of starting a new one.
  • Scanning a url extracts the domain, re-scans the matching agent if one exists, otherwise creates a new brand agent (website scraping, knowledge base creation, and the scan).
  • Errors on insufficient credits (creditBalance, upgradeUrl) and returns a short maintenance message when new scans are paused for a platform upgrade (existing scans, get_scan_status, and get_report are unaffected).

get_scan_status

Poll the status of a visibility scan. Returns the full score summary when complete, or progress while running. Call every 30–60s after triggering.

Authentication: Required

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent ID to check scan status for.

Key response fields:

FieldDescription
scanAvailabletrue when the scan has finished and the score summary is present.
scanFailedtrue when this run reached no AI engine (a transient failure) — the scores are that run's real 0, not a previous good scan. Always reflects the most recent attempt; re-run if you see it.
overallScore0–100 visibility score across all platforms.
visibilityLevel"Not Visible", "Low", "Moderate", "Good", or "Strong".
platformScoresPer-platform breakdown (ChatGPT, Claude, Gemini, AI Overviews).
personaScoresScores broken down by buyer persona.
topCompetitorsBrands that appear in the same AI responses.
recommendationsActionable suggestions from the scan analysis.
reportUrlShareable link to the visual report.
brandIndexUrlLink to the brand's public Brand Index page.

While running, returns scanAvailable: false with scanInProgress: true and a progress object (completedQueries / totalQueries). Before any data exists it returns scanAvailable: false, scanInProgress: false with a "keep polling" message.

get_report

Get the full visibility report — the most detailed view available. Includes raw LLM responses, individual query analysis, cited sources, competitor data, topics, account info, and recommendations. Use after a scan completes for deep analysis.

Authentication: Required

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent ID to get the full report for.

scanFailed behaves as in get_scan_statustrue means the run reached no AI engine and the report is that run's real 0-score result, always reflecting the most recent attempt; re-run if you see it.

Compared to get_scan_status: get_report additionally returns query-level data (queryAnalysis), raw LLM responses (rawResponses), cited sources (citedSources), account info (balance, plan), and topics. Use get_scan_status for polling and quick checks; use get_report when you need per-query results, which sources AI platforms cited, or specific gaps to build content against.

get_scan_history

Get historical visibility scan scores to track trends over time and measure the impact of content you've created.

Authentication: Required

ParameterTypeRequiredDefaultDescription
syntheticIdintegerYesThe agent ID to get scan history for.
limitinteger (1–50)No10Number of historical scans to return.

Key fields: latestScore (most recent overall 0–100), scoreChange (difference between the two most recent scans, positive = improving), scoreTrend ("improving", "declining", or "stable"), and history (scan summaries, newest-first). Each history entry includes platformScores, personaScores, topCompetitors, citedSources, and queryAnalysis for detailed trend analysis.

get_cited_sources

Get the full list of URLs that AI platforms cite when discussing this brand, aggregated across all scans. Each source includes which platforms cite it, how often, an influence score, and which queries reference it. To produce a deep brief on a source, pass its URL to analyze_url.

Authentication: Required

ParameterTypeRequiredDefaultDescription
syntheticIdintegerYesThe agent ID to get sources for.
citationType"cited" | "research" | "both"Nocited: directly cited in responses. research: used as research/context. both: appears in both roles.
mentionsBrandbooleanNoFilter to sources that mention the brand (true) or don't (false).
domainstringNoFilter to a specific domain, e.g. forbes.com.
limitinteger (1–200)No50Number of sources to return.
offsetintegerNo0Pagination offset.

Returns a summary (total sources, opportunity count, how many mention you, how many are your own website) and a sources array with per-source platform, frequency, influence, and related-query data.

On this page