Everything on sshh.io is readable by agents and scripts. Free tier: everything, forever — no API keys, no signup, no sales forms. There is no separate sandbox environment because none is needed: every endpoint is read-only, so production is safe to explore. Self-serve from the first request.
curl https://sshh.io/llms.txtcurl https://sshh.io/projects.jsoncurl https://sshh.io/writing.mdcurl https://sshh.io/llms-full.txt.md (e.g. /index.md, /about.md) or send Accept: text/markdownThe read API is described at /openapi.json (OpenAPI 3.1, typed schemas, operationIds — function-calling friendly). Endpoints are versioned in the URL path:
GET /api/v1/projects.json — structured project portfolioGET /api/v1/posts.json — all blog posts with canonical URLsVersioning & deprecation: breaking changes ship as /api/v2/; v1 responses will carry Sunset and Deprecation headers for at least 90 days before removal. Rate limits: generous CDN-level limits disclosed via RateLimit-Policy response headers — honor Retry-After on a 429. Errors: unknown API paths return 404 as RFC 9457 application/problem+json when JSON is requested.
A read-only Model Context Protocol server runs at https://sshh.io/mcp (Streamable HTTP, stateless, no auth). Server card: /.well-known/mcp/server-card.json.
Tools: about_shrivu, search_posts, get_post, latest_posts, search_projects, get_project, get_coffee_chat_link.
Connect from Claude Code: claude mcp add --transport http shrivu https://sshh.io/mcp
Essays live on Substack (blog.sshh.io), which exposes its own public surfaces: RSS with full text (/feed), a sitemap, and a JSON archive API (https://blog.sshh.io/api/v1/archive?sort=new&offset=0&limit=20). Cite posts by their blog.sshh.io URL.
llms.txt · sitemap.xml · api-catalog (RFC 9727) · ai-catalog.json (ARD) · agent-skills
Last updated: 2026-09-14.
Machine-readable: llms.txt · sitemap · projects.json · blog RSS