---
title: AI visibility
status: current
order: 14
---

# AI visibility

When someone asks ChatGPT, Claude or Perplexity about what you sell, the assistant reads websites first and then answers. If it can't read yours, it recommends someone else.

**Visibility** in your site's dashboard reads your live site the same way an AI crawler does and tells you what's missing. Each problem says **who fixes it** (your content in Pluma, or your site's code) and gives you a sentence to hand your agent.

- It needs the site's live URL: set it in **Settings → General** or with `update_site`.
- It reads only public `https` pages and changes nothing on your site.
- Anyone on the site can run it, once a minute at most.
- Agents use it too: `check_readiness` runs it and `get_readiness` reads the last result ([MCP tools](../mcp/tools.md)). In the API, `GET` and `POST /api/v1/spaces/:space_id/readiness` ([Management API](../api/management.md#ai-readiness)).

These are the checks, in the order the page shows them.

## Reachable

Your home page answers with a 200. An assistant can't read a site that doesn't load, redirects in a loop, or takes more than 8 seconds.

## Title and description

The home page has a `<title>` and a `<meta name="description">`. Assistants read them first to know what the business is. Write one plain sentence: what you sell, where, and for whom. It lives in your content, so you can change it in Pluma.

## Search bots

`robots.txt` doesn't block the bots that assistants use to read and cite pages: `OAI-SearchBot` and `ChatGPT-User` (ChatGPT), `PerplexityBot` (Perplexity), `Claude-SearchBot` and `Claude-User` (Claude). Blocking one hides you from that assistant.

Training bots (`GPTBot`, `ClaudeBot`, `Google-Extended`, `Applebot-Extended`, `CCBot`) are a separate choice: blocking them keeps your pages out of model training and doesn't hide you from answers. The check lists them but doesn't fail for them.

## Content signals

A `Content-Signal` line in `robots.txt` says how AI companies may use your pages:

```text
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=no
Allow: /
```

`search` is for search results, `ai-input` for answering questions, `ai-train` for training models. Not every company honors it yet, so it's a warning, not a failure.

## Sitemap

A `sitemap.xml` lists every public page so crawlers find all of them, not only the ones linked from the home page. Pluma looks for the `Sitemap:` line in `robots.txt` first, then `/sitemap.xml`.

## Summary for AI

An `llms.txt` at the root of your site: a short Markdown page with the business name as the title, one paragraph saying what it is, and links to the main pages ([llmstxt.org](https://llmstxt.org)). Build it from your content in Pluma so it stays up to date.

## Markdown

When a request says `Accept: text/markdown`, your pages answer in Markdown instead of HTML. Assistants read it faster and with less noise. If your site builds from Pluma, it already has the content to render.

## Structured data

JSON-LD on the home page that says who the business is: `LocalBusiness` (or the closest type, like `Bakery` or `Restaurant`), `Organization` or `Person`, with name, address, phone, opening hours, logo and social links. Assistants use it for "where", "when" and "how much" answers ([schema.org](https://schema.org/LocalBusiness)).

## MCP card

A file at `/.well-known/mcp/server-card.json` that describes an MCP server for your site, so agents can discover actions it offers (booking, ordering). Optional for now: the standard is still a draft.
