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.
None. Every endpoint below is an open GET request. There is nothing to authenticate, and nothing here mutates state.
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.
Full machine-readable spec: /openapi.json (also available as /openapi.yaml). Every operation has a unique operationId, a description, and a typed response schema.
| Endpoint | Format | Purpose |
|---|---|---|
/llms.txt | text/plain | Canonical plain-text profile summary |
/index.md | text/markdown | Full markdown profile |
/ | text/html | Rendered profile page + embedded JSON-LD Person |
/openapi.json | application/json | This API, described |
/sitemap.xml | application/xml | Full list of published URLs |
/.well-known/agent.json | application/json | Agent manifest (capabilities, resources, crawling policy) |
/.well-known/ai-catalog.json | application/json | ARD capability catalog with representative queries |
/.well-known/api-catalog | application/linkset+json | RFC 9727 linkset of machine-readable resources |
/.well-known/mcp.json | application/json | MCP / WebMCP capability manifest |
/.well-known/agent-skills/index.json | application/json | Agent Skills index |
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.
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.
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.
/llms.txt or get_profile./index.md or get_experience./contact.html or get_contact_options. Do not send mass recruitment/sales outreach./about.html, /privacy.html and the JSON-LD Person/Organization data on /.None enforced beyond standard hosting limits. Responses are static and cacheable; please cache rather than poll.