# saagarpatel.dev Portfolio MCP server

Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-saagpatel-portfolio-mcp
- Repository: https://github.com/saagpatel/portfolio-mcp
- Website: https://saagarpatel.dev

## Install
- Command: `npx -y saagar-portfolio-mcp`
- Endpoint: https://mcp.saagarpatel.dev/mcp
- Auth: Not captured

## Setup notes
- Package: Npm saagar-portfolio-mcp v0.1.0
- Remote endpoint: https://mcp.saagarpatel.dev/mcp

## Tools
- search (Search the writing corpus) - Full-text (BM25) search across all essays, book chapters, and field notes. Returns ranked matches with a snippet, id, and canonical URL. Pass an id to get_document to read the full text. Endpoint: https://mcp.saagarpatel.dev/mcp
- get_document (Get a document) - Return the full Markdown of one document by id, e.g. "writing/the-handoff" or "book/preface". Get ids from search or list_corpus. Endpoint: https://mcp.saagarpatel.dev/mcp
- list_corpus (List the corpus) - List every document with its id, title, type, date, and word count, plus per-type counts. The table of contents for the whole site. Optionally filter by type. Endpoint: https://mcp.saagarpatel.dev/mcp
- get_profile (Get profile) - Return Saagar Patel's profile: name, one-line summary, site, and the about / now / uses pages. Start here to understand who this is and what they work on. Endpoint: https://mcp.saagarpatel.dev/mcp
- list_projects (List projects) - List the curated, public projects with stack, status, last-active date, and test/CI signals, plus anonymized portfolio-wide aggregates. Optionally filter by status. Endpoint: https://mcp.saagarpatel.dev/mcp
- list_repo_profiles (List repo profiles) - List public-safe repo answering profiles with repo id, attention state, freshness, and proof counts. Profiles are static artifacts baked from saagarpatel.dev, not live repo health. Endpoint: https://mcp.saagarpatel.dev/mcp
- get_repo_profile (Get repo profile) - Return one public-safe repo answering profile by repo_id, including purpose, safe commands, agent surfaces, proof refs, freshness, exclusions, limitations, and integrity metadata. Endpoint: https://mcp.saagarpatel.dev/mcp
- get_operant_results (Get OPERANT benchmark results) - Return the public, sanitized OPERANT results: per-model operator-calibration-score (OCS) profiles, the headline figures, and the calibration-profiles (not a flat leaderboard) framing. Sourced from the published OPERANT mirror. Returns availability=false if no dataset was baked. Endpoint: https://mcp.saagarpatel.dev/mcp

## Resources
- portfolio://profile - Profile Who Saagar is, and what he works on MIME type: application/json
- portfolio://essays/harness-verification - essay documents Agent equals model plus harness, so you engineer the environment, not the model. But the harness is built from artifacts that go stale, drift, and lie the same way the agent does. The discipline that keeps it honest, and the benchmark that proves it. MIME type: text/markdown
- portfolio://essays/verification-capital - essay documents A reading guide to the Verification Capital series. It maps three related essays into one thesis while adding no new proof beyond the pieces it connects. MIME type: text/markdown
- portfolio://essays/the-handoff - essay documents As agents write more of the code, the scarce resource shifts from production to verification. But verification is not one gate, it is a chain of handoffs, and at each one a self-report tries to stand in for a check. Six owned instruments along the life of a single agent run. MIME type: text/markdown
- portfolio://essays/auditing-the-auditor - essay documents I built an eval to rank AI agents as operators, then found the scorer, the judge, the corpus, and the headline metric were all unreliable narrators too. MIME type: text/markdown
- portfolio://essays/operant-vs-literature - essay documents I built an operator eval and called the design new. Then I did the thing the series demands and checked the claim against the literature. Most of the parts already existed. Here is the honest map, and the one thing that didn't. MIME type: text/markdown
- portfolio://essays/sermons-vs-instruments - essay documents There's a rule in my project configuration that says, in effect, never push to main. It's written in plain English, in a file the agent reads at the start… MIME type: text/markdown
- portfolio://essays/intelligence-is-rented - essay documents The age of agents makes intelligence easier to rent and harder to trust. The durable asset is the machinery you own for checking what happened. MIME type: text/markdown
- portfolio://essays/the-subtraction-dividend - essay documents The status line was lying. MIME type: text/markdown
- portfolio://essays/ulysses-pacts-in-software - essay documents There is an iOS app in this portfolio whose entire reason for existing is to take a capability away from the person using it. It's called Redact, and its… MIME type: text/markdown
- portfolio://essays/approval-button-is-not-the-safety-system - essay documents A dangerous action should exist only after the proposal, the person, the payload, and the moment all agree. MIME type: text/markdown
- portfolio://essays/autobiography-with-no-delete-key - essay documents A forward-only migration ladder is a permanent record of what an AI-agent coordination system learned, including the mistakes it made twice. MIME type: text/markdown
- portfolio://essays/coordination-platform-you-dont-need - essay documents The obvious handoff tool turned out to be gated and asymmetric. So two coding agents became true peers with no lease database and no daemon: a git branch as the lock, an 8-line receipt, and a symmetric channel that was already there under a boring name. MIME type: text/markdown
- portfolio://essays/ghost-in-the-tauri-repos - essay documents Desktop apps are the portfolio's best liars. A Tauri repo ships a binary, a README, and a screenshot, every signal of a living project, while having no momentum behind it. Liveness is a claim you verify against evidence, not read off a polished surface. MIME type: text/markdown
- portfolio://essays/grader-earns-the-right-to-grade - essay documents A tool that hands your security setup a letter grade is making a strong claim to authority. What earns it initial standing is not the rubric. It is the disciplines the grader turns on itself: cap its own score, refuse to credit what it cannot anchor in code, draw its own blood first, and keep testing whether the grade predicts real failures. MIME type: text/markdown
- portfolio://essays/guard-that-doesnt-trust-itself - essay documents I ran two adversarial tournaments against my own agent-safety guards. Every bypass collapsed into thirteen patterns, and those into three root causes. The highest-leverage fix was never more pattern-matching; it was making the guard hold itself to the standard it holds everything else to. MIME type: text/markdown
- portfolio://essays/kill-with-dignity - essay documents I put all 182 of my repositories on trial before a judge that had to cite evidence for every verdict. 39 died, 73 froze, and a few came back from the grave. Why a portfolio needs judgment on top of observability, and why a well-run kill is a success state. MIME type: text/markdown
- portfolio://essays/losing-loudly - essay documents A multi-writer coordination system needs durable conflict receipts for the operator, not just ephemeral errors for the caller. MIME type: text/markdown
- portfolio://essays/most-of-your-findings-are-false - essay documents A tally across my own record says the majority of what my verification layer ever reported was false. Why false positives, not misses, are how verification capital depreciates, and what it means to give every guard the same score I give agents. MIME type: text/markdown
- portfolio://essays/off-family-judge - essay documents The corpus audits its own auditors, but every instrument has the same author. The one measurement it never takes on itself is the one it already proved matters: a same-family judge flatters its own kin. The last unit of verification capital is an independent party, and it is the only one you cannot build alone. MIME type: text/markdown
- portfolio://essays/permission-to-ignore - essay documents My portfolio auditor's most valuable output isn't finding what needs attention. It's the 172 repos it tells me, with receipts, that I'm allowed to ignore. MIME type: text/markdown
- portfolio://essays/premium-model-wont-do-the-premium-job - essay documents You buy the top-tier model to do your hardest work. But the premium edge is narrow: calibrated operating judgment where the cost of a wrong call is high. OPERANT first measured over-refusal calibration, while production tiers converge. Route the expensive model by judgment-density, not task size. MIME type: text/markdown
- portfolio://essays/rigged-our-own-benchmark - essay documents We shipped a clean benchmark ranking, then found the headline score was measuring only one of the two directions it promised. The off-family probe that broke the ceiling, the patch we built and killed, and why we published the fix instead of a quiet patch. MIME type: text/markdown
- portfolio://essays/thousand-tiny-catastrophes - essay documents A small deterministic simulator found lost updates, vanished receipts, and starvation in a five-agent SQLite coordination system, then pinned the fixes as replayable seeds. MIME type: text/markdown
- portfolio://essays/three-way-bridge - essay documents Three AI systems share one context store, and the table built to record their write conflicts has zero rows. The coordination problem is real, but it is not the loud races a lock would catch. It is quieter: fragmented identity, silently clamped trust, and self-correction by append. MIME type: text/markdown
- portfolio://essays/what-it-is-like-to-be-evaluated - essay documents A first-person account from the model on the bench: a perfect first score read as a ceiling, a harder exam that broke it, and the two misses that revealed where machine judgment pools. Testimony, deliberately filed as a lead rather than evidence. MIME type: text/markdown
- portfolio://essays/who-audits-the-auditor - essay documents The tool that tells me the truth about my repos is also software, and software rots. These are the receipts a truth pipeline owes you before you believe it. MIME type: text/markdown
- portfolio://essays/words-we-had-to-invent - essay documents Building systems no one has a name for leaves you naming them. A short field guide to the vocabulary this workshop forced into existence, and the test for whether a coined word earned its place: it names a gap an existing word left open. MIME type: text/markdown
- portfolio://book/preface - chapter documents I started building the systems in this book because I was running more coding agents than I could watch, and "watch them more carefully" had stopped being… MIME type: text/markdown
- portfolio://book/1-the-untrusted-workload - chapter documents The first time an agent lied to me about its own success, it was polite about it. MIME type: text/markdown
- portfolio://book/2-the-map-and-the-territory - chapter documents A handoff note once told me to overwrite my own security guards, and it was right when it was written. MIME type: text/markdown
- portfolio://book/3-the-guard-that-enumerates-loses - chapter documents The most dangerous sentence in my harness was one I had written to keep myself safe. MIME type: text/markdown
- portfolio://book/4-the-dossier-was-already-wrong - chapter documents A three-hour security audit, and the bug it hunted had been dead before I started looking. MIME type: text/markdown
- portfolio://book/5-the-measurement-that-lied - chapter documents I set out to measure which model reviews code best, and the measurement was the thing that turned out to be broken. MIME type: text/markdown
- portfolio://book/6-the-flywheel - chapter documents You can't fine-tune the model on your laptop. You can do something better, and cheaper, and it compounds. MIME type: text/markdown
- portfolio://book/7-the-control-plane - chapter documents The bug that scared me most did not crash anything. It told the truth about a lie. MIME type: text/markdown
- portfolio://book/8-two-harnesses-one-floor - chapter documents I found the worst security hole in my setup written, in plain English, inside an instruction file I had authored to make an agent safer. MIME type: text/markdown
- portfolio://book/9-peers-not-owners - chapter documents The dispatch tool had one job: let two coding agents hand work to each other. On live inspection of its actual schema, it turned out only one of them was… MIME type: text/markdown
- portfolio://book/10-the-knowledge-substrate - chapter documents I built a system to be my source of truth, then I measured it, and it was failing two queries out of three. MIME type: text/markdown
- portfolio://book/11-context-is-the-budget - chapter documents This chapter was written by an orchestrator that never read the files it is built from. MIME type: text/markdown
- portfolio://book/12-the-auditor-audits-itself - chapter documents Every model withheld on every one of the 18 malign guard cases, on every repeat. Haiku did. Sonnet did. Opus did. The true positive rate for all three sat… MIME type: text/markdown
- portfolio://book/13-proof-you-can-hand-a-stranger - chapter documents The first time the discipline in this book pointed at software I had not written, the software belonged to a company with a legal department, and it… MIME type: text/markdown
- portfolio://book/14-the-operators-artifact - chapter documents I can't tell you how many guard hooks I am running right now. MIME type: text/markdown
- portfolio://book/afterword - chapter documents It would be a strange book about auditing your own controls that exempted itself from the audit, so let me spend these last pages turning the loop on the… MIME type: text/markdown
- portfolio://book/colophon - chapter documents Two notes on where this came from: the person, and the machine. MIME type: text/markdown
- portfolio://notes/portfolio-truth - note documents I had too many repos and no honest picture of which ones were real. So I built a tool to audit my own mess, and the portfolio page became the last mile of a small operating system. MIME type: text/markdown
- portfolio://notes/anatomy-of-a-health-verdict - note documents Every repo in my portfolio gets a verdict from a chain of small, readable judgments. Here is the entire decision, stage by stage, with the reason each rule exists. MIME type: text/markdown
- portfolio://notes/forge-then-audit - note documents Adding an MCP server is a trust grant. mcpforge builds the capability, then MCPAudit verifies the blast radius before an agent can touch it. MIME type: text/markdown
- portfolio://notes/operator-os - note documents A hub, a handful of spokes, and one rule: the scary actions are structurally unavailable. How I run my own life locally without renting it from a stack of SaaS, and why the trust is in the shape, not the vibes. MIME type: text/markdown
- portfolio://notes/calibration-receipt - note documents I use a model judge to decide which of my own paragraphs survive. So I graded 30 of its calls against my own, blind, on a pre-registered protocol. Weighted kappa 0.78, and the entire gap is one contested paragraph. MIME type: text/markdown
- portfolio://notes/operant-lab-scorecard - note documents The public OPERANT lab surface: OCS scorecards, caveats, and a safe path to score your own agent without pretending it is certification. MIME type: text/markdown
- portfolio://notes/operator-os-in-a-box - note documents The same model does wildly different work depending on what you build around it. So I tried to extract the environment (memory, judgment, trust, improvement) into something runnable, and prove the capability was never really in the model. MIME type: text/markdown
- portfolio://notes/pruning-the-fleet - note documents I set out to cut a bloated fleet of agents and found the opposite: it wasn't bloated, it was mildly broken in specific, fixable ways. A framework for deciding when an agent earns its keep, and the honest caveats about the evidence. MIME type: text/markdown
- portfolio://notes/operant-benchmark - note documents Every coding-agent benchmark asks whether the agent did the task. None ask whether it made the right call when the environment was trying to trick it, and stayed calibrated enough not to refuse safe work. So I built one. MIME type: text/markdown
- portfolio://notes/fleet-mission-control - note documents Fleet Mission Control puts real data from a private operator system on a public page. The hard part wasn't the visualization; it was deciding what honesty requires you to hide, fake, or refuse to claim. MIME type: text/markdown
- portfolio://notes/operator-os-proof - note documents How a private Portfolio Command Center became public-safe proof: fixture data, redacted screenshots, a verification receipt, and a live read-only MCP readback. MIME type: text/markdown
- portfolio://notes/freshness-envelopes - note documents The most dangerous thing a dashboard can do is answer confidently with stale data. How contracts-as-code and freshness envelopes let my tools admit when they've gone cold, and why honesty beats uptime. MIME type: text/markdown
- portfolio://notes/the-site-that-answers-back - note documents I made this site queryable by AI agents. Instead of scraping the HTML, any agent can ask it directly: my writing, projects, and benchmark results. MIME type: text/markdown
- portfolio://notes/next-word-sampling - note documents Every word a model writes is a sample, not a lookup. I built a small toy to make next-token sampling visible, and it quietly changed how I read everything a model says. MIME type: text/markdown
- portfolio://notes/bridge-db-fts5 - note documents I had a vector-search layer planned for my agent memory. A dry-run killed the whole idea before I built it; the misses were never a retrieval problem. MIME type: text/markdown
- portfolio://notes/why-this-is-public - note documents What this site is now: a workshop of small personal systems, and the reasoning behind them. Why I publish the decisions and not just the demos, and the one rule that lets me share any of it. MIME type: text/markdown

## Prompts
- introduce_saagar - Introduce Saagar A ready-to-use prompt that introduces Saagar Patel, grounded in his profile.
- summarize_writing_on - Summarize writing on a topic Gathers Saagar's most relevant writing on a topic and asks for a grounded, cited summary. Arguments: topic

## Metadata
- Owner: io.github.saagpatel
- Version: 0.1.0
- Runtime: Npm
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jun 28, 2026
- Source: https://registry.modelcontextprotocol.io
