saagarpatel.dev Portfolio
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Should I use this
Quality & Safety
Findings (1)
- LOWin get_repo_profile
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"portfolio-mcp": {
"command": "npx",
"args": [
"saagar-portfolio-mcp"
]
}
}
}Runnable packages
0.1.0stdioRemote endpoints
https://mcp.saagarpatel.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (8)
🟢search(query, section, limit)
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.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "Search terms"
},
"section": {
"type": "string",
"enum": [
"essay",
"chapter",
"note",
"page"
],
"description": "Restrict to one content type"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Max results (default 10)"
}
},
"required": [
"query"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_document(id)
Return the full Markdown of one document by id, e.g. "writing/the-handoff" or "book/preface". Get ids from search or list_corpus.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Document id, e.g. \"book/preface\""
}
},
"required": [
"id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_corpus(type)
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.
Input Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"essay",
"chapter",
"note",
"page"
],
"description": "Filter by content type"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢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.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_projects(status, limit)
List the curated, public projects with stack, status, last-active date, and test/CI signals, plus anonymized portfolio-wide aggregates. Optionally filter by status.
Input Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "Filter by status, e.g. \"active\" or \"archived\""
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Max projects"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_repo_profiles(attentionState, limit)
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.
Input Schema
{
"type": "object",
"properties": {
"attentionState": {
"type": "string",
"description": "Filter by attention state, e.g. \"active-infra\" or \"decision-needed\""
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Max profiles"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_repo_profile(repoId)
Return one public-safe repo answering profile by repo_id, including purpose, safe commands, agent surfaces, proof refs, freshness, exclusions, limitations, and integrity metadata.
Input Schema
{
"type": "object",
"properties": {
"repoId": {
"type": "string",
"minLength": 1,
"description": "Repo profile id, e.g. \"githubrepoauditor\""
}
},
"required": [
"repoId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_operant_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.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence