# Can agents read toppik.ro?

**81/100, Mostly.** Agents can read most of toppik.ro. Fix the first item below and it reaches Yes.

Scanned 3 Nov 2026, 11:13 UTC · 8 pages · scoring v1 · [Full report](https://canagentsread.com/toppik.ro)

| Tier | Points | Checks |
|---|---|---|
| Getting in | 64.5 / 75 | 4 passed · 1 partial |
| Making sense | 11.3 / 15 | 8 passed · 2 partial · 1 failed |
| Extras | 5.6 / 10 | 9 passed · 6 partial · 7 failed · 3 doesn't apply |

## Biggest wins first

1. **Give the homepage an H1** (+10.5 points): 22,576 characters of text in the server HTML, 0 H1 and 25 H2s.
2. **Serve Markdown when it's asked for** (+3 points): Asking the homepage for text/markdown still returns text/html; charset=UTF-8.
3. **Link About, Contact and Privacy** (+0.5 points): Found: About, Contact. Missing: Privacy (not linked from the homepage).
4. **Say in llms.txt when to use the site** (+0.5 points): llms.txt doesn't say when an agent should point people to this site.
5. **Publish .md copies of pages** (+0.5 points): No /index.md, and 0 of 3 pages we tried have a .md copy.
6. **Link to the Markdown version** (+0.5 points): The homepage has no <link rel="alternate" type="text/markdown">.
7. **Serve Markdown to AI user agents** (+0.5 points): AI agents that don't ask for Markdown get HTML.
8. **Link to your other profiles** (+0.5 points): No sameAs profiles in the schema.
9. **Add a Content-Signal line to robots.txt** (+0.5 points): robots.txt has no Content-Signal line.
10. **Describe products in schema.org** (+0.5 points): The site looks like it sells products, but no page we read has Product schema.
11. **Say who runs the site** (+0.3 points): The Organization schema has 3 of 6 fields; missing sameAs, contactPoint, address.
12. **Lay out llms.txt like a contents page** (+0.2 points): llms.txt has 38,581 characters, over the 30,000 that fit in one read.
13. **Point to agent files in a Link header** (+0.2 points): The homepage sends a Link header, but it names no agent files.
14. **Name AI agents in robots.txt** (+0.2 points): robots.txt lets AI agents in, but only through User-agent: *. It doesn't name OAI-SearchBot, Claude-SearchBot, PerplexityBot, ChatGPT-User, Claude-User, Perplexity-User.
15. **Link an RSS or Atom feed** (+0.2 points): The homepage links a feed at https://toppik.ro/feed, but it didn't load (HTTP 403).
16. **Give the page a clear outline** (+0.2 points): 4 of 6 outline parts in place. Missing: one H1, no skipped heading levels (H2 → H5, H3 → H5).
17. **Label every form field** (+0.1 points): 16 of 60 form fields have no label.

A prompt for a coding agent with the five biggest fixes is at https://canagentsread.com/toppik.ro/fix-prompt.md.

## Getting in (64.5 of 75 points)

### Words are in the HTML

Partial · 10.5 / 21 points · `no_js_content`

22,576 characters of text in the server HTML, 0 H1 and 25 H2s.

**How to fix:** Put the page's words in the HTML your server sends, with server-side rendering or static generation, so they are there before any JavaScript runs. Give the page one H1 and use H2s for its sections.

### AI agents are let in

Passed · 21 / 21 points · `agent_access`

All 4 AI agents get the page: ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot.

### Pages are public, with real text

Passed · 13 / 13 points · `public_content`

All 8 pages we read are public and have real content.

### Redirects don't detour

Passed · 11 / 11 points · `clean_redirects`

No meta-refresh stubs, JavaScript redirects or cross-domain hops across 8 pages.

### Dead links say so

Passed · 9 / 9 points · `agent_404`

A missing page returns HTTP 404 with links back into the site.

## Making sense (11.3 of 15 points)

### Speaks Markdown when asked

Failed · 0 / 3 points · `md_negotiation`

Asking the homepage for text/markdown still returns text/html; charset=UTF-8.

**How to fix:** When a request's `Accept` header asks for `text/markdown`, answer with a Markdown version of the page: send `Content-Type: text/markdown` and start with the page title as a `#` heading. Add `Vary: Accept` so caches keep the HTML and Markdown versions apart.

### Says who runs it

Partial · 0.3 / 0.5 points · `org_schema`

The Organization schema has 3 of 6 fields; missing sameAs, contactPoint, address.

**How to fix:** Describe your company in Organization JSON-LD on the homepage, with all six fields:

```json
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Your company",
  "url": "https://example.com",
  "logo": "https://example.com/logo.png",
  "sameAs": ["https://www.linkedin.com/company/your-company"],
  "contactPoint": {"@type": "ContactPoint", "contactType": "customer support", "email": "hello@example.com"},
  "address": {"@type": "PostalAddress", "addressLocality": "City", "addressCountry": "RO"}
}
```

### About, Contact, Privacy linked

Partial · 1 / 1.5 points · `trust_pages`

Found: About, Contact. Missing: Privacy (not linked from the homepage).

**How to fix:** Link to your About, Contact and Privacy pages from every page, usually in the footer, and make sure each one loads without signing in.

### Visible to search

Passed · 1.5 / 1.5 points · `indexable`

The homepage lets search engines index it.

### Has a map of its pages

Passed · 1.5 / 1.5 points · `sitemap`

The sitemap lists 78 pages; 5 of the 5 we opened load.

### Prices are findable

Passed · 1.5 / 1.5 points · `pricing_page`

Prices are in the server HTML on 8 of the pages we read.

### Describes itself in schema.org

Passed · 1.5 / 1.5 points · `json_ld`

The homepage JSON-LD names the site with a name and url.

### Page basics filled in

Passed · 1.5 / 1.5 points · `metadata`

Canonical URL, language, description and Open Graph tags are all filled in.

### Each page names one address

Passed · 0.5 / 0.5 points · `canonical`

All 7 canonicals we found name their own page.

### Images are described

Passed · 0.5 / 0.5 points · `image_alt`

1 of 76 images have no useful alt text, such as 3.png.

### Pages fit in one read

Passed · 1.5 / 1.5 points · `token_budget`

Every page we read fits in one read; the largest is about 8,000 tokens.

## Extras (5.6 of 10 points)

### Says when to use it

Failed · 0 / 0.5 points · `llms_guidance`

llms.txt doesn't say when an agent should point people to this site.

**How to fix:** Add a section to llms.txt that tells agents when to point people to you, and when not to:

```markdown
## When to use this site
- Comparing prices for X
- Not for: Y
```

### .md copies of pages

Failed · 0 / 0.5 points · `md_twins`

No /index.md, and 0 of 3 pages we tried have a .md copy.

**How to fix:** Serve a Markdown copy of each page at its address plus `.md` (`/pricing` → `/pricing.md`, `/docs/` → `/docs/index.md`), and of the homepage at `/index.md`, sent as `text/markdown`.

### Points to its Markdown

Failed · 0 / 0.5 points · `md_alternate`

The homepage has no <link rel="alternate" type="text/markdown">.

**How to fix:** Add a link to the page's Markdown version in its `<head>`, and make sure the address returns `text/markdown`:

```html
<link rel="alternate" type="text/markdown" href="/index.md">
```

### Gives AI agents Markdown without being asked

Failed · 0 / 0.5 points · `bot_markdown`

AI agents that don't ask for Markdown get HTML.

**How to fix:** Serve the Markdown version of a page to known AI user agents (ChatGPT-User, Claude-User, PerplexityBot and the like) even when they send `Accept: */*`. Match the user agent in your server or CDN, return `text/markdown`, and send `Vary: User-Agent`.

### Links to its other profiles

Failed · 0 / 0.5 points · `same_as`

No sameAs profiles in the schema.

**How to fix:** List your official profiles in your Organization JSON-LD:

```json
"sameAs": ["https://www.linkedin.com/company/your-company", "https://github.com/your-company"]
```

### States its AI preferences

Failed · 0 / 0.5 points · `content_signals`

robots.txt has no Content-Signal line.

**How to fix:** Add a Content-Signal line to robots.txt saying how your content may be used. For example, to allow search and live AI answers but not training:

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

The choice is yours: any setting earns the points.

### Products are described

Failed · 0 / 0.5 points · `product_data`

The site looks like it sells products, but no page we read has Product schema.

**How to fix:** Describe each product in JSON-LD with its name, image, an identifier and an offer:

```json
{"@type": "Product", "name": "Blue mug, 350 ml", "image": "https://example.com/mug.jpg", "sku": "MUG-350-BLUE",
 "offers": {"@type": "Offer", "price": "29.00", "priceCurrency": "EUR", "availability": "https://schema.org/InStock"}}
```

### llms.txt reads like a contents page

Partial · 0.2 / 0.5 points · `llms_format`

llms.txt has 38,581 characters, over the 30,000 that fit in one read.

**How to fix:** Start llms.txt with a `#` heading naming the site, follow it with Markdown links to your key pages (`[Pricing](https://example.com/pricing): plans and prices`), and keep it under 30,000 characters. Move long content into the pages it links to.

### Points to agent files in HTTP headers

Partial · 0.2 / 0.5 points · `link_headers`

The homepage sends a Link header, but it names no agent files.

**How to fix:** Add a `Link` header to the homepage response that points agents to your agent files:

```http
Link: </llms.txt>; rel="describedby", </index.md>; rel="alternate"; type="text/markdown"
```

### Clear rules for AI bots

Partial · 0.2 / 0.5 points · `robots_ai_policy`

robots.txt lets AI agents in, but only through User-agent: *. It doesn't name OAI-SearchBot, Claude-SearchBot, PerplexityBot, ChatGPT-User, Claude-User, Perplexity-User.

**How to fix:** Name the AI agents that fetch pages to answer people, and let them in, in robots.txt:

```
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
User-agent: ChatGPT-User
User-agent: Claude-User
User-agent: Perplexity-User
Allow: /
```

You can still block training crawlers like GPTBot, ClaudeBot or CCBot; that doesn't cost points.

### Clear page outline

Partial · 0.3 / 0.5 points · `doc_structure`

4 of 6 outline parts in place. Missing: one H1, no skipped heading levels (H2 → H5, H3 → H5).

**How to fix:** Wrap the page in landmarks (`<header>`, `<nav>`, `<main>` and `<footer>`), give it one `<h1>`, and step down one heading level at a time: H1, then H2, then H3.

### Every field has a label

Partial · 0.3 / 0.5 points · `form_labels`

16 of 60 form fields have no label.

**How to fix:** Give every field a `<label>`, either around it or linked with `for` and `id`:

```html
<label for="email">Email</label>
<input id="email" type="email" name="email">
```

For a field with no visible label, such as a search box, add `aria-label="Search"`.

### Has an update feed

Partial · 0.2 / 0.5 points · `feed`

The homepage links a feed at https://toppik.ro/feed, but it didn't load (HTTP 403).

**How to fix:** Link your feed from the homepage's `<head>`:

```html
<link rel="alternate" type="application/rss+xml" title="News" href="/feed.xml">
```

Most blog and CMS platforms already make the feed; it only needs linking.

### Leaves an llms.txt

Passed · 0.5 / 0.5 points · `llms_txt`

There is an llms.txt at /llms.txt (38,581 characters).

### llms.txt links work

Passed · 0.5 / 0.5 points · `llms_links`

All 5 llms.txt links we opened load.

### Sitemap says what changed

Passed · 0.5 / 0.5 points · `sitemap_fresh`

78 of 78 sitemap entries have a <lastmod> date.

### Real buttons and links

Passed · 0.5 / 0.5 points · `native_controls`

28 of 1,190 controls are elements made clickable with script (98% are real).

### Buttons say what they do

Passed · 0.5 / 0.5 points · `control_names`

19 of 1,187 buttons and links have no name, such as a link to https://toppik.ro/nanofibre-par-ce-sunt-cum-functioneaza, a link to https://toppik.ro/garantiile-si-beneficiile-toppik, a link to https://toppik.ro/rezultate-toppik-foto-video, a link to https://api.whatsapp.com/send?phone=40757640318, a link to https://toppik.ro/categorie/fibre-pentru-par-rar-toppik.

### No hidden instructions

Passed · 0.5 / 0.5 points · `no_hidden_prompts`

No instructions for AI agents hidden in the 8 pages we read.

### Says when pages were updated

Passed · 0.5 / 0.5 points · `dates`

6 of 8 pages we read show a publish or update date.

### Answers quickly

Passed · 0.5 / 0.5 points · `speed`

The homepage answered in a middle time of 107 ms across 5 fetches.

### Can be searched by URL

Passed · 0.5 / 0.5 points · `site_search`

The homepage tells agents how to search: a SearchAction.

### Lists its APIs

Doesn't apply · not scored · `api_catalog`

No API catalog at /.well-known/api-catalog.

### Publishes an agent card

Doesn't apply · not scored · `agent_card`

No agent card at /.well-known/agent-card.json or /.well-known/agent.json.

### Shipping and returns are findable

Doesn't apply · not scored · `shop_policies`

The site doesn't sell on its own pages: no cart or checkout links, and no offers of its own.

---

Scanned by [canagentsread](https://canagentsread.com), which checks whether AI agents can read a website. Scores read: 85–100 Yes, 65–84 Mostly, 40–64 Partly, 0–39 No.
