saagarpatel.dev Portfolio
by saagpatel · remote · local (npm) · no sign-in to list tools · v0.1.0 · published by GitHub user saagpatel
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
8 tools: 8 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads8Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http portfolio https://mcp.saagarpatel.dev/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
8 tools
Only reads 8Claude Code: allow
get_documentReturn the full Markdown of one document by id, e.g.No findings
Why it is in this group
- The name "get_document" says "get": a word for reading.
Description, as the server wrote it Return the full Markdown of one document by id, e.g. "writing/the-handoff" or "book/preface". Get ids from search or list_corpus.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_operant_resultsReturn the public, sanitized OPERANT results: per-model operator-calibration-score (OCS) profiles, the headline figures, and the calibration-profiles (not a flat leaderboard) frami…No findings
Why it is in this group
- The name "get_operant_results" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_profileReturn Saagar Patel's profile: name, one-line summary, site, and the about / now / uses pages.No findings
Why it is in this group
- The name "get_profile" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
get_repo_profileReturn one public-safe repo answering profile by repo_id, including purpose, safe commands, agent surfaces, proof refs, freshness, exclusions, limitations, and integrity metadata.No findings
Why it is in this group
- The name "get_repo_profile" says "get": a word for reading.
Description, as the server wrote it Return one public-safe repo answering profile by repo_id, including purpose, safe commands, agent surfaces, proof refs, freshness, exclusions, limitations, and integrity metadata.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
list_corpusList every document with its id, title, type, date, and word count, plus per-type counts.No findings
Why it is in this group
- The name "list_corpus" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
list_projectsList the curated, public projects with stack, status, last-active date, and test/CI signals, plus anonymized portfolio-wide aggregates.No findings
Why it is in this group
- The name "list_projects" says "list": a word for reading.
Description, as the server wrote it List the curated, public projects with stack, status, last-active date, and test/CI signals, plus anonymized portfolio-wide aggregates. Optionally filter by status.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
list_repo_profilesList public-safe repo answering profiles with repo id, attention state, freshness, and proof counts.No findings
Why it is in this group
- The name "list_repo_profiles" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
searchFull-text (BM25) search across all essays, book chapters, and field notes.No findings
Why it is in this group
- The name "search" says "search": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http portfolio https://mcp.saagarpatel.dev/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__portfolio__search",
"mcp__portfolio__get_document",
"mcp__portfolio__list_corpus",
"mcp__portfolio__get_profile",
"mcp__portfolio__list_projects",
"mcp__portfolio__list_repo_profiles",
"mcp__portfolio__get_repo_profile",
"mcp__portfolio__get_operant_results"
],
"ask": [],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as portfolio. Review it before you use it.
