# Deprecated: schedule lives on the project (410 Gone) Source: https://docs.openlens.com/api-reference/account/deprecated:-schedule-lives-on-the-project-410-gone /api-reference/openapi.json get /settings/schedule Use `/projects/{id}/schedule` instead. # List the caller's allowed platforms (read-only entitlement) Source: https://docs.openlens.com/api-reference/account/list-the-callers-allowed-platforms-read-only-entitlement /api-reference/openapi.json get /settings/platforms # Return the caller's effective rate limits and quotas Source: https://docs.openlens.com/api-reference/account/return-the-callers-effective-rate-limits-and-quotas /api-reference/openapi.json get /me/limits # Token usage and scraper spend, aggregated by model and call type Source: https://docs.openlens.com/api-reference/account/token-usage-and-scraper-spend-aggregated-by-model-and-call-type /api-reference/openapi.json get /usage # Top cited domains for the latest or selected run Source: https://docs.openlens.com/api-reference/citations/top-cited-domains-for-the-latest-or-selected-run /api-reference/openapi.json get /sources # Top topics where your own brand was mentioned, with the URLs cited Source: https://docs.openlens.com/api-reference/citations/top-topics-where-your-own-brand-was-mentioned-with-the-urls-cited /api-reference/openapi.json get /brand-mentions-summary # Download a client-ready PDF visibility report Source: https://docs.openlens.com/api-reference/deliverables/download-a-client-ready-pdf-visibility-report /api-reference/openapi.json get /reports/visibility Renders a multi-page PDF for the chosen run. `runId` is required — the caller picks the run from `/reports/runs`. Optionally include the full per-prompt detail via `includePrompts=1`. # Recent run history for the report picker Source: https://docs.openlens.com/api-reference/deliverables/recent-run-history-for-the-report-picker /api-reference/openapi.json get /reports/runs # AI-generated insight paragraph for one topic and run Source: https://docs.openlens.com/api-reference/metrics/ai-generated-insight-paragraph-for-one-topic-and-run /api-reference/openapi.json get /insights/topic Synthesises visibility, attribute, and citation data for the topic into a 2–3 sentence actionable insight. Pass runId to read a specific completed run. Returns 404 when the project has no usable run or the topic is unknown. # Per-platform source behavior patterns for the latest or selected run Source: https://docs.openlens.com/api-reference/metrics/per-platform-source-behavior-patterns-for-the-latest-or-selected-run /api-reference/openapi.json get /insights/engines # Time-series visibility for a brand or all competitors Source: https://docs.openlens.com/api-reference/metrics/time-series-visibility-for-a-brand-or-all-competitors /api-reference/openapi.json get /visibility/trends # Visibility scores for the latest usable or selected run Source: https://docs.openlens.com/api-reference/metrics/visibility-scores-for-the-latest-usable-or-selected-run /api-reference/openapi.json get /visibility Default returns an array of `VisibilityScore` (one per brand). Pass runId to read a specific completed run. Use `type=topics` for a per-topic summary, `type=attributes&topicId=…` for a per-attribute breakdown, or `topicId=…` alone for a single topic's scores. # Analyze a brand or confirm a new project Source: https://docs.openlens.com/api-reference/onboarding/analyze-a-brand-or-confirm-a-new-project /api-reference/openapi.json post /onboard Two-step onboarding over Server-Sent Events. `action: analyze` researches a URL and proposes competitors and topics. `action: confirm` creates the project and generates prompts. The response stream emits `data:` lines with progress events followed by a final event with `status: "complete"` and the payload. # Add a brand (competitor or own) Source: https://docs.openlens.com/api-reference/resources/add-a-brand-competitor-or-own /api-reference/openapi.json post /brands # Add a custom prompt-attribute value Source: https://docs.openlens.com/api-reference/resources/add-a-custom-prompt-attribute-value /api-reference/openapi.json post /projects/{id}/prompt-attributes # Archive a custom prompt-attribute by value Source: https://docs.openlens.com/api-reference/resources/archive-a-custom-prompt-attribute-by-value /api-reference/openapi.json delete /projects/{id}/prompt-attributes # Archive a project (soft delete) Source: https://docs.openlens.com/api-reference/resources/archive-a-project-soft-delete /api-reference/openapi.json delete /projects/{id} # Create a new project Source: https://docs.openlens.com/api-reference/resources/create-a-new-project /api-reference/openapi.json post /projects # Create a prompt under a topic Source: https://docs.openlens.com/api-reference/resources/create-a-prompt-under-a-topic /api-reference/openapi.json post /prompts # Create a topic; prompts are generated in the background Source: https://docs.openlens.com/api-reference/resources/create-a-topic;-prompts-are-generated-in-the-background /api-reference/openapi.json post /topics # Delete a brand Source: https://docs.openlens.com/api-reference/resources/delete-a-brand /api-reference/openapi.json delete /brands # Delete a topic and its prompts Source: https://docs.openlens.com/api-reference/resources/delete-a-topic-and-its-prompts /api-reference/openapi.json delete /topics # Get the project's active platforms and the caller's entitlement Source: https://docs.openlens.com/api-reference/resources/get-the-projects-active-platforms-and-the-callers-entitlement /api-reference/openapi.json get /projects/{id}/platforms # Get the project's scan schedule Source: https://docs.openlens.com/api-reference/resources/get-the-projects-scan-schedule /api-reference/openapi.json get /projects/{id}/schedule # List allowed prompt-attribute values for the project Source: https://docs.openlens.com/api-reference/resources/list-allowed-prompt-attribute-values-for-the-project /api-reference/openapi.json get /projects/{id}/prompt-attributes # List brands in a project (your own + competitors) Source: https://docs.openlens.com/api-reference/resources/list-brands-in-a-project-your-own-+-competitors /api-reference/openapi.json get /brands # List prompts, optionally filtered by topic or fetched by id Source: https://docs.openlens.com/api-reference/resources/list-prompts-optionally-filtered-by-topic-or-fetched-by-id /api-reference/openapi.json get /prompts # List topics in a project Source: https://docs.openlens.com/api-reference/resources/list-topics-in-a-project /api-reference/openapi.json get /topics # List your projects Source: https://docs.openlens.com/api-reference/resources/list-your-projects /api-reference/openapi.json get /projects # Rename or archive an existing custom prompt-attribute Source: https://docs.openlens.com/api-reference/resources/rename-or-archive-an-existing-custom-prompt-attribute /api-reference/openapi.json patch /projects/{id}/prompt-attributes # Set the project's active platforms Source: https://docs.openlens.com/api-reference/resources/set-the-projects-active-platforms /api-reference/openapi.json put /projects/{id}/platforms # Soft-delete a prompt Source: https://docs.openlens.com/api-reference/resources/soft-delete-a-prompt /api-reference/openapi.json delete /prompts # Update a brand's aliases Source: https://docs.openlens.com/api-reference/resources/update-a-brands-aliases /api-reference/openapi.json patch /brands # Update a project Source: https://docs.openlens.com/api-reference/resources/update-a-project /api-reference/openapi.json put /projects/{id} # Update prompt text, attributes, or active flag Source: https://docs.openlens.com/api-reference/resources/update-prompt-text-attributes-or-active-flag /api-reference/openapi.json put /prompts Editing prompt text after results exist requires an explicit choice. The first call returns 409 with `requiresConfirmation: true` (plus `tracked` and `inFlightRun` hints); resend with `confirmClone: true` to clone-and-supersede (the original is deactivated with its history intact — recommended for tracked prompts) or `confirmOverwrite: true` to edit in place (unavailable while a run is in flight). # Update the project's scan schedule Source: https://docs.openlens.com/api-reference/resources/update-the-projects-scan-schedule /api-reference/openapi.json patch /projects/{id}/schedule # Cancel the running run for a project Source: https://docs.openlens.com/api-reference/runs/cancel-the-running-run-for-a-project /api-reference/openapi.json delete /prompts/run # List a project's prompt run history Source: https://docs.openlens.com/api-reference/runs/list-a-projects-prompt-run-history /api-reference/openapi.json get /prompts/runs Returns paginated prompt runs with status, timestamps, platforms, and task totals. Use a completed run's id as runId on historical analytics reads. # Poll the status of a run Source: https://docs.openlens.com/api-reference/runs/poll-the-status-of-a-run /api-reference/openapi.json get /prompts/status Pass `runId` for a specific run, or only `projectId` to fetch the project's most recent run. Live count fields distinguish retrieved provider outputs from evidence-ready analyzed outputs. Returns `status: "none"` when no run exists yet. # Raw platform responses from the latest usable or selected run Source: https://docs.openlens.com/api-reference/runs/raw-platform-responses-from-the-latest-usable-or-selected-run /api-reference/openapi.json get /prompts/results Returns enriched platform responses (one per prompt × platform) with parse state plus trusted brand mentions, citations, and attributes. Pass runId to read a specific completed run, or pair it with allowIncompleteRun=1 for live partial results. Empty array when no usable run exists. # Start (or resume) a prompt run Source: https://docs.openlens.com/api-reference/runs/start-or-resume-a-prompt-run /api-reference/openapi.json post /prompts/run Kicks off a fresh scan across the project's active platforms. Returns immediately with a `runId`. If a previous run was interrupted, this resumes it instead of starting a new one. Concurrent runs against the same project return 409. # Changelog Source: https://docs.openlens.com/changelog/overview What's new in OpenLens. ## Site Readiness, rebuilt around the pages and fixes that matter This release turns Site Readiness into a technical SEO workspace for understanding how search systems discover, access, render, and index your site. It also adds geographic AI visibility, live prompt-run results, per-run scope, and bulk prompt imports. ### New **A new Site Readiness Mission Control.** New Site Readiness runs replace the single overall score with a clearer view of your site's actual condition: which pages are search-ready, at risk, blocked, or not yet checked; which important pages need attention; how much of the site was measured; and what changed since the previous compatible run. The search-system view follows the journey a page takes through **Discover, Fetch, Render, Index, Experience, and Appear**. Missing evidence stays visibly unknown instead of being counted as a pass. **A prioritized technical SEO worklist.** Repeated page-level problems are grouped into root causes, so a template problem affecting 200 pages appears as one piece of work instead of 200 disconnected warnings. Each item explains what OpenLens observed, why it matters, which pages are affected, and what to do next. **Evidence-backed fix packages.** For supported issues, OpenLens can produce a copy-ready fix or a bounded engineering brief for the exact page, group of pages, template, or site file you select. Every package includes the proposed change, expected result, verification steps, rollback guidance, and the evidence used to create it. OpenLens does not silently edit your site or claim that copying a fix solved the problem. After you make the change, run a targeted recheck to see whether the original condition is fixed or still detected. **A visual map of your site.** The new Site Graph shows the internal links OpenLens actually observed. Explore how pages connect, find isolated or weakly linked areas, filter by page condition, and move from a page directly into its findings and fixes. A searchable page inventory provides the same evidence without requiring the visual graph. **Per-run scope.** Choose the exact prompts and available platforms for an individual manual run without changing the project's saved configuration. The temporary selection applies only to that run, while project defaults and scheduled runs remain unchanged. This makes it easy to run focused investigations or compare different configurations back to back without repeatedly editing project settings. **Geographic AI visibility.** Agency teams can run prompts across multiple selected countries and compare visibility, sentiment, brand performance, and competitor performance by market. Each run preserves its exact geographic scope, and reports include the country breakdown alongside a compact world map. **Bulk prompt imports.** Add up to 50 prompts at a time from pasted content or uploaded CSV, JSON, JSONL, Markdown, and text files. Review and edit the extracted prompts, assign their topics, and resolve duplicates before anything is saved. ### Improved **Site Readiness runs are durable and resumable.** Large scans now save their progress page by page. If a run is interrupted, OpenLens can continue the same run from its last completed checkpoint instead of repeating finished work or losing the evidence already collected. Active scans show their current stage, elapsed progress, page coverage, and partial results as they arrive. You can cancel a run without discarding completed evidence, and unused reserved page allowance is returned automatically. **Google performance evidence now lives with Site Readiness.** Connect Search Console and GA4 to prioritize technical findings using search exposure and AI-referral activity. Each run keeps its own aggregate snapshot, so reopening an older run shows the evidence available at that time rather than replacing it with today's data. Traffic data is used for prioritization, not as proof that a technical issue caused a ranking or traffic change. **Visibility results appear while a run is still active.** Open an exact prompt run and watch its dashboard fill in as platform responses arrive. The page stays clearly marked as running, never mixes in results from a previous run, and transitions in place when the run finishes. **Larger multi-market runs use your available credits.** We removed the old 750-execution limit. A run that fits within your organization's available monthly credits is no longer blocked by an additional arbitrary per-run ceiling. **Clearer handling of historical Site Readiness reports.** Existing score-based reports remain available as Legacy reports. New runs use the evidence-based Mission Control model, so historical results stay readable without being presented as directly comparable to the new assessment. **Better detection of background problems.** OpenLens now records structured operational signals when onboarding jobs, Site Readiness, Content Audit, billing, authentication, caching, or model fallbacks degrade behind the scenes. This gives the team a faster path from a partial or unexpected result to its underlying cause. ### Fixed **Duplicate topic names fail gracefully.** Adding an existing topic, or receiving the same topic twice in one request, no longer produces a generic server failure. OpenLens distinguishes newly created topics from duplicates and only generates prompts for topics that were actually added. ### For API and MCP users **Country context is preserved throughout prompt runs.** Country-aware runs retain the requested and effective market context with their response evidence, allowing integrations to distinguish results from different markets without mixing run scope. **Safer topic creation.** Topic creation through REST and MCP now deduplicates repeated names and handles concurrent attempts without surfacing a user-facing database error. ### Questions? If a Site Readiness result looks wrong, a market is unavailable for a platform, or an import does not parse as expected, email [contact@aibread.com](mailto:contact@aibread.com) and we'll sort it out. ## Connected community access, historical run data, and smoother workflows This release makes community connection available from the app, improves several core workflows, and gives API and MCP users better access to historical run data. ### New **Connect Discord from your account settings.** Teams can now link a Discord account from OpenLens, join the community flow, and keep their connection visible from the Connections page. The connection can also be removed from the same settings area. **Historical run access for API and MCP users.** API and MCP workflows can now request supported historical run data by run ID, instead of only reading the latest run. This makes it easier to build repeatable reports, revisit prior analyses, and compare results over time. ### Improved **Content Audit active runs are lighter.** Active Content Audit pages now poll with smaller payloads, so long-running audits stay responsive while they update. **Search & Traffic setup points to the right place.** Setup actions now take you directly to the Google integrations area, with clearer focus on the connection step. **Invitation and role management is clearer.** Invitation flows now explain when you are signed in with the wrong account, and organization owner-role changes are guarded so admins cannot accidentally grant owner access where an existing owner is required. **Privacy policy data protection details.** The privacy policy now includes a clearer data protection section for connected account review and verification flows. ### For API and MCP users **Run-specific reads.** Supported REST and MCP run reads now accept a run identifier so agents and integrations can request a specific historical run. Missing or invalid run identifiers return safe errors instead of falling back to ambiguous data. ### Questions? Something not working the way you expect? Email [contact@aibread.com](mailto:contact@aibread.com). ## A cleaner OpenLens workspace, richer run history, and new ways to earn credits This release refreshes the OpenLens app shell so navigation, settings, project context, and audit workflows feel more consistent across the product. It also makes past work easier to revisit: prompt runs, Site Readiness, AI Indexing, and Content Audit now share clearer history views with names, statuses, filters, and direct report actions where available. ### New **A refreshed OpenLens workspace.** The dashboard, sidebar, settings, account menu, and project navigation have been redesigned around a more consistent app structure. It is easier to move between organization settings, project settings, audit tools, and run history without losing context. **Run history across the product.** Prompt Runs, Site Readiness, AI Indexing, and Content Audit now use richer history tables with clearer names, statuses, timestamps, sorting, filtering, and pagination. Open a past run to review its results, copy its ID, rename it for your team, or download a report when your plan includes that export. **Earn Free Credits.** Eligible teams can now earn extra OpenLens credits from inside the app by joining the OpenLens community, following launch channels, and inviting teammates. Progress is tracked in the app so you can see what is complete and what remains. **Join the OpenLens community on Discord.** The app now links to the current [OpenLens Discord community](https://discord.gg/3gTCaJjURu) from the Free Credits experience, giving teams a direct place to follow updates and get help. ### Improved **Cleaner settings and billing language.** Plan, billing, usage, and pricing copy now consistently uses credits terminology, so app limits, plan pages, docs, and MCP-facing messages all describe the same unit. **More predictable project context.** Site Readiness, AI Indexing, and Content Audit now follow the project in the URL more consistently. Refreshing, sharing, or switching between audit pages is less likely to restore stale project context. **Better Site Readiness and AI Indexing controls.** Run controls, page selectors, cooldown messages, loading states, and disabled states are clearer and more consistent. Site Readiness and AI Indexing now keep separate cooldowns, so starting one does not unnecessarily block the other. **Smoother organization and invite flows.** Organization creation, switching, invite acceptance, and post-auth routing have been tightened so users land in the right place more reliably after sign-up, organization selection, or invitation acceptance. **More resilient run and report behavior.** Cancelled prompt runs now stay marked as cancelled, report download actions show steadier feedback, and run rows are less likely to surprise you with stale or ambiguous status. ### For API and MCP users **Credit-limit language is clearer.** MCP-facing limit and usage messages now use the same credits terminology as the app and docs, making allowance and run-cost messages easier to understand. ### Questions? Something not working the way you expect? Email [contact@aibread.com](mailto:contact@aibread.com). ## An AI agent inside OpenLens, plus your Google data alongside AI visibility The headline this release is a built-in AI agent that works inside your project. It also brings Google Search Console and Analytics data next to your AI visibility, and makes onboarding and the dashboard smoother. ### New **An AI agent inside OpenLens.** Open the agent from any project and ask about your AI visibility in plain language. It can look across your prompts, brands, and runs, pull together an answer, and build finished documents for you as PDF, Word, or PowerPoint. When a request is ambiguous it asks a quick clarifying question instead of guessing, you can redirect it while it works, and it checks in before making changes to your project. Anything it produces is yours to download. **Connect Google Search Console and Google Analytics.** Link your Google accounts to see classic-search clicks, impressions, and average position next to your AI visibility, plus how much traffic AI assistants are sending your way. You connect once for your organization, and each project picks which properties to use. This context sits alongside AI visibility; it doesn't change how visibility is scored. ### Improved **Onboarding remembers where you left off.** Starting your first analysis now saves as it runs, so a refresh or a closed tab picks up your results instead of dropping you back at an empty form. **A faster dashboard.** Pages after sign-in load and switch more quickly and smoothly, especially when moving between projects. ### For API and MCP users **Search the docs from your tools.** New MCP tools let an assistant search the OpenLens documentation and pull the recommended steps for common tasks, so it can answer setup questions without leaving your workflow. ### Questions? Something not working the way you expect? Email [contact@aibread.com](mailto:contact@aibread.com). ## Sturdier runs and honest refunds No big new surface this time. v1.4.0 is a consolidation release: fixes and improvements that make runs finish reliably and keep billing honest. ### Fixed **Stalled scheduled runs recover on their own.** A scheduled visibility run that got stuck used to sit "running" forever and quietly block new runs for that project. Stuck runs are now detected and restarted automatically. **Scheduled runs are never blocked by manual-run limits.** Guards built to stop rapid manual clicking no longer apply to your schedule, so two projects due in the same window both run. **Canceling an AI Indexing run refunds what it should.** Cancel before pages start checking and the full reservation comes back. Cancel mid-run and the dialog shows exactly how many pages are billable and how many return to your allowance. Canceling twice can no longer refund twice. **One run of a kind at a time.** Starting the same check twice on one project now brings the second attempt to the already-active run instead of creating a duplicate. This is enforced at the database level, so it holds even under simultaneous clicks. **Readiness keeps your www pages on apex domains.** If your site redirects example.com to [www.example.com](http://www.example.com), page discovery now keeps all your sitemap URLs instead of dropping them. **Failed AI Indexing pages show as failed.** Individual page failures can no longer stall a run or hide in the report. **The billing page no longer flickers on first load.** A mismatch between the server-drawn and browser-drawn page forced a visible re-render for some users. Both now draw the same page. ### Improved **AI Indexing reports are shareable links.** Every run has a stable URL you can reload, bookmark, or paste to a teammate. Reports stay sign-in protected: someone else's run link shows "not available," never your data. **Delete topics and brands without losing history.** Deleting now hides the item from management and future runs while keeping every past report intact, and you can re-add the same name later. **A clearer plan comparison.** The pricing and billing pages share one rebuilt plan table that reads correctly in both light and dark mode. **Visibility report PDFs show progress.** A generating state replaces the silent wait. ### For API and MCP users **Batch writes.** The MCP write tools now accept batches, so an agent can set up prompts, topics, and competitors in a few calls instead of dozens. **Breaking MCP tool renames.** Batch-capable write tools were renamed to plural forms and now take arrays: `add_competitor` → `add_competitors`, `delete_topic` → `delete_topics`, and so on. If you call these tools directly, update your integration before your next run. The [MCP tools reference](/mcp/tools) lists the current names. **A video walkthrough of the MCP server.** The MCP docs page now embeds a short Loom showing setup end to end. ### Questions? If a refund looks wrong or a run misbehaves, email [contact@aibread.com](mailto:contact@aibread.com) and we'll sort it out. ## AI Index Coverage, Content Audit, and a cleaner MCP surface Two new tools answer the questions agencies keep asking: which of my pages do AI platforms actually know about, and what should I fix first to get cited. The MCP server also gets a safety and naming cleanup. ### New **AI Index Coverage.** Point a run at your site and see, page by page, whether ChatGPT, Claude, and Gemini have your content indexed. Every page gets a clear verdict: indexed, not indexed, or unknown. It lives on its own page in the dashboard, next to Site Readiness. We validated the checks against a hand-labeled dataset, so verdicts are measured, not guessed. When we mark a page indexed on ChatGPT or Claude, we only count pages the assistant actually cited or returned, so those verdicts are highly accurate. Gemini is a lower-confidence signal, since it can occasionally surface a URL it reconstructed rather than one it retrieved, and we are actively tightening it. A run also harvests the citations it already collected and uses them to confirm pages other checks missed, which recovers real coverage at no extra cost. Free includes a monthly page allowance so you can try it on a real site; paid plans raise the cap and unlock full per-page detail. **Content Audit.** Audit your whole site for how well each page can be cited by AI, then work a prioritized list instead of a wall of data. Each page gets a citation-potential score. You get an ordered worklist of what to fix first, an impact-versus-effort view, and a side-by-side of the current text against a stronger version you can copy. A cross-reference helper points you at a page you already wrote that does the weak part well, so you can mirror it. Free orgs see every page's score and the worklist; full fix detail, rewrites, and PDF export are on Starter and Agency. Monthly page allowances are 30 on Free, 1,000 per paid seat on Starter, and 10,000 per paid seat on Agency. ### Improved **Larger page allowances on multi-seat plans.** AI Indexing and Readiness page allowances now scale with the number of paid seats in your organization, so larger teams get proportionally more room without changing plans. **More accurate AI Indexing on Free.** The citation cross-check that upgrades a "not indexed" page to "indexed" now runs for everyone, including Free, so free runs report the same corrected coverage paid runs do. ### For API and MCP users **Breaking MCP tool renames.** If you call these tools directly, update your integration before your next run. * `manage_schedule` is replaced by `get_schedule` (read) and `update_schedules` (write). **Read and write are now separate, and every tool says which it is.** No tool both reads and writes anymore, and each one carries a hint marking it read-only or as making changes. Compatible MCP clients can run reads without a per-call confirmation and prompt before anything that modifies or deletes. Tools that consume your plan's allowance now say so in their description. **New MCP tools.** Agents can drive the two new features end to end: * `run_ai_index_coverage`, `get_ai_index_coverage_run`, `list_ai_index_coverage_runs` * `run_content_audit`, `get_content_audit_status`, `get_content_audit_results`, `list_content_audits` * Site Readiness is now MCP-callable too: `run_readiness_check`, `get_readiness_run`, `list_readiness_runs`. ### Questions? If a verdict looks wrong, a limit doesn't fit how you work, or a renamed tool is blocking you, email [contact@aibread.com](mailto:contact@aibread.com) and we'll sort it out. ## Site & Agent Readiness Readiness is a new product surface that audits your own site instead of measuring what AI platforms say about you. It crawls a project's site, scores how discoverable and retrievable it is to AI agents and crawlers, and tells you exactly what to fix. It lives at **Readiness** in the dashboard, alongside your visibility view. ### New **Readiness runs and a score out of 100.** Point a run at your site and get an overall readiness score with a verdict, broken down across six categories: Discoverability, Content Accessibility, Bot Access Control, Protocol Discovery, Agentic Commerce, and Agentic Browsing. Every check is marked pass, warn, or fail, and carries the issuing authority and maturity behind the standard it tests (Sitemaps.org, IETF, Cloudflare, Google, Schema.org, and more). Results stream in live as the run crawls, check by check. **Run history.** Every run is saved per project. Reopen any prior run in full detail to see how the site has changed. **Tiered scope and a monthly page allowance.** Two levers control how much a run crawls: a per-run page cap and a calendar-month pooled page allowance. A run that exceeds your balance is clamped to what's left, not blocked. Lighthouse sampling stays small and flat, so larger crawls never slow runs down. See [limits and allowances](/pricing/limits) for the per-plan numbers. **A real taste on Free.** Free orgs run a full scan, see the overall score and every check's status, and get full detail on the first two flagged checks. Upgrade for full detail on every check. **Scheduled runs.** Starter schedules weekly or monthly; Agency adds daily. A schedule fires automatically so your score keeps tracking your site. **PDF export, branding, and share links.** Download any run as a PDF, plain or branded with your logo and brand color, with standards-credibility marks. Agency plans can publish a public, revocable share link to a run. **Agent Journey waitlist.** Join the waitlist for Agent Journey from the Readiness surface. ### Questions? If something looks wrong or a limit doesn't fit how you work, email [contact@aibread.com](mailto:contact@aibread.com) and we'll sort it out. ## A small signup addition, and reliability work behind the scenes Most of this release was internal plumbing to make the product more reliable. One change is visible when you sign up. ### New **"Where did you find us?" on sign-up.** New accounts can tell us how they found OpenLens. It's optional and takes one click. It helps us learn which channels bring in the people who get the most out of the product. ### Improved **Steadier behind the scenes.** We tightened how account and subscription changes flow through our systems and moved tracing onto a faster pipeline, so fewer things slip through the cracks. Nothing in your dashboard changes. ### Questions? Email [contact@aibread.com](mailto:contact@aibread.com) any time. ## Teams, plans, and your full platform coverage This release turns OpenLens into a multi-seat product. You can now bring your whole team and your clients into one workspace, pick a plan that fits how you work, and track every major AI platform, including Grok, which is back. Existing accounts keep their current limits as a permanent floor, so nothing you rely on today gets smaller. ### New **Organizations, seats, and client logins.** Your workspace is now an organization you can invite people into. * **Roles that match how agencies work.** Owners and admins manage the account; members do the work; clients get a read-only login to see only their own projects. * **Seats only count editors.** Viewers and client logins are free and unlimited. You pay for the people who actually run and edit work, not for everyone you want to show a dashboard to. * **Invite teammates and clients** from your organization settings, and move a teammate's project access around without removing and re-adding them. **Starter and Agency plans.** Two paid plans, each with a 7-day free trial and a 15% discount if you pay annually. See [plans and pricing](/pricing) for what each tier includes. * **Starter** is for a single brand or a small team: up to 5 projects, with weekly tracking across the core platforms. * **Agency** is for running many clients: unlimited projects and seats, daily tracking, and Claude and Grok included. * Every plan includes the REST API, the MCP server, prompt attributes, full docs, and a public status page. * Read the full announcement in [Introducing Starter and Agency](/blog/introducing-starter-and-agency). **A Usage page.** A single place to see your plan, your seats, and how much of your monthly output allowance you've used, so there are no surprises. **Grok is back, and Claude is included on Agency.** We restored Grok coverage through a direct API integration, with citations, and Agency plans now include both Claude and Grok alongside ChatGPT, Perplexity, Google AI Overview, Gemini, and DeepSeek. ### Improved **Existing accounts are protected.** Every account that existed before this launch keeps its current limits as a floor, permanently. The new plan limits never claw back what you already had. If you were tracking more than the new defaults allow, you keep what you were using. **A more reliable sign-in.** We fixed several sign-in and sign-up issues, including a hang on the sign-up button in some browsers, accounts with two-factor authentication, and Google sign-up not always carrying you through to the app. **A refreshed dashboard.** The interface got a research-grade visual refresh, a new logo, and a faster, denser dashboard. **A public status page.** Check live platform health any time at [openlens.com/status](https://openlens.com/status). ### For API and MCP users No breaking changes. No endpoints or MCP tools were renamed or removed, and existing API keys keep working. Two things are new: * **Organization-scoped API keys and MCP.** You can now issue keys at the organization level, and MCP sessions see the projects in your active organization. Your existing personal keys continue to work unchanged. * **Per-plan usage on API and MCP.** API and MCP calls are now metered against your plan. Each plan includes a monthly allowance; once you pass it, calls return a clear message with an upgrade prompt instead of failing silently. ### Questions? If a limit doesn't fit how you work, or something looks wrong, email [contact@aibread.com](mailto:contact@aibread.com) and we'll sort it out. ## Durable prompt runs and sharper brand detection This release rebuilds the engine behind prompt runs so they survive restarts and deploys without dropping or duplicating prompts, sharpens how we detect your brand and competitors, and adds alias management to project settings. ### New **Durable, crash-safe prompt runs.** We rebuilt how a prompt run executes. Each run is now tracked task-by-task in the database rather than only in memory, so a run keeps a complete, accurate record of which prompts and platforms it covers even if the server restarts mid-run (which happens routinely on every deploy). * **No more dropped or duplicated prompts.** If a run is interrupted, it resumes from exactly where it left off instead of re-running work it already finished or silently skipping work it hadn't reached. * **Self-recovering runs.** A run that gets stranded by a server restart is now detected and driven to completion on its own, instead of blocking that project's future scheduled runs until someone notices. Scheduled reports are far less likely to show a gap. **Brand alias management.** You can now edit the list of aliases for each brand directly from project settings. Trade names, initialisms, short forms. OpenLens uses that list when deciding whether a mention in an AI answer is really your brand (or a competitor), so keeping it accurate directly improves your numbers. ### Improved **More accurate brand detection.** Brand matching now records which alias triggered each mention, so a mention is tied to the exact name it matched on. That makes detection easier to audit and tightens the line between a real mention and a coincidental substring. Historical reports are not auto-corrected. They reflect the detection logic that was live when the run happened. Run a fresh scan if you want a project re-scored against the latest logic. **More complete answer coverage.** * **Google AI Overview retries.** When a search doesn't surface an AI Overview on the first try, OpenLens now retries before recording it as absent, so transient misses don't understate your visibility. * **Consistent outcome recording.** Answers from every platform now consistently record whether they returned content, so success and no-content cases are reported accurately across all platforms. ### For API and MCP users No breaking changes for API or MCP integrations in this release. No endpoints or MCP tools were renamed or removed, and no request or response shapes changed in a way that requires you to update an existing integration. ### Known issues **Grok coverage is temporarily unavailable.** Grok has moved its responses behind a paywall, which has taken our Grok scraper offline. Until we restore it, prompt runs with Grok enabled will complete every other platform normally but will not return Grok results. We're actively working on a fix. If Grok is a critical platform for your reporting, reach out and we'll let you know as soon as coverage is back. ### Questions? If something broke, looks wrong, or you want a project re-scored against the latest brand-detection logic, email [contact@aibread.com](mailto:contact@aibread.com). ## Prompt attributes and clearer naming The last two releases (May 8 and May 16) shipped a new way to slice your data, more AI platforms behind the scenes, and a cleaner vocabulary throughout the product. ### New **Prompt attributes.** Tag every prompt with one or more attributes. Branded vs non-branded, language, or any custom label you define per project (intent, funnel stage, persona, region). Every dashboard, metric, and report can now be filtered by those tags, so you can answer questions like "how do we rank on non-branded prompts in Spanish?" in one click. * **Manage attributes** from the new *Prompt Attributes* section under project settings. Create, rename, and archive option lists per project. * **Edit attributes in place** on any prompt. Analytics recompute against the live label set, so re-tagging is instant. * **Auto-tagging on new prompts.** When OpenLens generates prompts during onboarding, it now also assigns attributes automatically using Claude Sonnet 4.6. * **Live filter preview.** The attribute filter shows which prompts will be included while you build the filter, before you apply it. **Grok and Gemini coverage.** OpenLens now scans Grok and Gemini alongside ChatGPT, Perplexity, Google AI Overview, Claude, and DeepSeek. New projects can enable either one from the platform picker; existing projects can turn them on from project settings. **Public docs.** We launched public documentation, including the [MCP server setup guide](/mcp/overview) and the [REST API reference](/api-reference/introduction). The original URL `openlens.com/docs` 301-redirects here. ### Improved **Clearer terminology.** We renamed two long-standing concepts so the product matches how agencies actually talk about the work: * **Keywords** are now **topics**. A topic is the underlying buyer-intent theme; the prompts under it are the actual questions sent to AI platforms. * **Queries** are now **prompts**, and a query run is now a **prompt run**. All dashboards, settings, navigation, and exports use the new names. Old URLs continue to redirect. **More accurate brand detection.** We rewrote the brand-matching logic to cut both false positives (mentions of unrelated brands that happened to share a substring) and missed short forms (initialisms and trade names). Brands now carry an explicit alias list you can edit from project settings. Historical reports are not auto-corrected. They reflect the detection logic that was live when the run happened. If you want a project re-scored against the new logic, run a fresh scan or contact us. ### For API and MCP users **Breaking changes.** The terminology rename and the new attributes system change a handful of endpoints and MCP tools. If you build on the API or have an agent connected via MCP, please update before your next scheduled run. **REST API renames.** * `/api/queries/run`, `/api/queries/status`, and `/api/queries/results` are replaced by `/api/prompts/run`, `/api/prompts/status`, and `/api/prompts/results`. * The onboarding confirm payload accepts `topicList` in place of `keywordList`. The legacy field is still accepted during the transition. **MCP tool renames.** * `run_queries` becomes `run_prompts` * `get_query_results` becomes `get_prompt_results` * `add_keyword` becomes `add_topics`, and the rest of the `query_*` and `keyword_*` tool surface follows the same rename. * `add_prompt` now requires a non-empty `attributes` array. The simplest valid value is `["branded"]` or `["non-branded"]`. You can also pass any custom attribute already defined on the project. **New MCP tools.** Agents can now manage prompt attributes end-to-end: * `list_prompt_attributes`, `add_prompt_attributes`, `archive_prompt_attributes`, `unarchive_prompt_attributes` **PostHog event renames.** If you mirror OpenLens analytics into your own warehouse: event names `query_run_*` are now `prompt_run_*`, and `keyword_*` events are now `topic_*`. Every event also stamps a `form_factor` property (`web`, `api`, `mcp`, or `cron`) so you can split usage by surface. ### Questions? If something broke, looks wrong, or you want a project re-scored against the new brand-detection logic, email [contact@aibread.com](mailto:contact@aibread.com). # How OpenLens sources data Source: https://docs.openlens.com/data-sources Two channels, one schedule. What we measure and how. OpenLens reads how AI models actually answer real questions about your brand. To do that we send queries through two channels, and which one we use depends on the model. ## The two channels For ChatGPT, Perplexity, Google AI, and Gemini, we send queries through the same chat interfaces consumers use. We work with partner infrastructure providers to send those queries, on a schedule. The responses come back the way a consumer would see them, including citations and the actual UI structure. For Grok, Claude, and DeepSeek the same approach is not viable at this time, so we use their public APIs. That means we get the same model and the same answers a developer would see, plus search context where the API exposes it. No web UI in the loop. Mechanically the two channels differ. The scoring downstream treats them the same. ## Google Search and traffic context OpenLens can also connect to Google Search Console and Google Analytics (GA4). These integrations do not power AI visibility scoring. They add run-pinned project evidence in [Site Readiness Performance](/manual/readiness#performance): classic-search clicks, impressions, CTR, average position, and AI-referrer sessions from GA4. Google connections are organization-level OAuth connections. Each project selects the specific Search Console and GA4 properties it should use in Settings. ## Chat UI vs API The chat UIs and the APIs are sometimes different products. Citations, formatting, and live search behavior can differ between what a model returns through its API and what the same model returns inside its consumer-facing chat app. When we can use the chat surface we do. That keeps the measurement honest with what your prospects actually see. ## Your own Google data The channels above are OpenLens measuring the platforms. There is a third source, and you own it: connect Google Search Console and GA4 and OpenLens reads your search performance and AI-referred traffic straight from Google's APIs. Read-only aggregate evidence is pinned to each Site Readiness run; no user-level events or journeys are stored. Setup and MCP details are in [Site Readiness Performance](/manual/readiness#performance). ## FAQ ### What is the difference between web access and API? When you log on to chatgpt.com you're using OpenAI's consumer product, which wraps the model in a UI with live search, citations, ad rules, and other features that aren't always in the API. The API gives you the raw model. For most of our supported platforms we measure the consumer surface, because that's where users actually meet your brand. ### Why can't you use the chat UI for Grok, Claude, and DeepSeek? Different vendors expose their products differently. For Grok and Claude we use their public API plus live web search. DeepSeek's API has no web search, so its answers come from the model alone, and they are representative of what the model says about you. ### How often do you run queries? On a schedule, at a cadence that depends on your plan: weekly or monthly on Free and Starter, plus daily on Agency. You pick the cadence and the time of day (UTC) per project in Settings. You can also kick off an on-demand run anytime: the **Run Now** button at the top of the dashboard, `POST /api/prompts/run` via the REST API, or the `run_prompts` tool via MCP. On-demand runs work independently of the schedule. ### Do you stress the platforms? No. Queries are spread across the network and rate-limited, well below normal consumer use. ## Agent measurement (beta) The two channels above measure what AI models say about you in their chat surfaces. We also have early support for measuring what AI **agents** do at your actual site. These channels are in beta. Contact us if you want access. ### Agent traffic (passive) With CDN-level access to your site, OpenLens identifies agent traffic as it arrives. You see which agents are hitting your site, what they're doing, and where they bounce off. We don't change what your site serves. We record what hits. ### Agent visibility (active) We send live agents at your site and record how they interact. Claude Code, Manus, ChatGPT Agent, and others as they appear. The recording captures where they get stuck, what they extract, what they decide to do, and what they think while they browse. The chat-surface channels measure model answers. The agent channels measure agent behaviour on your actual site. See your brand the way the AI sees it. Both channels are early. Reach out if you want to be on the alpha. # Glossary Source: https://docs.openlens.com/glossary One canonical definition for every OpenLens term, so the same word means the same thing on every page. The terms below have one authoritative meaning across the product, the docs, the REST API, and the MCP tools. Where two words are easy to confuse, both are defined together. ## Core entities **Project.** The unit of tracking: one brand and its competitors, topics, prompts, platforms, and schedule — the thing you set up and measure. Everything else in OpenLens hangs off a project. **Organization.** The owner of your projects, data, users, seats, and billing. You get your own when you sign up, and can invite people in or join someone else's. Every request is scoped to an organization. **Brand and competitor.** A **brand** is a company tracked in a project. The project's own company is the **own brand**; every other tracked company is a **competitor**. Both are stored the same way and scored the same way. **Topic.** A theme that groups prompts, e.g. "project management software." A project has many topics; each topic holds several prompts. **Prompt.** A single question sent to the AI platforms, e.g. "What is the best project management tool for startups?" Prompts belong to a topic. **Prompt run.** One execution of a project's active prompts across its active platforms, triggered manually ("Run Now") or on a schedule. A run fans out into many platform responses. **Run status.** Where a prompt run stands. **Running** while it is still gathering answers; **Completed** when every platform finished; **Failed** if it could not finish; **Interrupted** if a restart stranded it mid-run (these recover on their own); **Cancelled** if you stopped it before it finished. The Recent prompt runs list shows each run's status. **Platform response.** One platform's answer to one prompt within a run. This is the atomic result OpenLens parses for mentions, citations, and response attributes. In pricing this same unit is called an **output** — "one answer from one AI platform for one prompt." (See [Plans](/pricing/plans) for how outputs draw from your credit pool.) ## Metrics **Visibility.** The share of platform responses that mention your brand. The headline number: how often models bring you up at all. **Share of voice.** Your brand's share of the total brand discussion, measured across you and your competitors. Where visibility asks "do they mention you," share of voice asks "when brands come up, how much of the conversation is yours." Visibility and share of voice are different metrics and can move independently. **Average position.** The order your brand tends to appear in a response, where 1 is first-mentioned and most prominent. **Mention (brand mention).** A single instance of a brand named in a platform response. Mentions feed visibility and average position. **Citation and source.** A **citation** is a specific URL a response cited. A **source** is the domain that citation belongs to. The dashboard's "AI Sources" view aggregates citations by source domain. **Sentiment.** Whether a response attribute is discussed positively, neutrally, or negatively about a brand. ## Attributes and labels **Prompt attribute.** A label you assign to a prompt to slice your data — e.g. `pricing`, `enterprise-readiness`, or the built-in `branded`. Prompt attributes are set at prompt-generation time and never derived from a response. See [Prompt attributes](/manual/prompt-attributes). **Response attribute.** A quality discussed about a brand in a platform response, each with a sentiment — e.g. "noise cancellation," "pricing," "customer support." Response attributes are extracted from the response text by the parser; they are brand-scoped, but the quality itself is often category- or product-level, not an intrinsic brand trait. **Prompt attributes and response attributes are distinct:** one is a label you assign, the other is a quality the model brought up. **Branded and unbranded.** A **branded** prompt names a brand ("Is Acme's pricing competitive?"); an **unbranded** prompt does not ("What is the best CRM?"). `branded` is a built-in prompt attribute, auto-assigned to prompts that name a brand, and is a common dashboard filter. ## Platforms **Platform.** One of the seven AI systems OpenLens measures. Each platform is reached through one **channel**: the consumer chat surface ("Web") or the vendor's public API ("API"). See [How OpenLens sources data](/data-sources). | Platform | Channel | Plans | | ---------- | ------- | ------------------ | | ChatGPT | Web | All plans | | Perplexity | Web | All plans | | Google AI | Web | All plans | | Gemini | Web | Agency | | Grok | API | Agency | | Claude | API | Agency | | DeepSeek | API | Starter and Agency | Google AI measures Google's AI Overviews. ## Google integrations **GSC property.** The unit Search Console tracks: either a domain property (`sc-domain:example.com`, covering every subdomain and protocol) or a URL-prefix property (one exact prefix). Each project points at one. See [Site Readiness Performance](/manual/readiness#performance). **Key events.** GA4's current name for conversions. Same concept, renamed by Google in 2024. OpenLens reports them exactly as your GA4 property defines them. **AI referral traffic.** Sessions arriving at your site with an AI platform as the referrer (chatgpt.com, perplexity.ai, gemini.google.com, and the rest). A lower bound by construction: native apps and pasted links send no referrer, so the true number is higher. ## Access and tenancy **Roles.** A user's permission level within an organization: **owner** and **admin** manage everything; **member** works assigned projects; **client** is read-only on assigned projects. **Credit pool.** The monthly allowance of credits an organization can spend on tracking, pooled across all its projects. Outputs (platform responses) draw from the pool at platform-specific weights: most platforms draw 1 credit per output; Claude draws 100 and Grok draws 50. See [Limits](/pricing/limits). # Dashboard deep-dive Source: https://docs.openlens.com/how-tos/dashboard-deep-dive What the dashboard numbers actually mean and what to do about a bad result. Reading the dashboard well takes a few mental models. This page explains what the numbers actually mean, what can move them without anything real changing, and what to do about a bad result. Every dashboard is scoped to a single [prompt run](/manual/dashboard): you land on the run list and open a run to see it. The numbers mean the same thing on every run, so everything below applies whichever run you're viewing. ## The four metrics The dashboard shows four numbers. Get the definitions right and the dashboard reads itself. **Visibility** is the percentage of platform responses where your brand was mentioned at all. If 100 prompts ran across 7 platforms (700 responses) and your brand appeared in 280 of them, visibility is 40%. This is the mention rate. **Mentions** is the raw count behind visibility. 280 in the example above. Same data, different presentation. **Share of voice** is your mentions as a fraction of all brand mentions (you plus every competitor you're tracking) for the same set of prompts. If you got 280 and your three competitors got 420 between them, your SOV is 40%. Visibility tells you how often you appear. Share of voice tells you how often you appear compared to who else is in the conversation. **Average position** is your rank in the answer when the AI lists multiple brands, averaged across every response that mentions you. Lower is better. 1.0 means you're first every time. 1.4 means first most of the time and second the rest. Position answers 'when the model mentions us, how prominently?'. Visibility answers 'how often does it mention us at all?'. Visibility and position can disagree. You can be mentioned less often than a competitor but ranked higher when you are mentioned. The two numbers tell different things. Dashboard header showing four KPI tiles for visibility percentage, share-of-voice percentage, average position rank, and total mention count, each with a comparison line against the top competitor. ## Per-platform visibility Same visibility number, broken out by AI platform. For each platform you also see your gap to the top competitor on that platform and a status indicator. Read it like a scorecard. ChatGPT can love you while Perplexity ignores you. The status indicator gives you a one-glance summary per platform, so you can spot the disagreements worth acting on. Per-platform visibility table with one row per AI platform, columns for your score, top competitor score, gap in points, and a status chip showing whether you're behind, close, or ahead. ## Visibility trendline Time series of your visibility number over a date range. Appears once you have at least two completed runs. Set up recurring runs in Settings (weekly or daily) and the line populates automatically. On-demand runs add a point every time you trigger one. Use this to spot real movement vs single-run noise. One run flipped against you isn't a trend. Wait for three in a row before you act on it. Time-series line chart of brand visibility percentage over weeks, with a marker for each completed run, scaled from 0 to 100 percent. ## Competitor snapshot The headline view of how you stack against the brands you're tracking. Three numbers per brand: visibility %, share of voice, and average position. Sorted by share of voice. Position and share of voice can diverge. A competitor can win on share of voice (mentioned more often than you) while you win on position (ranked higher when you are mentioned). Both numbers are real. They answer different questions: who shows up most, and who looks best when they do. A brand sitting at position 1.4 means models name it first most of the time even when other brands are in the same answer. Competitor ranking table with one row per tracked brand, columns for visibility percentage, share-of-voice percentage, and average position. Your brand's row is highlighted. ## Topic performance Visibility broken out by topic. Click into any topic for the per-prompt breakdown underneath. Use this view to find the topics where competitors dominate. Those are the gaps. Per-topic visibility table with one row per topic, showing your score, the top competitor on that topic with their score, and a status chip indicating gap, close, or even. ## AI sources The list of cited domains models referenced when answering your prompts. The closest thing to a backlink graph for AI search. Each row is one cited domain, with: * **Count**: how many times the domain was cited across the run. * **Platforms**: which AI platforms cited it. * **URLs**: the specific pages the models pointed at, with title and per-URL count. Filter by topic, platform, or prompt attribute. Default view is the top 20 cited domains, up to 10 URLs each. Read this view to figure out where the models are pulling their answers from in your space. If review sites dominate citations for unbranded prompts in your category, that's where you need to show up. The competitor blogs you keep seeing in answers about your problem space are content gaps you can close one by one. AI Sources table listing cited domains as expandable rows, with citation count and chips for the AI platforms that cited each domain. *Roadmap: domain categorization (own brand, competitor, news, UGC, review site, third party) and category-based filtering. Not in the UI yet.* ## Slice by attribute Every interesting dashboard cut is just an attribute filter. The most prominent example is branded vs unbranded prompts (prompts that name a brand vs prompts that describe a need without one). Filter the dashboard by attribute to see each slice in isolation. For the full mechanics, see [Prompt attributes](/manual/prompt-attributes). ## What moves the visibility score (for real reasons) * Your brand is being mentioned in more responses than before. * Competitor mentions dropped. * A specific topic moved up or down because models are surfacing different sources for it. ## What moves the visibility score (for non-reasons) * You edited prompts mid-run. Different questions get different answers. * The active platform mix changed. * Run-to-run variance. AI responses are stochastic. The system is stable in aggregate but any single prompt's answer can flip. Knowing which is which is the difference between acting on signal and acting on noise. ## Why platforms disagree ChatGPT, Perplexity, Gemini, and the others don't return the same answer for the same prompt. They're trained differently. They search differently. Some lean heavily on cited sources, some lean on training data. Disagreement is the baseline. ## Honest about noise Run-to-run variance for any single prompt can be substantial. The system is stable in aggregate over a project's full set of prompts. Don't read a single prompt's flip from one run to the next as a real change. Look at the trend over several runs before deciding something has actually moved. # How-tos Source: https://docs.openlens.com/how-tos/overview Task-oriented guides for the most common OpenLens workflows. Task-oriented guides. The [Web UI manual](/manual/overview), [MCP server](/mcp/overview), and [REST API](/api-reference/introduction) pages describe each surface in reference form. How-tos walk through a specific task end-to-end. What the four dashboard metrics mean, what moves them for real and for non-reasons, what to do about a bad result. ## See also * **First-time use** is covered in the [Web UI manual Onboarding section](/manual/overview). * **Connecting MCP clients** lives in [MCP server](/mcp/overview). * **REST API walkthrough** lives in [API reference](/api-reference/introduction). # Introduction Source: https://docs.openlens.com/introduction Track brand visibility across the AI platforms customers actually use. OpenLens measures what AI systems say about your brand. We cover seven of them: ChatGPT, Perplexity, Google AI, Gemini, Grok, Claude, and DeepSeek. Run prompts across all of them, see who gets mentioned, where the answer is sourced from, and how the picture shifts over time. OpenLens comes in four tiers: Free, Starter, Agency, and Enterprise. [Plans and pricing](/pricing/plans) covers what each one includes. For enterprise needs, email [contact@aibread.com](mailto:contact@aibread.com). ## What you'll find here Sign-up to first result in about 15 minutes. Walk through projects, topics, prompts, runs, and analytics. Drive OpenLens from Claude Desktop, opencode, or any MCP client. REST endpoints for programmatic access. # AI Indexing Source: https://docs.openlens.com/manual/ai-indexing Check whether AI platform retrieval surfaces can verify a client's exact pages. AI Indexing checks whether AI platform retrieval and search surfaces can verify exact pages from a client project. It answers a narrower question than the main dashboard: when OpenLens asks a platform to look for this page, does the platform return or cite the same canonical page URL? Use it when you want to audit whether important pages are available to the retrieval layers behind AI answers, not whether the brand is visible in normal buyer prompts. ## How it differs from Site Readiness Site Readiness checks whether a website is technically accessible and understandable to agents and crawlers. It looks at things like robots rules, structured data, page discoverability, snippet controls, accessibility, and agent-facing content quality. AI Indexing runs separately because it is heavier. It sends page-level probes to external AI or search surfaces and waits for platform responses. A Site Readiness run can complete quickly from crawl and page analysis; an AI Indexing run may take longer because each platform has its own retrieval behavior, rate limits, and response time. ## How we measure this AI Indexing currently checks: | Platform | How it is measured | | -------- | ----------------------------------------------------------------------------------------------- | | ChatGPT | Title/domain-scoped web-search probe that checks whether ChatGPT cites the same canonical page. | | Claude | Brave Search proxy for Claude's web retrieval surface, using host-scoped slug queries. | | Gemini | Grounded Gemini search probe that reads the result URLs from Gemini's search response. | OpenLens compares returned URLs by canonical page identity, not by literal string equality. Scheme, `www.` or mobile subdomain variants, query strings, fragments, trailing slashes, and percent encoding should not turn the same page into a false miss. ## Why Claude uses Brave Search Anthropic does not expose a first-party per-page Claude index API. For Claude, OpenLens uses Brave Search as a retrieval proxy because Claude's web search behavior has strong public evidence pointing to Brave, and because OpenLens performed independent empirical validation comparing Claude web-search results with Brave Search results across sampled exact-page probes. That validation found the similarity strong enough to use Brave as the closest practical public proxy for Claude retrieval coverage. Anthropic's [web search tool docs](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool) describe Claude web search as a server-side tool that runs searches and returns cited sources. TechCrunch reported that Anthropic added Brave Search to its subprocessor list, that Simon Willison observed matching Claude and Brave citations for the same query, and that Claude's internal web search schema exposed a `BraveSearchParams` name. See [TechCrunch's report](https://techcrunch.com/2025/03/21/anthropic-appears-to-be-using-brave-to-power-web-searches-for-its-claude-chatbot/) and [Brave's Search API page](https://brave.com/search/api/). This is still a proxy. A pass means the exact page is available through Brave Search for the query OpenLens ran. That is the closest practical public signal for Claude retrieval coverage, not a guarantee that every Claude answer will cite the page. ## Scores and statuses Each platform-page probe resolves to one of three product-facing outcomes. * **Indexed** means the platform returned or cited the exact normalized page URL. * **Not indexed** means the platform completed a grounded probe but did not return or cite that exact canonical page. * **Unknown** means OpenLens could not get enough grounded provider evidence to decide. It is not the same thing as not indexed. * **Score** is the percent of completed checks that passed, weighted through the same readiness scoring system used elsewhere in OpenLens. The score is useful for comparing runs over time. The individual page rows are more useful for seeing where to investigate first. ## How accurate are these verdicts Our verdicts are highly accurate, and we measured how accurate against a labelled dataset. To check whether an assistant can find your page, we built our own prompts about that page that reliably get the assistant to show it when the page is indexed. We then tested those prompts against a labelled dataset of both popular and un-indexed pages to see how well they work. * When we mark a page **Indexed** on ChatGPT or Claude, we are right about 100% of the time. For ChatGPT we only count pages the assistant actually cited, and for Claude we can search its Brave index directly. * Gemini is the exception. Gemini does not reliably tell us which URLs it retrieved, so we read them from its response, and it can sometimes give a page URL it reconstructed from the site address rather than one it actually found. Treat a Gemini **Indexed** as slightly lower confidence. We are actively improving this. * When we mark a page **Not indexed**, we are right more than 99% of the time based on our labelled dataset. That figure comes from the dataset, so per-site results can vary. If you find a page where our verdict looks wrong, email [contact@aibread.com](mailto:contact@aibread.com) and we will look into it. ## Page scope Use **Pages to check** to choose how many discovered pages the run should inspect. Use **Path prefix** to restrict the run to one part of a site, such as `/blog` or `/docs`. The run uses the discovered page list for the project and applies the selected scope before sending platform probes. Scanned pages count toward AI Indexing usage limits even when page details are hidden by plan gating. Monthly AI Indexing page allowances are separate from Site Readiness: Free includes 150 pages a month, Starter includes 1,000 pages per seat each month, and Agency includes 10,000 pages per seat each month. The allowance resets on the 1st of each month, UTC. ## Free and paid views Free users can see URLs and verdicts for every page in the included 50-page run size. Paid plans unlock larger runs so you can check more pages at once. The summary still counts every scanned page. If a run says 50 pages were checked, all 50 rows are included in the score and platform totals. ## Scheduling Scheduled AI Indexing checks re-run on the configured cadence for the selected project URL. They use the current URL and schedule settings from the AI Indexing page. Scheduling is separate from Site Readiness scheduling. You can run Site Readiness and AI Indexing independently, and one does not block the other. ## Cancellation Cancel stops an in-flight AI Indexing run from continuing to process additional work and marks the run cancelled. Use cancellation when a run is taking too long, when the wrong project or scope was selected, or when you want to preserve usage for a narrower follow-up run. ## How to use it * Start with the default page count to verify the flow for a project. * Use a path prefix when you care about one content section, such as blog posts or documentation. * Compare platform totals first, then expand individual platform rows to inspect the pages that need attention. * Treat a single not-indexed result as a signal to investigate, not proof that the platform can never retrieve the page. * Treat unknown results as provider or runtime uncertainty. Re-run before making content changes based on them. * Re-run after publishing content, changing crawl directives, or improving page metadata. ## Caveats AI platform retrieval is not perfectly stable. Results can vary by provider, timing, query interpretation, and upstream search behavior. Some checks use platform proxies because providers do not expose a first-party per-page index API. AI Indexing should be read as an operational visibility audit: it shows which checked pages each platform returned for this run, so you can find coverage gaps and track whether changes improve coverage over time. # AI Content Optimization Source: https://docs.openlens.com/manual/content-audit Score how citable your content is for AI answers, and get a ranked worklist of fixes. AI Content Optimization (the "content audit") scans your site and scores how likely each page is to be quoted when an AI platform synthesizes an answer. It then ranks the fixes that would lift your citation potential the most. It is the content-side companion to [Readiness](/manual/readiness): Readiness checks whether your site is machine-reachable; Content Optimization checks whether your content is worth citing. It lives at `/dashboard/content-audit`. ## What you see * An overall **citation-potential score** out of 100 for every audited page. * Each page scored across **six dimensions** (four computed, two judged by AI). * A **worklist of fixes** — the cross-page problems ranked by impact, with an estimated score lift and an effort tag. * **Cross-page recommendations** — places where a strong page can donate copy to a weak one. * Per-page **AI rewrite drafts** you can copy, and a **PDF export** of the whole report. ## Running an audit Start a run from the Content Optimization surface. Pick a scope: * **Whole site** — discovers pages from your sitemap plus a crawl, up to your per-run cap. * **Single page** — scores just one URL you paste in. A single-page run is fast and uses one page from your allowance. Results stream in as the run executes. The dashboard polls live progress so you see scored vs. planned pages while it runs. Each run is saved to run history when it finishes, and any prior run reopens in full detail. Under the hood, each page is scraped with Firecrawl. Every page is scored on the four computed dimensions instantly and at zero cost; the two AI-judged dimensions and the per-page problem breakdown run on top. ## The six dimensions Each dimension is scored 0–100. The overall score is a weighted blend that favors the dimensions that matter most for getting cited. 1. **Headline answer** (AI-judged) — does the page open with one bold sentence that directly answers a commercial query, before any preamble? 2. **Voice** (AI-judged) — confident on world claims (opinionated, attributed data) and hedged on self (no overclaiming)? 3. **Quotable claim density** (computed) — specific numbers, named entities, concrete prices per section. Walls of reasoning score low. 4. **Extraction shape** (computed) — tables, named tiers, FAQ, bolded factor lists, bullets — the machine-extractable structure. 5. **Recency signals** (computed) — a current year in the title or first paragraph, and a prominent "Last Updated" date. 6. **Substance / thinness** (computed) — enough length and substance for multiple quotable claims. Thin pages score low. ## The worklist The worklist rolls up per-page scores into a cross-page, impact-ranked list of fixes. A dimension becomes a fix when its score is below **70**. Each fix shows the affected pages, a severity, an estimated score lift, and an effort tag (`low`, `med`, `high`) so you can pick the cheap wins first. The headline number is the **projected overall lift** — how many overall-score points you could recover across the site. ## Plans and allowances Two enforcement levers, both tiered. Numbers below are the source of truth from the plan config. | | Free | Starter | Agency | | ------------------------------------------------------------- | ------ | ------- | ------- | | **Pages per run** | 10 | 50 | 500 | | **Pages per month** | 30 | 1,000 | 10,000 | | **AI rewrite drafts per month** | 0 | 50 | 100 | | **Per-page detail (problems, insights, dimension breakdown)** | Locked | Full | Full | | **Cross-page recommendations** | Locked | Full | Full | | **AI rewrite drafts** | Locked | Enabled | Enabled | | **PDF export** | Locked | Enabled | Enabled | The first lever is **pages per run** — how many pages a single run may score. The second is a calendar-month pooled **page allowance**. AI calls themselves are not capped — a page is one batched AI call, so the page allowance already bounds your usage. ### The page allowance Each run uses pages from your monthly allowance. A run scores up to **your per-run cap** or **your remaining monthly pages**, whichever is smaller — so a run near the end of the month may score fewer pages than your cap. A run that would use more than you have left is clamped to what's left, not blocked. The allowance resets on the calendar month. Paid plan allowances scale with the number of paid editor seats in the org for that billing period. ### Free-tier detail A Free org can run an audit and see every page's score plus the prioritized worklist — the scope of the problem is visible. The actionable detail is locked: the impact × effort matrix and cross-page recommendations show as a blurred upgrade preview, and the per-page problem breakdown, AI rewrite drafts, and PDF export require a Starter plan or above. Locked detail is stripped server-side before it reaches your browser; it is never just hidden. ## API These routes back the Content Optimization surface. They are not part of the [REST API reference](/api-reference/introduction). * `POST /api/content-audit/run` — start an audit (whole-site or single-page). * `GET /api/content-audit/run` — poll one audit's full result. * `GET /api/content-audit/runs` — list run history for a project. * `POST /api/content-audit/rewrite` — generate a per-page AI rewrite draft. * `GET /api/content-audit/report/[auditId]/pdf` — download a run's PDF. ## How to use it * Read the overall score and the projected lift first, then drill into the top-ranked fixes. * Use a single-page run to check one page fast without spending your whole allowance. * On Free, the worklist is a real taste of the problems; upgrade for the matrix, cross-page recommendations, per-page detail, rewrite drafts, and PDF. * Re-run after making changes — unchanged pages are cached, so a re-audit only re-scores what actually changed. # Country configuration Source: https://docs.openlens.com/manual/country-configuration Choose project defaults and understand how each AI platform applies country scope. Country configuration controls where OpenLens measures your brand's visibility. Saved countries become the project defaults for future manual and scheduled runs. ## Saved countries and one-time overrides * Change the saved country list in project Settings to update future runs and schedules. * Use **Set run scope** before a manual run to choose a temporary country list. This does not change the project defaults or its schedule. * Adding countries repeats the selected prompts across the selected platforms, so the run uses more credits. The run-scope panel shows the maximum credit reservation before you start. Multiple-country configuration and geographic comparison are available to Agency organizations. ## Country availability The country picker uses one shared catalog for all AI platforms. Each country identifies the platforms that can target it and any platform that must use its own default location. Claude and DeepSeek do not currently support configurable country targeting and will use their default location. When several platforms are selected, a country must be available to every platform that performs country targeting. A provider-default platform does not make the selected country a verified execution location. ## How platforms use the selected country | Platform | Location behavior | | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ChatGPT, Perplexity, Google AI, Gemini | OpenLens requests the selected country through the consumer-surface routing provider. | | Grok | OpenLens passes the country to xAI's web-search tool as `user_location`. xAI describes this as biasing search results toward that location. It is not an in-country proxy and does not verify that Grok executed from the selected country. | | Claude, DeepSeek | These platforms do not currently support configurable country targeting in OpenLens, so they use their default locations. | Grok location hints remain unverified because its API does not return evidence establishing an effective execution country. Claude and DeepSeek also remain unverified because they use their default locations. OpenLens records the requested country for run comparison without presenting it as verified geography. See [xAI's location parameter documentation](https://docs.x.ai/developers/model-capabilities/audio/voice-agent) and [How OpenLens sources data](/data-sources) for more about API and consumer-surface measurements. # Dashboard Source: https://docs.openlens.com/manual/dashboard The home view of a project: browse prompt runs, then open one for its visibility score and everything that explains it. The home view of a project, in the sidebar as **Prompt Tracking**. It opens on the list of every prompt run for the project. Pick a run to open its dashboard — the headline visibility number plus everything that explains it. ## Recent prompt runs The landing view is a table of every prompt run for the project, newest first. One row per run, with: * **ID** — the run's short id, with a copy button for the full id. * **Prompt Run** — a sequential label ("Prompt Run 12") counting from the project's first run. * **Status** — Running, Completed, Failed, Interrupted, or Cancelled. * **Trigger** — Manual (you clicked Run Now) or Scheduled (a cadence fired it). * **Started** and **Ended** — timestamps, with a relative time on hover. * **Duration** — how long the run took. * **Platforms** — the AI platforms the run covered, shown as logos. * **Report** — a per-row PDF download, available once the run has completed. Sort by Prompt Run, Status, Started, Ended, or Duration. Status, Trigger, Started, Ended, and Platforms each have a filter in their column header. The list paginates, and refreshes live while a run is in progress. ## Opening a run Click a run to open it. * A **completed** run opens its **dashboard** — the full visibility view, scoped to that one run. * A run that **failed** or was **cancelled** has no visibility numbers, so it opens on a per-run **detail** page instead: a per-platform breakdown of what succeeded, what failed, and why. ## A run's dashboard Every run's dashboard reads the same regardless of the run's age. A small run-info header sits under the project title with the run's id (and a copy button), its "Prompt Run" label, status, and date — plus an **All runs** link back to the list. A single run's dashboard is read-only. You run and schedule from the run list, not from inside a specific run. What it shows: * Headline visibility score for your brand and each competitor. * Per-topic and per-platform breakdowns. * Trend lines on every score above. The trend spans the project's full run history, not just the run you're viewing. * Click-through from any score into the prompts and citations behind it. ## Filters Within a run's dashboard, filter by topic, platform, prompt attribute, date range, branded vs unbranded. Filter state lives in the URL, so a filtered view is shareable by link. ## Running prompts Click **Run Now** at the top of the run list to kick off a run on demand. The button sends every active prompt to every active platform. The new run appears in the list immediately; open it and the numbers update **live** as platform responses come back, so the headline visibility, [share of voice](/glossary), and per-platform numbers shift while the run is in flight. Final numbers settle when the run completes. Scheduled cadence (daily, weekly, or monthly) is set in Settings. On-demand runs are independent of the schedule and can also be triggered via the REST API or MCP. ## Where the data comes from See [How OpenLens sources data](/data-sources). ## How outputs are produced * Each run sends every active prompt to every active platform. * Responses are parsed by Claude Haiku for brand mentions, citations, and response attributes (qualities discussed about a brand, each with a sentiment). * Visibility scores are computed live from the parsed events. No pre-aggregated snapshot. ## How to use it * Pick a run from the list, then read the headline. Drill into per-platform to spot platforms that don't know you. * Trace a citation to see where models pull answers from for your space. * For the interpretation layer (what each metric actually means, what to do about a result), see the [Dashboard deep-dive](/how-tos/dashboard-deep-dive). # Import prompts Source: https://docs.openlens.com/manual/import-prompts Add prompts in bulk from a file or pasted text, then review them before saving. Import up to 50 prompts at once from **Manage Prompts**. Paste content into the import box, drag a file onto it, or choose a file from your computer. OpenLens structures the input and shows an editable review before anything is saved. ## Import prompts 1. Open a project and go to **Prompts**. 2. Open **Manage Prompts**. 3. Click **Import Prompts**. 4. Paste prompts into the import box, drop a file onto it, or click **Choose file**. 5. Click **Review prompts**. 6. Check the wording, then choose the topic that should receive all imported prompts. 7. Click **Import prompts**. JSON, JSONL, and CSV that match the formats below are parsed directly. Markdown, TXT, and other pasted content are structured before the review step. Prompt wording remains editable in the review. An import includes the first 50 prompts in source order. If the source contains more, OpenLens shows a notice and leaves the remaining prompts out of that import. ## JSON Use an object with a `prompts` array. Each array item must contain `prompt`. The other fields are optional. ```json theme={null} { "prompts": [ { "prompt": "What is the best project management software for a startup?", "topic": "Project management software", "language": "english", "attributes": [] }, { "prompt": "How does Acme compare with other project management tools?", "topic": "Project management software", "language": "english", "attributes": ["comparison", "branded"] } ] } ``` ## JSONL Use one JSON object per line. Do not wrap the objects in an array and do not add commas between lines. ```jsonl theme={null} {"prompt":"What is the best project management software for a startup?","topic":"Project management software","language":"english","attributes":[]} {"prompt":"How does Acme compare with other project management tools?","topic":"Project management software","language":"english","attributes":["comparison","branded"]} ``` ## CSV Use `prompt` as the required column. `topic`, `language`, and `attributes` are optional. Separate multiple attributes with semicolons inside the attributes cell. ```csv theme={null} prompt,topic,language,attributes "What is the best project management software for a startup?","Project management software","english","" "How does Acme compare with other project management tools?","Project management software","english","comparison;branded" ``` Quote a CSV cell when it contains a comma, line break, or quotation mark. Represent a quotation mark inside a quoted cell with two quotation marks. ## Field reference | Field | Required | Expected value | | ------------ | -------- | ------------------------------------------------------------------------------------------------- | | `prompt` | Yes | The complete prompt wording. Maximum 4,000 characters. | | `topic` | No | The name of an existing topic in the project. Unmatched names must be mapped during review. | | `language` | No | A language configured for the project, such as `english`. | | `attributes` | No | Existing project attributes. Use a JSON array in JSON/JSONL or semicolon-separated values in CSV. | Topic matching ignores capitalization and surrounding spaces. OpenLens does not create new topics during import. An import targets one topic: when you start from a selected topic, OpenLens applies it automatically; otherwise, choose one topic above the preview to apply it to every imported prompt. If a file contains multiple topic names, the topic selected in the preview takes precedence. Only attributes already available in the project are kept. You can manage the available values before importing from **Manage attributes**. See [Prompt attributes](/manual/prompt-attributes). ## Other content You can also paste unstructured content or upload `.txt` and `.md` files. OpenLens identifies the prompt records, separates them from surrounding presentation or metadata, and presents the result for review. Always check the preview before importing. Rows that already exist under the same topic are marked **Already exists** and left unselected. # Agent Source: https://docs.openlens.com/manual/in-app-agent A project-scoped assistant that analyzes your data, runs OpenLens tasks, and builds charts, tables, and documents in your workspace. An assistant inside the OpenLens dashboard, scoped to you and the project you have open. It reads your visibility data, runs the full OpenLens workflow on your behalf — including prompt generation and kicking off runs — and builds charts, tables, and documents you can keep in that project's workspace. Open the agent from the dashboard while a project is selected. Conversation, uploads, and artifacts stay with that project. ## New chat The first screen is a new chat personalized to you and the active project. Suggested prompts match that project's data — competitors, topics, and scores — so you can start a real workflow in one click. In-app agent new chat screen greeting the signed-in user by name for the active project, with an Ask about this client project input, attachment controls, and three suggested prompts for rewriting pages as artifacts, building a competitor gap report, and cross-referencing AI Indexing with Content Audit and Site Readiness. ## What it knows about you The agent is personalized to the signed-in user and the active project. It works from that project's brands, competitors, topics, prompts, runs, and analytics — not a generic blank chat. When Google Search Console and GA4 are connected for the project, it can analyze that data too: search queries, landing pages, traffic, and how those signals line up with AI visibility. Ask it about your visibility, gaps vs a competitor, topic movers, citation patterns, what a recent run changed, or how organic search and site traffic relate to the AI picture. Answers come from the same OpenLens data the dashboard shows, plus GSC and GA4 when linked. ## Workspace and artifacts Each project has its own agent workspace. Files the agent creates — reports, presentations, rewritten pages, triage docs — land there as artifacts you can reopen, download, or reuse in later turns. Artifacts belong to the project, not to a one-off chat. Come back later and the workspace is still there. ## File upload and document generation Upload files into the conversation when you want the agent to work from your material (briefs, drafts, exports) alongside OpenLens data. Ask it to generate documents and presentations from your visibility results — client-ready writeups, gap reports, page rewrites, triage notes — and save them as downloadable artifacts in the project workspace. ## Runs, prompts, and the full workflow The agent can drive the same loop you run from the UI: * **Generate and edit prompts** for the project's topics (and attributes), so the prompt set matches the questions you care about. * **Kick off runs** against your active platforms when you want fresh measurements. * **Analyze the results** — visibility, share of voice, citations, platform gaps — and turn that into charts, tables, or documents. You can stay in the agent for the full path: set up prompts → run → read the gaps → ship an artifact. You do not have to bounce between surfaces for each step. ## What it can do in OpenLens Beyond runs and prompts, the agent has the same product surface you use in the UI: dig into topics and citations, cross-check AI Indexing with Content Audit or Site Readiness, analyze connected GSC and GA4 data, manage workstreams, and other project tasks it can perform on your behalf. It does the work in the chat so you don't have to click through every surface yourself. Destructive or high-impact writes still go through the same project permissions you already have. ## Charts, tables, and specialized tools Beyond the shared OpenLens capabilities, the agent has its own tools for artifact creation and data visualization. It can render charts, graphs, and tables in the conversation so you can see trends and brand metrics without leaving the thread — visibility over time, competitor share, platform gaps, prompt movers, and similar views. Use that when you want a quick visual read; use document generation when you need something portable for a client or teammate. ### Example: prompt-gap table Ask for a gap report against a competitor and the agent can build a structured table: which prompts you lose on, where each brand shows up across platforms, the size of the gap, and what it would take to flip the result. In-app agent response showing a table of prompt loss gaps between the project brand and its top competitor across ChatGPT, Perplexity, and Google AI, with columns for prompt, each brand's result, gap, and what it would take to close it, plus a smaller overall visibility gap summary table. ## How to use it * Open a project, open the agent, ask a concrete question ("Where do we lose to \[competitor] on branded prompts?"). * Or click a suggested prompt on the new-chat screen to start a full workflow. * Ask it to generate prompts and kick off a run when the set is ready. * Upload a brief when you want the answer shaped for a specific audience. * Ask for a chart or table when you're exploring; ask for an artifact when you're shipping. * Keep one thread per initiative if you want the workspace to stay focused. ## Related * [Dashboard](/manual/dashboard) — the numbers the agent reads. * [Site Readiness Performance](/manual/readiness#performance) — connect GSC and GA4 for the agent to analyze. * [Onboarding](/manual/onboarding) — first-time prompt generation and Review & Run outside the agent. * [Reports](/manual/reports) — on-demand PDF snapshots (separate from agent-generated artifacts). * [MCP server](/mcp/overview) — drive OpenLens from an external agent instead of the in-app one. # Onboarding Source: https://docs.openlens.com/manual/onboarding Sign up, point at a website, run your first measurement. The first thing you see after signing up. In OpenLens a **client** is one company associated with one website. One client, one website. That's the model. You sign up, enter the client's website URL, and OpenLens pulls data from the site to suggest what to track: likely competitors, a starting set of topics, and the prompts those topics turn into. You confirm or edit the suggestions, then click **Review & Run Prompts** to kick off the first measurement. **Everything onboarding generates is editable.** Treat the first run as a starting point. We try our best to generate example data that gives you a good taste of what OpenLens looks like for your brand. Every competitor, every topic, every prompt, every attribute can be edited from the dashboard at any time. You can also drive these edits from Claude or any MCP-capable client through the OpenLens MCP server. See [Configure the OpenLens MCP server](/mcp/overview). OpenLens onboarding screen with a single input field asking for the client's website URL and an Analyze button to kick off the site read. OpenLens onboarding analysis result showing the detected brand name, the brand's product summary, an editable list of proposed competitors, and the market location and language fields filled in from the site. ## Topics, prompts, and prompt attributes Topics are containers for prompts. Each topic gets a set of prompts (the actual questions OpenLens runs on every supported AI platform), and each prompt can have prompt attributes, which are labels that flow through the dashboard and can be used as filters. ## Competitors OpenLens proposes competitors from the website analysis. You can add, remove, or rename any of them. If a competitor has a common name and we might pick the wrong company, paste their URL in so we lock onto the right one. ## Prompt attributes (optional) If you set prompt attributes during onboarding, OpenLens auto-generates prompts that try to fit the attributes you list. You can edit prompts and attributes after onboarding too. See [Prompt attributes](/manual/prompt-attributes) for the full mechanics. OpenLens onboarding prompt-attributes step with a tag input where the user types custom attribute names (for example pricing, agency-focused) for the prompt generator to fit during generation. ## Suggested topics OpenLens suggests topics based on the website analysis. Add or remove any that don't make sense or that you'd like to customize. OpenLens onboarding suggested-topics step displaying a list of buyer-intent topic phrases generated from the website analysis, each with controls to remove or edit and a field for adding a new topic. ## Confirm and run After confirming the suggested topics, you land on the Prompts tab with the prompts OpenLens auto-generated. Customize them now or later. Click **Review & Run Prompts** to send them to the live AI platforms immediately. OpenLens Prompts tab after onboarding showing auto-generated prompts grouped under each topic, each prompt with its attached attributes, plus a prominent Review & Run Prompts button at the top of the page to send the set to the live AI platforms. ## Where the data comes from The client's website at sign-up: we pull data from the site to propose competitors and topics. Claude then expands the confirmed topics into the actual prompts we'll run on every supported AI platform. ## How outputs are produced 1. You enter the client's website URL. 2. OpenLens pulls data from the site and proposes competitors and topics. 3. You confirm or edit them, and optionally pre-set prompt attributes. 4. For each topic, Claude generates a set of prompts (and tries to fit the prompt attributes you set). 5. You click **Review & Run Prompts** to start the first measurement. ## How to use it **Editing auto-generated prompts before the first run.** After project setup, OpenLens opens the Prompts tab with the generated prompts grouped by topic. Read through them. They should sound like questions a real user would type into ChatGPT or Perplexity. Edit anything that doesn't, delete prompts that miss the mark, and add custom prompts via the **+ Add prompt** button on any topic. Attach prompt attributes if you want filters later (see [Prompt attributes](/manual/prompt-attributes)). When the prompt list looks like the questions your client's prospects actually ask, hit **Review & Run Prompts**. **When to add a competitor URL.** OpenLens proposes competitors from the website analysis. By default each is matched by name. Name matching works when the competitor's name is distinctive ('Roost', 'Rain Design'). It fails when the name is common or shared with other companies ('Acme', 'Atlas'). Paste the competitor's homepage URL alongside the name in those cases. The URL locks the match to that specific company so we don't pick up the wrong brand on later runs. If you're not sure whether the name is distinctive enough, paste the URL anyway. It costs nothing. # Web UI manual Source: https://docs.openlens.com/manual/overview What each surface of the OpenLens dashboard does and how to read it. The source of truth for what each part of the OpenLens dashboard does, where the data comes from, and how to read the outputs. Sign up, point at a website, get suggested competitors and topics, run your first measurement. The home view of a project. Browse every prompt run, then open one for its headline visibility and everything that explains it. Project-scoped assistant for analysis, runs, prompts, charts, documents, and GSC/GA4. Check whether AI platform retrieval surfaces can find and cite a client's pages. Technical SEO mission control with page evidence, site graph, fixes, and run-pinned GSC/GA4 context. Score how citable each page is for AI answers, and get a ranked worklist of fixes. The content-side companion to Readiness. Per-topic deep-dive with the AI recommendation, trend, platform breakdown, citations, and raw responses. Labels on prompts that flow through the dashboard as filters. The core mechanism for slicing data. Paste prompts or add a CSV, JSON, JSONL, TXT, or Markdown file, then review the first 50 before saving. Client-ready PDF reports with executive summary, platform comparison, citations, AI recommendations, and an optional per-prompt appendix. Per-client brand, competitors, platforms, schedule, and account-wide API keys. How OpenLens measures: chat-UI channel, API channel, and the agent channels in beta. ## Coming soon * **Prompts and topics.** Editing prompts, clone-on-change, attribute assignment, deactivation vs deletion. Most of the mechanics are covered in [Onboarding](/manual/onboarding), [Prompt attributes](/manual/prompt-attributes), [Import prompts](/manual/import-prompts), and [MCP tools](/mcp/tools). * **Citations as a standalone surface.** Likely doesn't need one. The data lives on the [Dashboard](/manual/dashboard) as AI Sources and on [Topic performance](/manual/topic-performance) as Sources Cited. # Prompt attributes Source: https://docs.openlens.com/manual/prompt-attributes Labels on prompts that flow through the dashboard as filters. Labels you attach to prompts. Once attached, they flow through the entire dashboard as filters, so you can slice visibility, citations, and reports by any dimension that matters to your business. Think of them as the seasoning that turns one big visibility number into a useful set of smaller ones. ## Walkthrough