Citehound

io.github.andacuzelPublished by GitHub account andacuzelv1.0.0Updated Oct 29, 2026

Scan any domain for AI readiness and generate llms.txt, robots.txt and schema. Free, read-only.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingDeveloper ToolsData & Analytics

Overview

AI-generated overview

Citehound scans a domain's public files for AI readiness, compares sites, and generates llms.txt, robots.txt and JSON-LD schema.

What you can do
  • Scan and compare sites: score a domain out of 100 on discoverability, technical foundation and content trust, or compare two domains check by check
  • Generate files: produce robots.txt rules for named AI crawlers, llms.txt descriptions and ready-to-paste JSON-LD structured data
  • Look up AI crawlers: list the ten tracked crawlers, who runs them and what allowing or blocking means
  • Read guidance: fetch GEO/AEO playbooks per vertical, the scoring methodology and buying-intent citation prompts
  • Review data: return archived benchmark summaries, a sample citation run, published research and a sample Pro report
When to use it
Useful when checking whether a site is readable and citable by AI assistants, preparing llms.txt, robots.txt or structured data, or comparing your site against a competitor. Also handy for reading Citehound's methodology, benchmarks and research without leaving the assistant.
Requirements
Runs as a remote streamable HTTP endpoint at getcitehound.com; no packages, environment variables or headers are declared. The tools fetch public pages of the domains being scanned, so network access is needed.
Before you install
Scanning sends the target domain's public robots.txt, llms.txt, sitemap and homepage to Citehound's service, so avoid pointing it at internal or non-public hosts. Generated robots.txt, llms.txt and schema are text only and must be reviewed before publishing; schema fields the scan cannot know come back as placeholders. The README also describes paid Pro reports, Fix and Beyond services.

Installation

In SourceWeft

  1. Open Citehound in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.andacuzel%2Fcitehound/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "citehound": {
      "type": "http",
      "url": "https://getcitehound.com/api/mcp"
    }
  }
}

README

cited-geo-guide

This repository holds Citehound, an end-to-end service for AI readiness: a free scanner, Pro site reports, Fix (we make the technical changes) and Beyond (we write the content). The repository and the Vercel project keep their original names; see docs/rename-notes.md.

Benchmark data

The homepage benchmark section (and the "average of N sites" line on every scan report) is generated, not hand-written. To add a category:

  1. Scan it: node scripts/scan-category.js domains/<category>.txt <category> — writes data/<category>-raw.json (per-domain results — gitignored, never published) and data/<category>-summary.json (aggregate stats only, no company names).
  2. Add one entry to data/benchmarks.json: category (matches the summary filename), label (display name), track ("B2B SaaS" or "Consumer & e-commerce"), note (the unit word for the sample size, e.g. "platforms").
  3. Run node scripts/generate-benchmarks.js — rewrites the block in index.html between the BENCHMARKS:START/BENCHMARKS:END markers. Safe to re-run; it replaces the block in place.
  4. Commit data/benchmarks.json, the new data/<category>-summary.json, and the regenerated index.html. Leave -raw.json uncommitted — it's gitignored on purpose.

No score or count is ever typed by hand into benchmarks.json or index.html — both are read from the summary file at generation time, so they can't drift apart. Two minutes, no HTML editing.

Source: README.md at commit 345752d

Tools

13

scan_site

Scan a site for AI readiness

Scans a domain’s public robots.txt, llms.txt, sitemap declaration and homepage, and scores it out of 100 across three pillars: discoverability (can AI crawlers reach it), technical foundation (can machines parse it), and content & trust (does it look like a credible source). Returns the score, the three pillar scores, access state for the 10 tracked AI crawlers, every failed check with its fix, and how the score compares to Citehound’s own benchmark data. If the site looks like a store (two or more of five signals), it also reports a separate agentic-commerce sub-score: whether a UCP merchant profile exists at /.well-known/ucp, whether one product page has Product schema with name, price, availability and image, and whether the llms.txt looks like a platform default. That sub-score is never part of the 100. Call this first for any domain. It fetches the live site (a store scan reads up to one extra product page), so avoid calling it in a tight loop for the same domain.

Parametersdomainrequired

compare_sites

Compare two sites

Scans two domains — one after the other, not in parallel — and reports both scores plus every check where they differ. Useful for comparing your site against a named competitor.

Parametersdomain_arequireddomain_brequired

generate_schema

Generate JSON-LD for a site

Fetches a domain’s homepage for its real title, meta description and declared language, then returns ready-to-paste JSON-LD structured data of the requested type. Fields the scan cannot know — a FAQ’s actual questions, a product’s real price — come back as clearly bracketed placeholders, never invented values.

Parameterstyperequireddomainrequired

generate_robots_txt

Generate an AI-crawler robots.txt

Builds a robots.txt file that explicitly allows or blocks named AI crawlers from Citehound’s tracked list of 10, plus an optional Sitemap line. Pure text generation — fetches nothing. Call list_ai_crawlers first if you need the exact tracked crawler names.

Parametersallowblocksitemap_url

generate_llms_txt

Generate an llms.txt file

Builds an llms.txt file — an optional convention for describing a site and its key pages, with no demonstrated effect on Google — from a name, a one-sentence description and a list of key pages. Pure text generation — fetches nothing.

Parametersnamerequiredkey_pagesdescriptionrequired

get_playbook

Get a vertical playbook

Returns the full GEO/AEO playbook for one of Citehound’s fourteen verticals, as plain readable text: the strategic shift, three actionable strategies, outdated pitfalls to avoid, and an expert-tip placeholder. Called with no argument it returns the list of the fourteen verticals with their track (B2B SaaS, consumer and e-commerce brands, local and independent professionals), so call it with no argument first when you do not know which vertical fits. Read from this project’s own content file, so it matches what a visitor to the site sees. Fetches nothing external. Use after scan_site to turn a failed check into the strategy that applies to the site’s category.

Parametersvertical

get_benchmark

Get category benchmark data

Returns Citehound’s own archived scan data for one category — average, median and range of scores, pillar breakdowns, per-crawler blocked, limited and open counts, and the most common failed checks, with sample size and scan date — or a ranked summary across every category when called with no argument. This is archived data, not a live scan, and fetches nothing external.

Parameterscategory

list_ai_crawlers

List tracked AI crawlers

Lists the 10 AI crawlers Citehound tracks: which company runs each, what allowing or blocking it means, and this project’s robots.txt generator’s default for it. Use before generate_robots_txt if you need the exact tracked names. Fetches nothing.

Takes no parameters.

get_citation_prompts

Get citation questions for a vertical

Returns the set of buying-intent questions Citehound uses to test whether an AI assistant names a brand, for one vertical, plus a short protocol a person can run in their own assistant: ask each question in a separate conversation three to five times, note whether the brand is named and whether it appears in a heading, list label, table or bold text, and judge the spread rather than one answer. The questions don’t name any brand in the category being measured. A few mention an integration platform such as Slack or Google Workspace, because that is how buyers ask. Read-only: it reads a content file and queries no model. There is deliberately no tool that runs the check for you: a run is about 90 model calls at about five seconds each, far past this server’s time limit, and it would spend a quota anyone could drain. Question sets exist for: consumerapps, crm, cybersecurity, devtools, ecommerce, fintech, health, hospitality, hrtech, legal, localservices, marketplaces, martech, realestate. Use when the user asks how to check whether an assistant names their brand, or wants the questions for their category.

Parametersverticalrequired

get_citation_sample

Get the anonymised citation sample

Returns Citehound’s anonymised sample citation run as readable text: the model, the date, how many times each question was asked, the questions in three groups (named in every try, unstable, never named), the overall rate of being named with its range across sweeps, and a note on the limits. It is one model on one date, so it is not a ranking, says nothing about other assistants and is not a forecast of traffic. It names no brand in the category being measured, no domain and no competitor. Read-only: it reads a content file and queries no model. Use when the user wants to see what a citation result looks like, or asks how much the same question varies between tries.

Takes no parameters.

get_methodology

Get the scoring methodology

Explains how the Citehound AI readiness score is built, read from the scanner’s own check registry so it matches what runs. With no argument it returns the three pillars with their weights (they add up to 100), every check with its category, points, what it tests and why it matters, and the limits of the scan: it measures readiness and not whether any assistant names a brand; it gives half credit for a crawler with any applicable Disallow rule, usually an ordinary path; and it reads the homepage only. With a check label it returns that one check in detail. An unknown label returns an error listing the valid labels. Read-only, fetches nothing external. Use when the user asks how a score is calculated, why a check carries the points it does, or what the scan cannot tell them.

Parameterscheck

get_research

Get Citehound research

Returns Citehound’s published research: with no argument, the list of reports (the llms.txt and crawler study, the AgaOne case study and the benchmark data) with title, date, one-line finding and URL; with a slug, the key findings, the method limits, the URL and a ready line for citing it. Findings are checked against the published pages and data files. Every study measures readiness inputs, not whether any assistant names a brand. Read-only, fetches nothing external. Use when the user wants evidence for a claim about AI crawler access or llms.txt, a statistic to cite, or the reports behind the benchmarks.

Parametersslug

get_sample_report

Get the sample full-site report

Returns the sample Pro report as readable text: a real crawl of Citehound’s own site on a stated date, with the results shown as recorded. It gives the whole-site score beside the homepage score, the pillar averages, the priorities from the executive summary with the label saying what wrote it, the checks failing by number of pages, and the link to the full report, which also lists every page alphabetically and gives an estimated score if the fixes are applied. It shows what a full-site crawl adds to a one-page scan. It is our own site, not a customer’s, and it measures readiness, not whether any assistant names the site. Read-only, fetches nothing external. Use when the user asks what a full-site report looks like or what a crawl shows that a homepage scan cannot.

Takes no parameters.

Version history

1
  1. v1.0.0LatestOct 22, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.