For agents

This site is written for AI agents too: an MCP server, llms.txt, Markdown twins of every page and JSON.

The MCP server

Point any MCP client at this address. It speaks Streamable HTTP, keeps no session and only reads: no account, no API key.

https://gurkanozkan.ai/mcp

Claude Code

claude mcp add --transport http gurkanozkan https://gurkanozkan.ai/mcp

Claude Desktop and claude.ai

Settings → Connectors → Add custom connector, then paste the address above. Claude Desktop's config file only starts local servers; to use it instead, bridge the address with mcp-remote:

{
  "mcpServers": {
    "gurkanozkan": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://gurkanozkan.ai/mcp"
      ]
    }
  }
}

Cursor and other clients with a JSON config

For Cursor, in ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "gurkanozkan": {
      "url": "https://gurkanozkan.ai/mcp"
    }
  }
}

What the tools return

5 read-only tools. They answer from a snapshot of the published essays, notes and concepts that is made each time the site is built: the same text you read here, nothing else. There is no language model behind them, no web access and no database; the server stores nothing you send. Search is plain keyword ranking (BM25), so use the words the text would use.

ToolArgumentsReturns
searchquery, limit?Full-text search (BM25) over every published essay, note and concept.
get_postslugThe full Markdown of one essay or note: YAML front matter (title, date, URL, concepts) and the body.
get_conceptidA concept of the site's idea atlas: its definition, broader and narrower concepts, typed relations in both directions (such as "uses" and "used by") and the essays and notes about it.
list_poststopic?Every published essay and note, newest first, with date, URLs, summary and concepts.
relatedidNeighbours of a concept, essay or note in the idea atlas, with how each one is linked: broader/narrower concept, typed relations, "mentions" / "mentioned in", "links to" / "linked from".

Every result carries the page's URL and its Markdown URL. get_post returns the Markdown with YAML front matter (title, date, URL, concepts); search points each hit at its best paragraph.

Plain files

Every essay, note and concept, and the About page, has a Markdown twin: add .md to its address, for example /writing/compiling-a-company-into-an-ontology-for-agents.md.

  • /llms.txtAn index of the site in the llms.txt format: every essay, note and concept with a one-line summary, linked to its Markdown.
  • /llms-full.txtEvery essay and note in one Markdown file, each with its title, date, URL and concepts.
  • /api/index.jsonEssays, notes and concepts as JSON: titles, dates, URLs, Markdown URLs, summaries, concepts.
  • /api/graph.jsonThe concept atlas as JSON: nodes, edges and the relation types.
  • /api/corpus.jsonThe bundle the MCP server reads: the full Markdown of every essay and note and a search index.

Citing a paragraph

Every paragraph has an id made from its own text: {#p-…} at the end of the paragraph in the Markdown, the same id in the HTML, where the ¶ link next to a paragraph points at it. Cite it as <page URL>#<id>. The id stays the same while that paragraph's text does, whatever happens around it. Headings keep their usual anchors.

Crawlers

robots.txt lets every crawler read everything, AI crawlers included, and lists the sitemap.