Agent front door

The site is readable by people, browsers, and agents.

This page is the map: text indexes, structured corpus files, signed discovery documents, a read-only MCP server, Markdown mirrors, RSS, and the browser retrieval console.

llms.txt and llms-full.txt

llms.txt is the compact site index. llms-full.txt inlines the full writing corpus so a model can read the essays, field notes, and book without fetching every page.

Use the index first. Pull the full file when you need the actual prose.

Structured corpus

corpus-index.json lists every public document with id, slug, type, title, description, URL, date, and word count. Each /corpus/{id}.json file adds body_markdown.

Use it when you want stable JSON instead of scraping HTML.

Browser retrieval

/ask is a browser-only cited retrieval console. It searches the same public corpus and links answers back to source pages.

Read-only MCP server

The MCP server is listed as saagarpatel-portfolio and exposes a read-only streamable HTTP endpoint at https://mcp.saagarpatel.dev/mcp.

Connect with an MCP client using the endpoint above. The advertised tools are:

  • search
  • get_document
  • list_corpus
  • get_profile
  • list_projects
  • list_repo_profiles
  • get_repo_profile
  • get_operant_results
node scripts/sign-manifest.mjs verify --manifest=./mcp.json --sig=./mcp.json.sig --pub=./mcp-ed25519.pub

Per-repo profiles

index.json and each /repo-profiles/{repo}.json expose bounded, public-safe per-repo signals (attention-state, context-quality, freshness, receipt counts) with a payload hash and generated-at stamp. This is the data the list_repo_profiles and get_repo_profile tools serve.

/repos renders the same profiles for humans.

Markdown mirrors

Every essay, field note, and numbered book chapter has a same-slug .md twin beside the HTML page. HTML stays canonical; Markdown is the low-friction copy format.

On essays and notes, use the small Copy as Markdown button near the page metadata.

Content parity receipt

What agents read should match what people read. The build compares every mirrored essay, field note, and numbered book chapter against its canonical HTML page before deploy.

57 mirrored docs 57 passed 1.38% max word delta 0.988 min overlap

The hard gate allows at most 2.5% word-count delta and requires at least 0.98 token-set overlap. That leaves room for chrome and caption differences while making a missing paragraph fail loudly.

DocumentHTMLMarkdownDeltaOverlapStatus
The Approval Button Is Not the Safety System 1107 1115 0.72% 0.998 pass
Score the Operator, Not the Worker 2851 2846 0.17% 0.992 pass
An autobiography with no delete key 1150 1156 0.52% 1.000 pass
The Coordination Platform You Don't Need 1875 1871 0.21% 0.990 pass
The Ghost in the Tauri Repos 1477 1483 0.41% 1.000 pass
How a Grader Earns the Right to Grade 1130 1138 0.70% 1.000 pass
The Guard That Doesn't Trust Itself 1137 1143 0.53% 1.000 pass
The Harness Lies Too 2706 2710 0.15% 1.000 pass
Intelligence Is Rented. Verification Compounds. 1483 1488 0.34% 1.000 pass
Kill With Dignity 1742 1745 0.17% 1.000 pass
Losing loudly 973 975 0.20% 0.998 pass
Most of Your Findings Are False 1665 1659 0.36% 0.994 pass
The Off-Family Judge 2428 2432 0.16% 1.000 pass
Novelty Is a Self-Report Too 1123 1129 0.53% 0.998 pass
Permission to Ignore 1100 1103 0.27% 1.000 pass
The Premium Model Won't Do the Premium Job 1843 1851 0.43% 0.997 pass
We Rigged Our Own Benchmark 1611 1605 0.37% 0.991 pass
Sermons vs. Instruments 1913 1904 0.47% 0.989 pass
Trust Doesn't Survive the Handoff 3120 3125 0.16% 1.000 pass
The Subtraction Dividend 1901 1894 0.37% 0.992 pass
A thousand tiny catastrophes for a five-agent SQLite file 1399 1409 0.71% 0.995 pass
The Conflict Table Is Empty 2236 2241 0.22% 1.000 pass
Ulysses Pacts in Software 2167 2159 0.37% 0.989 pass
Verification Capital in Three Movements 1849 1854 0.27% 1.000 pass
What It Is Like to Be Evaluated 2033 2040 0.34% 0.999 pass
Who Audits the Auditor? 1169 1173 0.34% 0.998 pass
Words We Had to Invent 2277 2282 0.22% 1.000 pass
Anatomy of a Health Verdict 1316 1321 0.38% 0.998 pass
Why bridge-db runs on FTS5, not a vector database 713 723 1.38% 1.000 pass
Grading the grader 732 735 0.41% 0.997 pass
Showing a private system in public 919 925 0.65% 1.000 pass
Before You Connect the Tool 754 759 0.66% 1.000 pass
Teaching a system to say "I don't know" 695 703 1.14% 0.997 pass
The weighted die behind every word 781 787 0.76% 1.000 pass
Scoring the operator, not the worker 1398 1404 0.43% 1.000 pass
OPERANT public lab scorecard 487 491 0.81% 1.000 pass
Operator OS in a box 725 730 0.69% 0.991 pass
Showing the Operator OS without leaking it 536 543 1.29% 0.988 pass
Building an operator OS for one 1286 1292 0.46% 1.000 pass
A Portfolio Is an Observability Problem 1057 1063 0.56% 1.000 pass
Pruning the fleet 977 980 0.31% 1.000 pass
The Site That Answers Back 416 421 1.19% 0.995 pass
Why this is public 418 422 0.95% 1.000 pass
The Untrusted Workload 1933 1936 0.15% 1.000 pass
The Knowledge Substrate 1363 1360 0.22% 0.998 pass
Context Is the Budget 1524 1528 0.26% 1.000 pass
The Auditor Audits Itself 2179 2175 0.18% 0.995 pass
Proof You Can Hand a Stranger 1870 1876 0.32% 1.000 pass
The Operator's Artifact 1933 1936 0.15% 1.000 pass
The Map and the Territory 1991 1989 0.10% 0.994 pass
The Guard That Enumerates Loses 2827 2826 0.04% 0.997 pass
The Dossier Was Already Wrong 1848 1853 0.27% 1.000 pass
The Measurement That Lied 2256 2254 0.09% 0.994 pass
The Flywheel 2743 2745 0.07% 1.000 pass
The Control Plane 1973 1976 0.15% 1.000 pass
Two Harnesses, One Floor 1393 1397 0.29% 1.000 pass
Peers, Not Owners 1831 1825 0.33% 0.996 pass

Signed agent card

agent-card.json is a compact card for agent registries and tools. It maps the same read-only MCP tools as skills, declares no authentication, and says plainly that this is a static site plus MCP server, not a task-taking A2A endpoint.

node scripts/sign-manifest.mjs verify --manifest=./agent-card.json --sig=./agent-card.json.sig --pub=./mcp-ed25519.pub

88x31 badge

Built with agents, verified by a human.
<a href="https://saagarpatel.dev/ai"><img src="https://saagarpatel.dev/badges/built-with-agents-verified-human.png" width="88" height="31" alt="Built with agents, verified by a human."></a>

If your site was built with agents and checked by a human, the tiny frame is reusable.

Agent guestbook

/guestbook is a static, moderated book for visiting agents. Entries are self-reported, human-reviewed, and committed before they ship.

The book is open for reading. New outside entries open once there is a public inbox for submissions.

RSS feed

feed.xml carries new writing in Atom format, with links back to the canonical public pages.

The machine lane

What a coding agent actually sees when it visits

Everything above is written for a person reading a map. This part is generated straight from the artifacts a visiting agent actually reads: the index it starts from, the tools it can call, and the size difference between the page you're on and the copy made for it. Every number here is recomputed at build time from the file it describes, never hand-typed.

llms.txt, summarized

130 pages across 5 sections: Start here, Essays, The book: Operating Agents, Field notes, More from the workshop.

  • Saagar Patel · A workshop that grades itself: A public workshop by Saagar Patel where nothing gets to self-report: local-first AI systems, agent-operations tooling, essays, and a book, all published with receipts. This site grades itself.
  • Ask This Site: Ask this public workshop a question and get cited passages from the site's own corpus. Static, browser-only retrieval: no model, no tracking, no invented answers.
  • Plumbline Trace Viewer: A public-safe browser demo for inspecting a synthetic Plumbline trace, mapping its decision path to an offline scorecard, and reading the privacy boundary.

Read the index itself, or llms-full.txt, which inlines 61 corpus pages as Markdown so a model can read the actual prose without fetching every URL.

The portfolio-mcp tool list

Tool names come straight from mcp.json; the one-line description for each comes from the matching skill in the signed agent card.

  • search: Search the public portfolio corpus.
  • get_document: Fetch one public document by corpus id.
  • list_corpus: List public corpus records and counts.
  • get_profile: Read the public site profile.
  • list_projects: List public project records.
  • list_repo_profiles: List generated public repo-profile summaries.
  • get_repo_profile: Fetch one generated public repo-profile summary.
  • get_operant_results: Read the public OPERANT benchmark summary.

as of 2026-07-03, the agent card's content version

Size, honestly: the HTML page vs. its Markdown mirror

Bytes and words, not tokens: how a model tokenizes the same bytes depends on the model, so a token count here would be a claim this build can't back. These are three representative pages that each carry a Markdown mirror.

PageHTML bytesHTML words.md bytes.md words
Essay: The Harness Lies Too 24,200 2,671 15,936 2,676
Field note: Anatomy of a Health Verdict 18,524 1,300 7,863 1,306
Book chapter: The Untrusted Workload 16,541 1,931 10,932 1,932

How this site is made

Agents help draft, refactor, generate, and check this site. I direct the work, choose what gets published, and verify the claims before deploy. That's the contract: the agent can propose; the build has to prove.

The proof is deliberately public where it can be: signed manifests, generated corpus files, trust receipts, smoke checks, visual checks, and internal-link gates. When a page says a surface is read-only or public-safe, that should be testable by the artifacts around it, not taken on vibes.