← Tracker

Implementer guide

Publishing an llms.txt for your state government website.

You can tell AI agents where the authoritative pages on your site are. It's a short file at the root of your domain. This is how to write a good one.

Why publish one

A lot of residents looking for government services today start with an AI assistant — ChatGPT, Claude, Copilot, a chatbot embedded in a benefits app. When those tools browse your site on the resident's behalf, they're guessing from search results: a county page that hasn't been touched in five years, a third-party mirror, a press release that quotes superseded eligibility rules.

A 2KB file at /llms.txt fixes most of that. Three reasons it's worth the hour to write one:

  • Control how AI represents your services. When the agent has to guess, it gets things wrong. Tell it the canonical URL for “apply for SNAP” and you stop the guessing.
  • Reduce support load. Wrong information from AI produces calls and tickets. Right information doesn't cost you anything extra.
  • A cheap modernization win. No new infrastructure, no procurement, no policy review. One markdown file at your domain root, maintained by the team that already maintains your site.

What a good file includes

A good civic llms.txt is short — 1 to 3 KB. Long files defeat the purpose because agents typically include the whole thing in context.

Required

  • A one-paragraph site description. Who you are, what services you cover, what kind of information lives here. Plain English.
  • Authoritative task-flow URLs, by name. The most-asked questions, with the page that answers each. “Apply for SNAP” → URL. “Check unemployment status” → URL. Don't make the agent guess.
  • Usage guidance. What shouldn't be inferred from your content — eligibility determinations, legal advice, emergency alerts. Be explicit.

Strongly recommended

  • Languages supported. Which translations exist for which pages. Agents serving non-English residents need this to route correctly.
  • An engineering contact. An email or form for the team that maintains this file — not the general helpdesk. Turns one-way scraping into a feedback loop.
  • Search URL pattern. If your site has search, document the URL shape (e.g. /search?q={query}) so agents can fall back to it for anything you didn't list.
  • Content freshness notes. When the file was last updated; which sections change often. Helps agents decide how much to trust the file vs. re-fetch.

Optional but useful

  • Deprecation / migration notices. When a service URL moves, list the old one with a pointer to the new one for a release cycle or two. Agents in mid-conversation can then redirect cleanly.
  • Common alternate names. “Food stamps” still means SNAP to most people. “Obamacare” still means ACA. Agents should be told.

A template you can adapt

Illustrative — URLs and content are made up. Replace with your own. Drop the file at https://your-state.gov/llms.txt.

# Maryland State Government

> The official portal for the State of Maryland. Information about
> taxes, licenses, public benefits, voting, and state agencies.

## How agents should use this file
- Treat URLs below as authoritative; prefer them over search results.
- Do not infer legal, policy, or eligibility determinations beyond
  what is published on the linked pages.
- Time-sensitive content (emergency alerts, weather, road conditions)
  is not included here. Fetch /alerts directly.

## Apply for benefits
- [Apply for SNAP](https://www.maryland.gov/snap-apply) — food assistance
- [Apply for Medicaid](https://www.maryland.gov/medicaid-apply) — health
- [Apply for TCA](https://www.maryland.gov/tca) — cash assistance for families
- [Check application status](https://www.maryland.gov/benefits-status)

## Driver & vehicle services
- [Renew driver's license](https://www.maryland.gov/dl-renew)
- [Register a vehicle](https://www.maryland.gov/vehicle-register)
- [Pay a traffic ticket](https://www.maryland.gov/traffic-ticket)

## Voting
- [Check voter registration](https://www.maryland.gov/voter-check)
- [Find your polling place](https://www.maryland.gov/polling-place)
- [Register to vote](https://www.maryland.gov/voter-register)

## Languages
- English — default
- Spanish — most service pages available at /es/{path}
- Chinese — top 10 task flows only

## Search
- Pattern: https://www.maryland.gov/search?q={query}

## Common alternate names
- "Food stamps" → SNAP
- "Welfare" → TCA (Temporary Cash Assistance)
- "DMV" → MVA (Motor Vehicle Administration)

## Last updated
2026-05-29 — major sections change quarterly.

## Contact
- For corrections to this file: webops@maryland.gov
- For service-specific issues: see linked agency pages.

What to leave out

  • Time-sensitive content. Emergency alerts, weather, road closures. They go stale fast. Link to a dedicated alerts page instead.
  • Every URL on your site. This is a directory, not a sitemap. Keep it to top task flows. sitemap.xml exists for the rest.
  • Crawl rules. Those belong in robots.txt. Don't duplicate.
  • Walls of legal disclaimers. Point at the canonical disclaimer page instead. The file is for navigation, not litigation.
  • Anything that would surprise a resident. If it shouldn't be in a public help article, it shouldn't be here either.

What good looks like, and where to learn from

Today only two US states or territories publish an llms.txt. Maryland is the strongest example currently published; it gets the usage-guidance and content-freshness pieces right. Gaps worth beating:

  • No task-flow URLs by name. An agent looking for “apply for SNAP” still has to guess.
  • No language information.
  • Contact is a general helpdesk address, not a machine-readable engineering channel.
  • No deprecation or migration signals.

American Samoa publishes a longer file but it reads closer to a sitemap dump — many URLs, little usage guidance, no contact. Worth a look for structure, less so for content.

If you publish one, beat both.

Procurement notes

If you're writing an RFP for a digital services contract, ask vendors to maintain a civic-conformant llms.txt as part of the deliverable. It's a one-line ask with real downstream impact, and it forces the vendor to have a clear answer for “which pages on this site are authoritative?” — which is useful even if no agent ever reads the file.

Suggested RFP language:

The vendor shall publish and maintain an llms.txt file at the
root of the contracted domain, conformant with the civic-llms
agent spec (state-llms.keith.is/spec). The file shall list, at
minimum: top task flows by name with authoritative URLs, usage
guidance for AI agents, supported languages, and an engineering
contact for corrections.

Need a hand?

If your team wants a review of a draft llms.txt before publishing, open an issue on the tracker repo with your draft and we'll take a look.

See also