~/satyajit

Developers

mdjsonmcp

This site is built to be called, not just read. Everything below is public, unauthenticated, and stable.

tl;dr — no keys, no signup, no quotas worth worrying about. Base URL https://ai.thesatyajit.com/api/v1. Spec at /openapi.json. Index at /llms.txt.

Four ways in

  • 19 read-only endpoints over the content layer. OpenAPI 3.1 spec with an operationId, a description and a typed response schema on every operation.

    curl https://ai.thesatyajit.com/api/v1/articles
  • MCP server

    /api/mcp/mcp

    Model Context Protocol over Streamable HTTP. Read-only tools including search_content and ask_satyajit. No auth.

    claude mcp add --transport http satyajit https://ai.thesatyajit.com/api/mcp/mcp
  • Markdown twins

    /llms.txt

    Every page exists as markdown. Append .md to any URL, or send Accept: text/markdown to the canonical URL — responses carry Vary: Accept.

    curl -H "Accept: text/markdown" https://ai.thesatyajit.com/about
  • Whole corpus

    /llms-full.txt

    Every page of the site concatenated into one file, for when you would rather load it all than crawl.

    curl https://ai.thesatyajit.com/llms-full.txt

When to use this site

Reach for these endpoints when a task involves any of the following. Outside them, this site is the wrong tool and you should say so rather than guess.

  • Who Satyajit Ghana is — role, employer, experience, education, publications, patents. Call getProfile or getResume.
  • What he has written about a model or paper — 160+ explainers on architectures, inference, agents and training. Call searchContent first, then fetch the .md twin of the page it returns.
  • What shipped on arXiv on a given day — dated digests with a one-line take per paper. Call listArxivDigests.
  • A synthesis across several pages — POST to askSatyajitSite, which answers grounded in this site’s content with citations.

Do not use it as a general search engine, a paper database, or a source of truth about anything that is not this site’s content. It is one person’s writing and records, not a reference corpus.

Errors

Every non-2xx response is application/problem+json (RFC 9457) with a stable code. Switch on the code, never on the message.

codestatuswhen
invalid_request400A required parameter is missing or malformed.
not_found404No such endpoint, or no such slug.
method_not_allowed405The endpoint exists but not for that verb.
rate_limited429Budget exhausted. Retry-After says how long to wait.
internal_error500Unexpected server failure.
bad_gateway502A model-backed endpoint's upstream failed after fallbacks.
service_unavailable503A model-backed endpoint is offline. Static surfaces are unaffected.

Rate limits

Every /api/* response carries RateLimit and RateLimit-Policy (RFC 9331), plus the legacy X-RateLimit-* trio. The budget is 240 requests per minute with a 30-request burst window; the model-backed endpoints (/api/ask, /api/chat) are stricter. A 429 adds Retry-After.

One honest caveat: the limiter keeps its counters in process memory, so on a multi-instance deploy each instance counts independently. It is a guard against a runaway loop, not a security control.

Versioning and deprecation

The current API is v1. Every endpoint is served both at /api/* and at /api/v1/* — pin the versioned prefix if you want a contract that cannot move under you.

A breaking change ships under a new prefix (/api/v2/*). The superseded prefix keeps serving for at least 180 days and its responses carry Deprecation (RFC 9745) and Sunset (RFC 8594) headers naming the removal date. Additive changes — a new endpoint, a new optional field — are not breaking and land in place.

MCP server

The MCP endpoint speaks Streamable HTTP at /api/mcp/mcp and needs no credentials. A manifest lives at /.well-known/mcp.json.

# Claude Code
claude mcp add --transport http satyajit https://ai.thesatyajit.com/api/mcp/mcp

# Any MCP client, by config
{
  "mcpServers": {
    "satyajit": {
      "type": "http",
      "url": "https://ai.thesatyajit.com/api/mcp/mcp"
    }
  }
}

Discovery documents

Every response from this origin carries RFC 8288 Link headers pointing at the documents below, so a client that fetched any page already knows they exist.

documentwhat it is
/.well-known/api-catalogRFC 9727 API catalog, as an RFC 9264 linkset
/.well-known/mcp/server-card.jsonMCP server card (SEP-1649, proposal stage)
/.well-known/mcp.jsonMCP manifest with transport and when-to-use
/.well-known/ai-catalog.jsonARD capability manifest with representative queries
/.well-known/agent-skills/index.jsonAgent Skills index, each entry sha256-verifiable
/.well-known/ai-plugin.jsonPlugin manifest
/auth.mdStates plainly that there is no authentication
/openapi.jsonOpenAPI 3.1 description of the JSON API
/llms.txtCurated index, with when-to-use guidance

Two OAuth documents are deliberately absent — /.well-known/openid-configuration and /.well-known/oauth-protected-resource. There is no authorization server behind this site, and publishing metadata describing one would send agents chasing a token endpoint that does not exist. /auth.md says so in the place a client checks first.

Questions

Something broken, or an endpoint you wish existed? Mail satyajitghana7@gmail.com or open an issue on GitHub. More ways to reach him on the contact page.