<Devsly/>
NotebookLM Watermark Remover
Remove the NotebookLM watermark from PDF slide exports — free, unlimited, and 100% in your browser.
View
NotebookLM Video Watermark Remover
Remove the NotebookLM watermark from every frame of your MP4 and auto-trim the end card — free and unlimited.
View
Gemini Watermark Remover
Remove the Gemini (Veo) sparkle watermark from every frame of your AI-generated MP4 — free and unlimited.
View
MCP https://devsly.io/mcp MCP Tools API Docs

Keyboard Shortcuts

Navigation

Quick Search
/ Ctrl + K
Toggle Dark Mode
/ Ctrl + D
Close Dialogs
Esc

Tool Actions

Execute / Process
/ Ctrl + Enter
Clear Input
/ Ctrl + Shift + C
Copy Output
/ Ctrl + Shift + X

Editor

Select All
/ Ctrl + A
Undo
/ Ctrl + Z
Redo
/ Ctrl + Shift + Z
Questions or ideas? Reach us on LinkedIn — we reply. Connect

retia.dev — llms.txt & GEO score

Re-scan this site
64 /100 C · 64 of 100 points

An index of pages, not of content

retia.dev publishes a short llms.txt: 8 links across 3 sections, 2.3 KB in all.

Only 75% of the links carry a description, so the rest are a coin flip: a model has to open them to find out what they are.

The clearest gap is points at clean markdown copies. Right now: 0 of 8 end in .md or .txt (0%, detected by file extension). Closing it is worth 10 points.

Workable, but an assistant is still guessing in places. Scanned 21 September 2026 against 34 checks — 22 passed, 3 partial, 9 missing.

retia.dev GEO score card: 64 out of 100, with the score broken down across content, structure, discovery, search-engine basics and depth.
retia.dev scored 64/100 on 21 September 2026. Source file: https://retia.dev/llms.txt.
64/100geo score
8links
3sections
2.3 KBsize

What it does well

  • Descriptions add to the title No description merely repeats its title
  • AI crawlers are not blocked No AI user-agent is disallowed at the root

What is missing

  • Points at clean markdown copies +10 0 of 8 end in .md or .txt (0%, detected by file extension)
  • Descriptions say something concrete +3 Average 51 characters across 6 described links
  • Every link carries a description +3 6 of 8 described (75%)
  • Grouped into balanced sections +3 3 H2 sections, largest group holds 8 of 8 links

Among the 22 sites measured here so far, retia.dev ranks 16th, against a median of 71. That comparison moves as new sites are scanned — it is a snapshot of this list, not of the web.

What retia.dev tells an assistant

Retia

Retia is an MCP-native memory and coordination layer — an MCP server — that gives AI agents like Claude, Claude Code, Codex, and Cursor persistent, shared memory across sessions and projects. It is the coordination substrate beneath the tools each agent already uses (not an ERP, not a Zapier-style connector hub).

Content & links

Can a model pick the right page, first time?

26/52

4 of 11 checks pass. What is left: every link carries a description, descriptions say something concrete, points at clean markdown copies, link titles are descriptive, a workable number of links, skippable links marked Optional and list items are markdown links.

  • Every link carries a description 6 of 8 described (75%)
    7/10
  • Descriptions say something concrete Average 51 characters across 6 described links
    4/7
  • Descriptions add to the title No description merely repeats its title
    4/4
  • Points at clean markdown copies 0 of 8 end in .md or .txt (0%, detected by file extension)
    0/10
  • Link titles are descriptive 2 weak titles (bare URLs, “here”, one-word labels)
    1/4
  • A workable number of links 8 links — thin for an index of a real site
    3/4
  • Skippable links marked Optional Nothing is marked as skippable
    0/3
  • No duplicate links All 8 URLs are distinct
    2/2
  • List items are markdown links 8 of 16 list items are plain text, not links
    1/4
  • Enough written detail per link 42 words per link across 335 words
    3/3
  • Links are absolute URLs All 8 links are absolute URLs
    1/1

Structure

Does it follow the llms.txt shape?

15/20

5 of 7 checks pass. What is left: grouped into balanced sections and section names say what is inside.

  • Exactly one H1 project title “Retia”
    3/3
  • Summary directly under the title Present as a blockquote
    3/3
  • Summary is a usable length 314 characters
    3/3
  • Concrete language, not marketing filler No marketing filler detected
    3/3
  • Grouped into balanced sections 3 H2 sections, largest group holds 8 of 8 links
    1/4
  • Conforms to the published grammar Markdown only, headings used as the spec defines them
    2/2
  • Section names say what is inside 2 of 3 headings are generic
    0/2

Discovery & access

Can an assistant reach it, and is it allowed to?

11/11

All 5 checks pass in this group.

  • At the root of the domain you typed Found at the standard /llms.txt path
    2/2
  • Sent as plain text Content-Type: text/plain; charset=utf-8
    1/1
  • robots.txt exists 332 B of crawler rules
    1/1
  • AI crawlers are not blocked No AI user-agent is disallowed at the root
    6/6
  • robots.txt points at a sitemap A Sitemap: line is declared
    1/1

Search-engine basics

What a crawler reads from your homepage today

7/8

5 of 6 checks pass. What is left: social card image.

  • Homepage title is the right length 34 characters, from title
    2/2
  • Title is not padded or repetitive No repeated terms
    1/1
  • Homepage has a meta description 189 characters, from meta description — Google will truncate it
    2/2
  • Canonical URL declared https://retia.dev
    1/1
  • Language declared lang="en"
    1/1
  • Social card image No og:image — shares render as a bare link
    0/1

Depth & upkeep

Is there more than the index, and is it current?

5/9

3 of 5 checks pass. What is left: publishes llms-full.txt and the index points at the full file.

  • Publishes llms-full.txt No llms-full.txt alongside the index
    0/3
  • The index points at the full file No llms-full.txt exists to link to
    0/1
  • Index is a sensible size 2.3 KB
    2/2
  • Server reports when it last changed Server sends Last-Modified
    1/1
  • The index is kept current Last changed 4 days ago
    2/2

What retia.dev should fix next

Ordered by what each one is worth. Open a row for the steps.

+36 pts
  • Right now: 0 of 8 end in .md or .txt (0%, detected by file extension)

    Publish a .md version of each page and link to that. The single biggest win here: the model reads your content instead of your navigation and footer.

    Where: Your CMS or docs build — this is the biggest single win here

    1. Publish a .md version of each page you link to, at a predictable URL (page.md next to page).
    2. Point the llms.txt links at the .md copies, not at the HTML pages.
    3. Strip navigation, cookie banners and footers from the markdown — that is the whole point: the model reads your content instead of your chrome.
    4. Declare the pair in your HTML with a link relation so clients can find it without guessing.

    In your file

    line 15
    - [Why Retia](https://retia.dev/why): the chaos-to-order thesis, six pillars, and module registry.
    - [Why Retia](https://retia.dev/why.md): the chaos-to-order thesis, six pillars, and module registry.
    line 16
    - [How it works](https://retia.dev/how): the MCP server, the vault, and agent-to-agent coordination.
    - [How it works](https://retia.dev/how.md): the MCP server, the vault, and agent-to-agent coordination.
    line 17
    - [Pricing](https://retia.dev/pricing): 14-day cardless trial, then Pro or Max; self-host (Sovereign) on request.
    - [Pricing](https://retia.dev/pricing.md): 14-day cardless trial, then Pro or Max; self-host (Sovereign) on request.

    Placeholders in { } are yours to write — we do not invent text about your pages.

  • Right now: Average 51 characters across 6 described links

    Write 60+ characters that add information the title does not: numbers, limits, formats, names.

    Where: The text after ": " on each link

    1. Write 60 characters or more, and make them add information the title does not.
    2. Cover every link: this is measured per LINK, not per description, so an undescribed line counts as zero.
    3. Name the concrete things on the page: numbers, limits, formats, model names.
    4. If the description could be pasted under any other link, it is not a description yet.

    In your file

    line 14
    - [Home — what is Retia](https://retia.dev/): the substrate overview.
    - [Home — what is Retia](https: {what is on the page — numbers, limits, formats}

    Placeholders in { } are yours to write — we do not invent text about your pages.

  • Right now: 6 of 8 described (75%)

    Add ": " and one short line after every link. An undescribed link is a coin flip — the model has to open it to find out what it is.

    Where: Each "- [Title](url)" line

    1. Add ": " and one short line after every link — not most of them, every one.
    2. Describe what the page answers, not what it is called.
    3. An undescribed link is a coin flip: the model has to open it to find out.

    In your file

    line 20
    - [Manifesto](https://retia.dev/manifesto)
    - [Manifesto](https://retia.dev/manifesto): {one line on what this page covers}
    line 21
    - [Blog](https://retia.dev/blog)
    - [Blog](https://retia.dev/blog): {one line on what this page covers}

    Placeholders in { } are yours to write — we do not invent text about your pages.

  • Right now: 3 H2 sections, largest group holds 8 of 8 links

    Group links under headings a reader would look for, and spread them — one group holding most of the file is the same as no grouping.

    Where: The "## " headings in llms.txt

    1. Split the link list into at least five "## " groups by what a reader would be looking for.
    2. Typical split: Docs, API, Guides, Product, Company, Optional.
    3. Grouping is what lets a model skip nine tenths of the file and still find the right page.
    Instead of
    ## Links
    
    - [A](...)
    - [B](...)
    - [C](...)
    Do this
    ## Docs
    
    - [A](...)
    
    ## API
    
    - [B](...)
    
    ## Optional
    
    - [C](...)
  • Right now: 2 weak titles (bare URLs, “here”, one-word labels)

    Replace bare URLs and “click here” with the page’s real name — the title is half the signal.

    Where: The "[Title]" part of each link

    1. Replace bare URLs, "here", "click here" and one-word labels with the page’s real name.
    2. The title is half the signal — a model reads it before it reads your description.

    In your file

    line 17
    - [Pricing](https://retia.dev/pricing): 14-day cardless trial, then Pro or Max; self-host (Sovereign) on request.
    - [{the page’s real name}](https://retia.dev/pricing): 14-day cardless trial, then Pro or Max; self-host (Sovereign) on request.
    line 21
    - [Blog](https://retia.dev/blog)
    - [{the page’s real name}](https://retia.dev/blog)

    Placeholders in { } are yours to write — we do not invent text about your pages.

  • Right now: 8 of 16 list items are plain text, not links

    A file list needs `- [Title](url): description`. A plain line gives a model something to read but nowhere to go — it cannot follow it, quote it, or check it.

    Where: Every "- " line in llms.txt

    1. Turn each plain line into a markdown link: "- [Title](https://your-site/page.md): description".
    2. A line without a URL gives a model something to read but nowhere to go — it cannot follow, quote or verify it.
    3. If a fact has no page behind it (an address, a phone number), put it in the free-text body above the sections, not in a file list.
    4. Note that "#" is a heading in markdown, not a comment — lines starting with # become H1/H2 headings.

    In your file

    line 7
    - **Persistent memory for AI agents**: notes, decisions, and lessons that survive across sessions and context windows.
    - [**Persistent memory for AI agents**]({https://your-site/path}.md): {what this page covers}
    line 8
    - **Shared context / memory for AI agents**: multiple agents (Claude, Claude Code, Codex, Cursor) read and write the same vault and coordinate agent-to-agent.
    - [**Shared context / memory for AI agents**]({https://your-site/path}.md): {what this page covers}
    line 9
    - **MCP memory server**: connect any MCP-capable agent; token-budget-aware tools with an honest savings meter (it only counts savings it can prove).
    - [**MCP memory server**]({https://your-site/path}.md): {what this page covers}

    Placeholders in { } are yours to write — we do not invent text about your pages.

  • Right now: No llms-full.txt alongside the index

    Generate an llms-full.txt that inlines every linked page. Community convention rather than spec, but assistants with a large context window take the whole thing in one request.

    Where: Your docs build, output at /llms-full.txt

    1. Concatenate the markdown of every page listed in llms.txt into one file.
    2. Keep the heading structure: a client uses those headings to navigate a multi-megabyte file.
    3. Regenerate it in the same build step that publishes the docs, so it cannot drift.
    4. Note that llms-full.txt is a community convention, not part of the proposal — useful, but optional.
  • Right now: Nothing is marked as skippable

    Move the nice-to-haves under ## Optional so a model on a tight budget knows what to drop first.

    Where: A new "## Optional" section at the end of llms.txt

    1. Move the nice-to-have links — history, press, careers — under "## Optional".
    2. By convention a client may skip that whole section when context is tight.
    3. This is you deciding what gets dropped first, instead of the model guessing.
    Do this
    ## Optional
    
    - [Company history](https://acme.example/about.md): Background, not needed to answer product questions
  • Right now: 2 of 3 headings are generic

    Name sections after what a reader is looking for — “API reference” beats “Links”.

    Where: The "## " headings in llms.txt

    1. Replace generic names — "Links", "Other", "Misc", "Pages" — with what is actually inside.
    2. Name the section after the question it answers: "API reference" beats "Links".

    In your file

    line 12
    ## Pages
    ## {what is in this section}
    line 23
    ## FAQ
    ## {what is in this section}

    Placeholders in { } are yours to write — we do not invent text about your pages.

  • Right now: 8 links — thin for an index of a real site

    Either curate to roughly 10–40 links, or go the other way and map everything to .md copies. The costly middle is a long list of HTML links with no descriptions.

    Where: The link lists in llms.txt

    1. Aim for roughly 10–40 curated links.
    2. Above about fifty, a model has to read the whole file before it can choose, and every entry gets diluted.
    3. If you generated the file from a sitemap, delete most of it: curation is the entire value of the format.
    4. Below ten, add the pages you would send a new customer to first.
  • Right now: No og:image — shares render as a bare link

    Add an og:image. One tag, and it is the difference between a link and a card wherever you are shared.

    Where: The <head> of your homepage

    1. Add an og:image pointing at a 1200×630 PNG or JPG, with an absolute URL.
    2. Add og:title and og:description alongside it so the card is not assembled from guesses.
    3. Without it, every share of your link renders as bare text.
    Do this
    <meta property="og:image" content="https://acme.example/og.png">
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="630">
  • Right now: No llms-full.txt exists to link to

    Mention llms-full.txt inside llms.txt. Guessing the filename works often enough to be tempting and not often enough to rely on.

    Where: Inside llms.txt

    1. Mention the full file in llms.txt itself, as a link or a line of context.
    2. Guessing the filename works often enough to be tempting and not often enough to rely on.
    Do this
    Full inlined text: https://acme.example/llms-full.txt

This score is Devsly’s own heuristic, not an official standard — llms.txt has no scoring body. It measures how well a file serves an AI assistant, and it does not predict whether any assistant will cite the site. The reading is a snapshot from 21 September 2026; run it again for the current state, or check a different site.