Developer & agent documentation

Developer portal

tomasz.fr is a personal profile, not a SaaS product - so there is no login, no API keys, no rate limits and no sandbox to provision. Everything below is public, read-only, and free to call directly. This page exists to make that surface easy to find and integrate against.

Authentication

None. Every endpoint below is an open GET request. There is nothing to authenticate, and nothing here mutates state.

Quickstart

curl https://tomasz.fr/llms.txt
curl https://tomasz.fr/index.md
curl -H "Accept: text/markdown" https://tomasz.fr/
curl https://tomasz.fr/openapi.json

Prefer /llms.txt for the smallest, canonical summary. Send Accept: text/markdown to any page for a markdown representation instead of scraping rendered HTML.

API reference

Full machine-readable spec: /openapi.json (also available as /openapi.yaml). Every operation has a unique operationId, a description, and a typed response schema.

EndpointFormatPurpose
/llms.txttext/plainCanonical plain-text profile summary
/index.mdtext/markdownFull markdown profile
/text/htmlRendered profile page + embedded JSON-LD Person
/openapi.jsonapplication/jsonThis API, described
/sitemap.xmlapplication/xmlFull list of published URLs
/.well-known/agent.jsonapplication/jsonAgent manifest (capabilities, resources, crawling policy)
/.well-known/ai-catalog.jsonapplication/jsonARD capability catalog with representative queries
/.well-known/api-catalogapplication/linkset+jsonRFC 9727 linkset of machine-readable resources
/.well-known/mcp.jsonapplication/jsonMCP / WebMCP capability manifest
/.well-known/agent-skills/index.jsonapplication/jsonAgent Skills index

Errors

Errors are returned as structured JSON with an error code, a human-readable message, and a resolution_hint telling an agent what to try next. See the Error schema in /openapi.json and the example at /404.json.

MCP & WebMCP

No hosted MCP server (Streamable HTTP) exists here, by design, not by omission. There's no backend to expose one against, and the homepage already registers a set of read-only WebMCP tools via navigator.modelContext.provideContext() for browser-side agents: get_profile, get_experience, get_toolbox, get_contact_options, get_machine_readable_sources. A separate hosted MCP server would duplicate that for no functional gain on a static profile. See /.well-known/mcp.json for the full tool schemas and this reasoning in machine-readable form.

CLI

No CLI tool is planned, by design, not by omission. The entire surface is a handful of open GET requests (see the quickstart above) - curl https://tomasz.fr/llms.txt already does in one line everything a CLI would wrap. Publishing and maintaining a package on npm/PyPI/Homebrew would add packaging overhead with no functional benefit over the endpoints documented here.

When to use this

Rate limits & caching

None enforced beyond standard hosting limits. Responses are static and cacheable; please cache rather than poll.