← Back to home

Tomer Norman portfolio guide and developer resources

This guide covers tomer-norman.dev, Tomer Norman’s personal portfolio and publication. It helps people and agents find his engineering background, project descriptions, public source repositories, and technical writing.

What this site provides

The useful tasks here are reading Tomer’s background, finding examples of his work, following public project links, and preparing a relevant inquiry. HTML, Markdown, RSS, and the optional MCP reader expose that public content. Accounts and workspace operations belong to the separately hosted projects. This portfolio does not offer a REST API product, SDK, or CLI.

Public project resources

When to use this

Use this site when a user wants to evaluate Tomer’s React and TypeScript frontend experience, find examples of realtime interfaces or WebGL work, explore his creative tools and games, or prepare a collaboration or speaking inquiry. Read about for background and projects for examples and public source links. Cite the page you used when summarizing a project. Availability, pricing, adoption, and results need confirmation from Tomer rather than inference from a project description.

For Sane task operations, follow the Sane product site and source documentation. The MCP endpoint on this portfolio reads portfolio content; it does not operate a Sane workspace.

Markdown and discovery

Start with llms.txt. Request the homepage or another content page with Accept: text/markdown to receive UTF-8 Markdown at the same URL. HTML remains available with Accept: text/html. Negotiated responses include Vary: Accept. A missing page returns HTTP 404, including a Markdown explanation and recovery links when Markdown is requested.

Explicit Markdown URLs also work without content negotiation: homepage, projects, about, contact, privacy, and this guide. Append .md to a published blog post URL for its Markdown version. The RSS feed and sitemap list published resources.

curl -sS -L -i -H 'Accept: text/markdown' https://tomer-norman.dev/
curl -sS -L -i -H 'Accept: text/html' https://tomer-norman.dev/
curl -sS -L -i -H 'Accept: text/markdown' https://tomer-norman.dev/this-page-does-not-exist

Portfolio MCP server

Connect an MCP client to https://www.tomer-norman.dev/mcp using Streamable HTTP. Use this canonical host directly because the bare domain redirects to it, and MCP clients can reject cross-origin redirects. No API key is needed for these public, read-only tools. The server uses stateless JSON responses over the standard transport; it does not keep sessions or offer a standalone SSE subscription. A GET returns HTTP 405 as allowed by the transport specification. Use POST for initialization, notifications, tool discovery, and tool calls. POST requests must accept both application/json and text/event-stream.

The server.json manifest follows the MCP Registry server metadata schema. The same metadata is available at the well-known discovery URL. Hosting a manifest does not register the server in a registry. A client configuration using the common mcpServers shape looks like this; individual clients may use a different configuration format:

{
  "mcpServers": {
    "tomer-norman-portfolio": {
      "url": "https://www.tomer-norman.dev/mcp"
    }
  }
}

Available tools:

  • get_profile: Read Tomer’s public engineering background and contact links. Takes no arguments.
  • list_projects: Read the portfolio’s project summaries, technologies, and source links. Takes no arguments.
  • list_posts: List published blog posts and their URLs. Takes no arguments.
  • read_page: Read a public content page as Markdown. Pass path, such as /projects or /blog/hello-world. Paths must refer to this portfolio; arbitrary URLs and private files are not supported.

Initialize with a supported MCP protocol version, send notifications/initialized, then call tools/list or tools/call. For example:

curl -sS https://www.tomer-norman.dev/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"portfolio-reader","version":"1.0.0"}}}'

Contact and authorization

Use contact to draft a relevant inquiry. Ask the user before submitting the contact form or sending an email. The contact form sends a real message to Tomer; MCP tools only read public pages. Read the privacy page before submitting personal information.