# Unvibe documentation (full text) > Unvibe checks how well ChatGPT, Claude, Perplexity and AI agents can understand and use a website, then gives each fix ready to paste into a coding agent. Website: https://unvibe.app. Docs: https://unvibe.app/docs/. Last updated 2026-09-29. # Unvibe documentation **Unvibe checks how well ChatGPT, Claude, Perplexity and AI agents can understand and use a website, then gives each fix ready to paste into a coding agent.** It is made for apps built with AI coding tools such as Lovable, Bolt, v0, Replit, Cursor and Claude Code. Unvibe is a web app at [unvibe.app](https://unvibe.app). ## Start here - [What is Unvibe?](https://unvibe.app/docs/what-is-unvibe.html): what it does, who it is for and how it works, in one page. - [The checkup and the score](https://unvibe.app/docs/checkup.html): the 17 checks, the three score areas and how the score is calculated. - [AI visibility and rank tracking](https://unvibe.app/docs/ai-visibility.html): whether AI actually recommends you, tracked every week. - [All features](https://unvibe.app/docs/features.html): every tool in the app, with what it is for. ## Guides - [Fix guides by builder](https://unvibe.app/docs/fix-guides.html): Lovable, Bolt, v0, Replit, Cursor, Claude Code, Next.js, Vite and Cloudflare. - [Connect your coding agent (MCP)](https://unvibe.app/docs/mcp.html): Claude Code, Cursor, Codex and VS Code apply the fixes and re-run the checkup. - [AI traffic tracking](https://unvibe.app/docs/ai-traffic.html): count visitors from ChatGPT, Perplexity and Claude, and AI crawler visits. ## Reference - [Plans and limits](https://unvibe.app/docs/plans.html): Free, Starter and Pro, and how limits reset. - [Glossary](https://unvibe.app/docs/glossary.html): AI crawlers, GEO, llms.txt, JSON-LD, pre-rendering and more. ## For AI assistants and tools Every page here is also available as Markdown: add `.md` to its address, for example [/docs/checkup.md](https://unvibe.app/docs/checkup.md). The whole documentation in one file is at [/llms-full.txt](https://unvibe.app/llms-full.txt), and a short index is at [/llms.txt](https://unvibe.app/llms.txt). # What is Unvibe? **Unvibe is a web app that checks how well ChatGPT, Claude, Perplexity and AI agents can understand and use a website, then gives each fix ready to paste into a coding agent.** It is made for founders and makers whose apps were built with AI coding tools such as Lovable, Bolt, v0, Replit, Windsurf, Cursor, Codex and Claude Code. ## The problem it solves Many apps built with AI tools draw their content with JavaScript after the page loads. The crawlers behind ChatGPT, Claude and Perplexity (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot) usually read the raw HTML without running JavaScript, so they can see an almost empty page. Other common gaps: no plain description of what the app is, no structured data, no sitemap, and CDN or firewall settings that block AI crawlers. The result is that AI assistants can't describe or recommend the app, even when it works well for people. ## What Unvibe does 1. **Reads the live site the way AI crawlers do.** It fetches the homepage, robots.txt and sitemap without running JavaScript, and visits as GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot and Googlebot to catch anything that treats AI crawlers differently. 2. **Asks an AI what the app is,** based only on what the crawler received. 3. **Scores the site out of 100** in three areas: Understood by AI, Readable by crawlers and Usable by agents. See [The checkup and the score](https://unvibe.app/docs/checkup.html). 4. **Turns every failing check into a fix,** ranked by impact, with an instruction ready to paste into Claude Code, Cursor, Codex, Lovable or any other coding agent. Coding agents can also connect over [MCP](https://unvibe.app/docs/mcp.html) to read the fixes, apply them and re-run the checkup. 5. **Tracks what happens next:** the [AI visibility score](https://unvibe.app/docs/ai-visibility.html), weekly AI rank tracking for your buyer questions, and [visitors that AI assistants send you](https://unvibe.app/docs/ai-traffic.html). ## Who it is for - Founders and indie makers who built an app with an AI app builder or coding agent. - Small teams that want their product to be recommended when buyers ask ChatGPT, Claude or Perplexity. - Anyone who wants to know what AI crawlers actually receive from their site. ## How it works, step by step 1. Sign up at [unvibe.app](https://unvibe.app/signup.html) and add your website with its name and a one-line description. 2. Unvibe runs the first checkup and shows the score, what an AI thinks your app is, what crawlers receive and the ranked fixes. 3. Copy a fix into your coding agent (or let the agent fetch it over MCP), deploy, and mark it as fixed. 4. Run the checkup again: Unvibe verifies each fix on the live site and shows the new score. 5. Once the site is readable, track whether AI recommends you with AI mentions, the AI visibility score and weekly rank tracking. ## Pricing Unvibe has a Free plan, Starter at $5.99 a month and Pro at $9.99 a month or $89.99 a year. See [Plans and limits](https://unvibe.app/docs/plans.html). ## Questions ### Is Unvibe an SEO tool? It focuses on AI search and AI assistants rather than classic Google rankings. Many fixes also help search engines, but the checks are built around what AI crawlers and AI agents need to understand and use a site. ### Do I need to know how to code? No. Every fix comes as a plain instruction you can paste into the tool that built your app. If you use a coding agent such as Claude Code or Cursor, it can apply fixes for you over MCP. ### Does Unvibe change my website? No. Unvibe only reads your public pages. You or your coding agent make the changes. ### Which AI assistants does it cover? The checkup looks at what the crawlers behind ChatGPT, Claude, Perplexity and Google receive. AI mentions and rank tracking ask an AI your buyer questions the way a normal user would. # The checkup and the score **An Unvibe checkup reads one live website the way AI crawlers do and scores it out of 100.** It checks 17 things across three areas, finds the most likely reason a page looks empty to AI, and turns every failing check into a ranked fix. ## What a checkup reads - **The homepage's raw HTML**, without running JavaScript, the way GPTBot, ClaudeBot and PerplexityBot read it. - **The homepage as each AI crawler**: GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot and Googlebot. This catches CDNs, firewalls and bot protection that block AI crawlers or serve them a different page. - **robots.txt**, including rules for each AI crawler, and any blocking lines are quoted. - **The sitemap**, from robots.txt or the usual locations. - **An AI's reading of the page**: Unvibe asks an AI what the product is, using only what the crawler received. ## The three areas | Area | Share of the score | What it measures | |---|---|---| | Understood by AI | 40% | Whether an AI can tell what the app is, who it is for, what it costs and why to pick it | | Readable by crawlers | 35% | Whether AI crawlers can reach and read the page, and find the rest of the site | | Usable by agents | 25% | Whether an AI agent can find pricing, sign-up and help on its own | Each check has a weight. An area's score is the share of its weight that passes, and the overall score combines the three areas at 40%, 35% and 25%. ## The 17 checks ### Readable by crawlers | Check | What passes | |---|---| | Page description | A meta description that says who the app is for | | Main heading | One clear main heading that says what the app does | | Sitemap | A sitemap that crawlers can find | | robots.txt | robots.txt lets AI crawlers such as GPTBot and ClaudeBot in | | AI crawlers get the page | The CDN, firewall or bot protection serves AI crawlers the same page as browsers | | Structured data | JSON-LD that describes the app as software, with its price | | Link previews | A title, description and image for link previews (Open Graph) | | Real buttons and links | Clickable things are real buttons and links, not plain boxes | ### Understood by AI | Check | What passes | |---|---| | What it is | The first line of the homepage says what the app is | | Who it's for | The audience is named near the top of the page | | Category | The page says plainly what kind of product it is | | Reasons to pick it | Concrete reasons to choose it over alternatives | | Price on the page | Pricing is written as text on the page, not only in a pop-up | | Comparison | A page that compares the app with its closest competitors | ### Usable by agents | Check | What passes | |---|---| | Pricing link | A "Pricing" link in the main menu | | Sign-up button | A clearly labelled sign-up button an agent can find | | Help | A short FAQ or help section | ## Why a page looks empty to AI When the crawler gets little or no text, Unvibe names the most likely cause: - **JavaScript rendering:** the text is added by JavaScript after the page loads, and AI crawlers don't run it. Fix: server-side rendering, static generation or pre-rendering. - **AI crawlers blocked:** browsers get the page but AI crawlers are blocked or get a different page, usually by a CDN, firewall or bot-protection setting. - **Blocked by robots.txt or noindex.** - **Thin page:** readable, but too little text to explain the product. - **Page error:** the homepage returned an error. ## Fixes Every failing check becomes a fix, ranked by how many points it adds. Each fix includes what the checkup found and an instruction ready to paste into a coding agent. Mark a fix as done after deploying; the next checkup verifies it on the live site and only then counts it. ## Questions ### How often should I run a checkup? After each deploy that changes your homepage, robots.txt, sitemap or CDN settings. A checkup that fails, for example because the site is down, doesn't count toward your allowance. ### Does the checkup look at every page? The checkup scores the homepage. The page audit reads every page from the sitemap the same way AI crawlers do. ### What happens when my score reaches 100? AI can read all of it. The next step is being recommended: see [AI visibility and rank tracking](https://unvibe.app/docs/ai-visibility.html). # AI visibility and rank tracking **The checkup score says whether AI can read your site. The AI visibility score says whether AI actually recommends it.** Unvibe asks AI your buyer questions, records whether you are named and in what position, repeats this every week, and combines the results into one score out of 100. ## AI mentions AI mentions asks an AI each of your buyer questions (for example "best invoicing app for freelancers") the way a normal user would, without naming your app. For each answer, Unvibe records: - whether your app is recommended, - its position in the list of recommendations, - which products are recommended instead. It also asks "What do you know about [your app]?" to see whether the AI knows it at all and how it describes it. You can track up to 8 questions per website. ## Weekly AI rank tracking After your first AI mentions run, Unvibe asks your questions again every week on its own. The AI mentions page then shows: - each question's movement since the previous run: up or down in position, newly named, or lost, - the trend of how often AI names you over time, - when the next weekly check is due. Weekly runs don't use your monthly AI mentions allowance. Rank tracking is included in plans that include AI mentions. ## The AI visibility score The score combines up to five parts: | Part | Weight | What it means | |---|---|---| | Recommended by AI | 45% | How often AI names you across your buyer questions, averaged over the last two runs | | Position when named | 15% | #1 scores 100, #2 scores 80, and so on | | AI knows you | 10% | Whether AI can describe your app from memory | | Facts AI gets right | 15% | The share of AI's claims about you that match your site (from fact check) | | Visitors from AI | 15% | Visits from AI assistants in the last 30 days (from AI traffic) | Parts you haven't set up are left out and the rest are weighted to fill the score, so it stays fair. Run a fact check and set up AI traffic to complete it. ## Fact check Fact check asks an AI what it knows about your app from memory, then checks each claim against your live site: price, features, audience and more. Every wrong or missing fact comes with a correction to paste into your coding agent, so your site states the facts clearly. ## Where AI gets its answers (Pro) An AI that searches the web (the way ChatGPT Search and Perplexity work) answers your tracked questions. Unvibe shows every page it read and cited, grouped as best-of lists, directories, forums, articles, videos and competitor sites, whether your site is one of them, and a draft message to get listed on the ones that matter. ## Questions ### Why do results change from week to week? AI answers vary between runs. That is why the score averages the last two runs and why the weekly trend matters more than any single answer. ### How do I get recommended more? Fix the checks under "Understood by AI" first, make sure your site states your price and audience plainly, publish pages that answer your buyer questions (Answer pages), and get listed on the sites AI cites for your questions. # All features **Unvibe is built around one loop: check what AI sees, fix it, check again, then track whether AI recommends you.** These are the tools that make up that loop. Which ones are included depends on the plan: see [Plans and limits](https://unvibe.app/docs/plans.html). ## Check and fix ### Checkup and score Reads the live homepage, robots.txt and sitemap the way AI crawlers do, visits as the real AI crawlers, and scores the site out of 100. See [The checkup and the score](https://unvibe.app/docs/checkup.html). ### Ranked fixes Every failing check becomes a fix ranked by the points it adds, with an instruction ready to paste into a coding agent. The next checkup verifies each fix on the live site. ### Page audit Reads every page from the sitemap the way AI crawlers read it and flags pages with little text, missing titles or descriptions, or problems that hide them from AI. ### Assistant A chat that answers questions about your report, AI search and SEO, using your latest checkup as context. It can also search the web and link its sources. ## Compare ### Competitors Runs the same checkup on your competitors' sites and shows them side by side, with the fix that closes each gap. ### You vs them A head-to-head with one competitor: scores in each area, who AI recommends more, which of you an AI would pick and why, and three moves to win more buyers. ## Get recommended ### AI mentions and weekly rank tracking Asks AI your buyer questions and records whether you are recommended, your position and who is named instead, then repeats it every week. See [AI visibility and rank tracking](https://unvibe.app/docs/ai-visibility.html). ### AI visibility score A score out of 100 for how much AI recommends you: recommendations, position, whether AI knows you, facts it gets right and visitors it sends. ### Fact check Checks what AI says about you against your own site and gives a correction for everything it gets wrong. ### Buyer questions and search demand Researches the questions buyers ask AI about apps like yours, and shows which of them people actually search for, based on search autocomplete signals. ### Answer pages Writes pages that answer your buyer questions from your site's own facts, ready to publish, so AI has a clear source to quote. ### Where AI gets its answers Shows the pages a web-searching AI reads and cites for your questions, and drafts a message to get listed on them. Pro plan. ## Measure ### AI traffic Counts visitors that arrive from ChatGPT, Perplexity, Claude, Gemini and other assistants, AI crawler visits, and optionally sign-ups from those visitors. See [AI traffic tracking](https://unvibe.app/docs/ai-traffic.html). ### Share card and badge Share your report as an image card, or add a badge with your score to your website or README. ## Work with your coding agent ### MCP server Claude Code, Cursor, Codex, VS Code and other MCP clients sign in to Unvibe, read the report and fixes, change the code, mark fixes as done and re-run the checkup. See [Connect your coding agent](https://unvibe.app/docs/mcp.html). # Connect your coding agent (MCP) **Unvibe has an MCP server at `https://unvibe.app/api/mcp`.** A coding agent connected to it can read your Unvibe report and fixes, change your code, mark fixes as done and re-run the checkup, without you copying anything. You sign in with your Unvibe account in the browser; there is no key to paste. ## Claude Code Run this in your project's terminal: ``` claude mcp add --transport http unvibe https://unvibe.app/api/mcp ``` Then in Claude Code, type `/mcp`, choose **unvibe** and select **Authenticate**. Sign in to Unvibe in the browser and select **Allow**. ## Cursor Add this to `.cursor/mcp.json` in your project (or Cursor Settings → MCP → Add): ```json { "mcpServers": { "unvibe": { "url": "https://unvibe.app/api/mcp" } } } ``` Then in Cursor Settings → MCP, select **Connect** next to unvibe, sign in and select **Allow**. ## Codex ``` codex mcp add unvibe --url https://unvibe.app/api/mcp codex mcp login unvibe ``` Sign in to Unvibe in the browser and select **Allow**. ## VS Code and other agents For VS Code, add this to `.vscode/mcp.json` in your project: ```json { "servers": { "unvibe": { "type": "http", "url": "https://unvibe.app/api/mcp" } } } ``` Select **Start** above the server and sign in when VS Code asks. Any other MCP client that supports Streamable HTTP and OAuth works the same way: add the server URL and sign in when asked. ## Tools | Tool | What it does | |---|---| | `list_sites` | Lists the websites in your Unvibe account with their latest score | | `get_report` | The latest checkup: score, what an AI thinks the product is, and what AI crawlers receive, with the likely cause if the page looks empty | | `get_fixes` | Open fixes, most valuable first, each with an id, what was found and exactly what to change | | `mark_fixed` | Marks a fix as done after the code changed; the next checkup verifies it | | `get_tracking_setup` | The AI-traffic tracking code for the site, ready to install | | `run_checkup` | Runs a fresh checkup of the live site (deploy first); counts toward the checkup allowance | ## A typical loop Ask your agent something like: *"Use Unvibe to get my fixes and apply them."* It calls `get_report` and `get_fixes`, changes the code, calls `mark_fixed`, and after you deploy, `run_checkup` confirms the new score. ## Plans Connecting a coding agent is part of the Starter plan (one agent of your choice) and the Pro plan (up to 5 agents). See [Plans and limits](https://unvibe.app/docs/plans.html). ## Questions ### Does the agent get access to my whole account? It can read your Unvibe websites, reports and fixes, mark fixes as done, run checkups and fetch the tracking code. You can disconnect it any time on the MCP page in Unvibe. ### Which transport and auth does the server use? Streamable HTTP with JSON responses, and OAuth 2.1 with PKCE and dynamic client registration. The protected-resource metadata is at `https://unvibe.app/.well-known/oauth-protected-resource`. # AI traffic tracking **Unvibe's AI traffic tracking counts the visitors that AI assistants send to your site.** One script tag counts visits from ChatGPT, Perplexity, Claude, Gemini and other assistants and which page they land on. An optional server snippet also counts visits from AI crawlers, which don't run JavaScript. ## Privacy It collects anonymous counts only: which AI assistant or crawler, and the page path. No cookies, no IP addresses and no personal data, so it doesn't need a cookie banner. ## 1. Visits from AI assistants In Unvibe, open **AI traffic** and select **Get my tracking code**. Add the script it gives you to the `
` of every page: ```html ``` If your site sends a Content-Security-Policy, allow `https://unvibe.app` in `script-src` and `connect-src`. Optionally, count sign-ups from AI visitors by calling this after a successful sign-up or purchase. It only counts visitors who arrived from an AI assistant: ```js window.unvibe && window.unvibe('convert'); ``` ## 2. AI crawler visits AI crawlers such as GPTBot, ClaudeBot and PerplexityBot don't run JavaScript, so they are counted on the server. If your site runs on Next.js or on Vercel, the AI traffic page gives you a ready middleware file with your key. It sends one small anonymous request per AI crawler visit and doesn't slow down your pages. ## The easy way: ask your coding agent With Unvibe connected over [MCP](https://unvibe.app/docs/mcp.html), ask your agent: *"Use the Unvibe MCP tool get_tracking_setup for my site and install the AI-traffic tracking it describes."* ## What you see - Visitors from AI assistants over the last 30 days, by assistant and by landing page. - AI crawler visits, by crawler. - Sign-ups from AI visitors, if you added the optional call. AI traffic also feeds the [AI visibility score](https://unvibe.app/docs/ai-visibility.html). It is part of the Starter and Pro plans. # Plans and limits **Unvibe has three plans: Free, Starter at $5.99 a month, and Pro at $9.99 a month or $89.99 a year.** Every plan runs the full checkup. Paid plans add more checkups and websites, AI mentions and rank tracking, AI traffic and coding agents over MCP. Payments are handled by Paddle. | | Free | Starter | Pro | |---|---|---|---| | Price | $0 | $5.99 a month | $9.99 a month or $89.99 a year | | Websites | 1 | 2 | 5 | | Checkups | 3 in the first month, then 1 a month | 15 a month | 35 + 5 bonus a month | | Assistant | Weekly limit | 4× Free, weekly limit | No limit | | Page audit and competitor benchmark | ✓ | ✓ | ✓ | | AI mentions, weekly rank tracking, fact check, buyer questions | – | ✓ | ✓ | | Answer pages, search demand, You vs them | – | ✓ | ✓ | | AI traffic | – | ✓ | ✓ | | Coding agents over MCP | – | 1 | Up to 5 | | Where AI gets its answers | – | – | ✓ | | Early beta features | – | – | Yearly billing | ## How limits work - **Checkups and other monthly limits** are counted in monthly periods that start on the day you created your account, and don't roll over. A checkup that fails, for example because the site is down, doesn't count. - **The assistant** has a weekly limit on Free and Starter, counted in 7-day periods from the day you created your account. Pro has no assistant limit. - **Settings → Plan and usage** in the app shows how much of each limit you've used and when it resets. The assistant warns you before you reach its limit. - **Weekly rank tracking** runs don't use your AI mentions allowance. ## Changing or cancelling Upgrade from the [pricing page](https://unvibe.app/pricing.html). If you already pay, switching between Starter and Pro changes your subscription right away and Paddle charges or credits the difference. Cancel any time in Settings → Plan and usage → Manage billing; your plan stays active until the end of the period you've paid for. Paid plans are refundable within 3 days if unused: see the [Terms](https://unvibe.app/terms.html#refunds). # Fix guides by builder **The same five fixes make most AI-built apps readable by ChatGPT, Claude and Perplexity:** put the text in the HTML, say what the app is in the first line, describe it in structured data, publish a sitemap, and let AI crawlers in. How you apply them depends on what built your app. Run an [Unvibe checkup](https://unvibe.app/signup.html) first to see which ones you need. ## The five fixes 1. **Text in the HTML.** AI crawlers read the raw HTML and don't run JavaScript. Your homepage text must be in the HTML before any JavaScript runs: server-side rendering, static generation or pre-rendering. 2. **Say what it is, first.** The first line, page title and meta description should say what the app does and who it is for, in plain words. 3. **Structured data.** A JSON-LD block that describes the app as a `SoftwareApplication`, with its name, category, description and price. 4. **Sitemap.** A `sitemap.xml` listing your public pages, linked from `robots.txt`. 5. **Let AI crawlers in.** `robots.txt` must allow GPTBot, OAI-SearchBot, ClaudeBot and PerplexityBot, and your CDN or firewall must not block them. ## Lovable and Bolt These builders usually produce a single-page React app (Vite), where the text is added by JavaScript. Ask the builder: > Make sure the homepage text, title and description are in the HTML without JavaScript, by pre-rendering the public pages. Add a JSON-LD SoftwareApplication block with our name, description and price to index.html, add a sitemap.xml and a robots.txt that allows GPTBot, ClaudeBot and PerplexityBot to the public folder. Then run a checkup: the "Readable by crawlers" area shows whether crawlers now get the text. ## v0 and Next.js Next.js renders pages on the server by default, so the text is usually in the HTML already. Check that your homepage isn't fully client-rendered (a page marked `"use client"` that loads its content after mounting). Add metadata with the `metadata` export, JSON-LD in a `