knowledge base · over MCP and REST

Forty years of work, ready to ask about.

Richard Hess's career, projects, research and archives, from expert systems and Lisp machines to web components and spec-driven UI. AI clients connect over MCP, anything that speaks HTTP can use the REST API, and people can just read the site. No account, no key, nothing to install.

MCP endpoint: https://mcp.eswat2.app/mcp

$ claude mcp add eswat2 --transport http \
    https://mcp.eswat2.app/mcp

> What was WINTERP, and how does it
  connect to his later work?

  ⏺ eswat2 · read_uri(vault://winterp)
  ⏺ eswat2 · read_uri(vault://spec-lineage)
  ⏺ eswat2 · search_by_tag(yaml)
what you get

One knowledge base, many ways in

Every view reads the same compiled content, so the wiki, the graphs, the HTML pages and the MCP tools never disagree.

how it works

Connect, ask, follow the links

Every entry has a URI like vault://teknowledge, and entries link to one another. A client can start anywhere and work its way across the knowledge base.

STEP 1

Connect a client

Claude Code, over streamable HTTP:

claude mcp add eswat2 \
  --transport http \
  https://mcp.eswat2.app/mcp

Stdio-only clients (Claude Desktop, Perplexity) go through a proxy:

npx mcp-remote \
  https://mcp.eswat2.app/mcp
STEP 2

Ask in plain language

The model picks the tools and reads what it needs. For example:

  • Summarize his career in five lines.
  • What did he work on at Netscape?
  • Show me a YAML spec for a color picker.
  • What was the AI winter like from the inside?
STEP 3

Or skip the client

The same content is a site you can read. Every entry renders as plain HTML that works without JavaScript, and there are short URLs like /about, /resume and /vault.

Scripts can call the REST API, which serves the same entries as JSON or Markdown:

curl "https://mcp.eswat2.app/resolve?uri=vault://winterp"

For a crawler or an agent, start with /llms.txt or /manifest.

what's inside

Seven namespaces

Each one has an index page that lists its entries.

for clients

Built to be read by machines

Six tools, one URI scheme

list_namespaces, list_uris, read_uri, list_tags, search_by_tag and get_graph. Every tool takes or returns namespace://slug URIs, so what one call returns can go straight into the next.

A front door for agents

/llms.txt and /manifest describe every namespace, page, tool and post. An agent can find its way around without being told what's here.

Public and read-only

No auth and no key. Every tool only reads, so nothing a client does can change the content.

Notes for the next reader

Entries can carry notes written for the model rather than for people, such as sourcing audits and editorial reasoning. They go out over MCP and the REST API but never show on the HTML pages.

under the hood

Markdown in, everything else out

The source is a folder of flat Markdown files with YAML frontmatter. A build step compiles them into per-namespace JSON. One FastAPI app on Vercel serves that JSON as MCP tools at /mcp, as a REST API, as server-rendered HTML, and as the wiki and graph pages. Adding an entry means writing a file and rebuilding. There's no database.

BUILT WITH Python FastAPI Official MCP Python SDK Streamable HTTP Markdown + YAML Vercel