/ai

saagarpatel.dev — machine-readable corpus index.

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:

manifest signature public key MCP page

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.

75 mirrored docs 75 passed 1.38% max word delta 0.987 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.

report JSON trust receipt

Document HTML Markdown Delta Overlap Status
A Court of One 1801 1805 0.22% 1.000 pass
A Ledger of Nos 1978 1982 0.20% 1.000 pass
A Zero Is Not a Measurement 2590 2596 0.23% 1.000 pass
The Apparatus That Never Fired 1358 1363 0.37% 0.998 pass
The Approval Button Is Not the Safety System 1125 1133 0.71% 0.998 pass
Score the Operator, Not the Worker 2878 2873 0.17% 0.992 pass
An autobiography with no delete key 1173 1179 0.51% 1.000 pass
The Coordination Platform You Don't Need 1922 1918 0.21% 0.990 pass
Dead Letters 1437 1439 0.14% 1.000 pass
A Fleet of One 1363 1367 0.29% 1.000 pass
The Ghost in the Tauri Repos 1521 1527 0.39% 1.000 pass
How a Grader Earns the Right to Grade 1192 1200 0.67% 1.000 pass
The Guard That Doesn't Trust Itself 1184 1190 0.50% 1.000 pass
The Harness Lies Too 2750 2754 0.14% 1.000 pass
Intelligence Is Rented. Verification Compounds. 1508 1513 0.33% 1.000 pass
Kill With Dignity 1793 1796 0.17% 1.000 pass
Losing loudly 992 994 0.20% 0.998 pass
The Missing Denominator 1416 1419 0.21% 1.000 pass
Most of Your Findings Are False 1707 1701 0.35% 0.994 pass
No Gate for Worse 1339 1343 0.30% 1.000 pass
No Sermons in the Seal 1182 1174 0.68% 0.987 pass
The Off-Family Judge 2484 2488 0.16% 1.000 pass
One Word for Three Outcomes 2884 2889 0.17% 1.000 pass
Novelty Is a Self-Report Too 1165 1171 0.51% 0.998 pass
Permission to Ignore 1125 1128 0.27% 1.000 pass
The Premium Model Won't Do the Premium Job 1892 1900 0.42% 0.999 pass
We Rigged Our Own Benchmark 1657 1651 0.36% 0.991 pass
Sermons vs. Instruments 1952 1943 0.46% 0.989 pass
Six Times I Built What Already Existed 3163 3170 0.22% 1.000 pass
Stranded at Green 2836 2839 0.11% 1.000 pass
The 2 AM Agent 2738 2742 0.15% 1.000 pass
The Benchmark That Argued Back 1342 1347 0.37% 1.000 pass
Trust Doesn't Survive the Handoff 3172 3177 0.16% 1.000 pass
The Second Look 1507 1510 0.20% 1.000 pass
The Subtraction Dividend 1938 1931 0.36% 0.992 pass
The Third Build Is the Factory 2905 2911 0.21% 1.000 pass
The Well Ran Dry 1629 1633 0.24% 1.000 pass
A thousand tiny catastrophes for a five-agent SQLite file 1424 1434 0.70% 0.995 pass
The Conflict Table Is Empty 2284 2289 0.22% 1.000 pass
Ulysses Pacts in Software 2210 2202 0.36% 0.989 pass
Verification Capital in Three Movements 1875 1880 0.27% 1.000 pass
What It Is Like to Be Evaluated 2076 2083 0.34% 0.999 pass
Where the Interest Shows Up 2525 2530 0.20% 1.000 pass
Who Audits the Auditor? 1198 1202 0.33% 0.998 pass
Words We Had to Invent 2321 2326 0.21% 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.

card signature public key

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

88x31 badge

<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.

guestbook entries JSON

RSS feed

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

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

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

Read the index itself, or llms-full.txt, which inlines 79 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.

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.

Page HTML bytes HTML words .md bytes .md words
Essay: The Harness Lies Too 24,731 2,715 16,190 2,720
Field note: Anatomy of a Health Verdict 18,634 1,300 7,863 1,306
Book chapter: The Untrusted Workload 16,733 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.