Developers · Public · Read-only · No authentication
Developers
Public, read-only interfaces to the same first-party documents this site publishes. No accounts, keys or sign-up.
REST API
JSON over HTTPS at https://ifuentes.net/api. GET only, CORS open to every origin, cached for five minutes. Described by OpenAPI 3.1.
| Method | Path | Returns |
|---|---|---|
| GET | /api | Index of the API: every endpoint and the related agent interfaces. |
| GET | /api/profile | Who Iñaki Fuentes is: current roles, short bio, career highlights and contact links. JSON with the Markdown text and its last-updated date. |
| GET | /api/resume | Iñaki Fuentes's full résumé: every role with dates and acquisitions, education, certifications, languages and awards. JSON with the Markdown text and its last-updated date. |
| GET | /api/now | What Iñaki Fuentes is focused on right now: roles in flight, what just ended, learning and priorities, with the last-updated date. JSON with the Markdown text and its last-updated date. |
| GET | /api/posts | Blog posts, newest first: title, summary, date, topic, language and links. Filters: topic, lang, limit. |
| GET | /api/posts/{slug} | One blog post: its metadata and the full text as Markdown. |
curl -s https://ifuentes.net/api/now
{
"id": "now",
"title": "Now",
"url": "https://ifuentes.net/now.md",
"html_url": "https://ifuentes.net/now.html",
"updated": "YYYY-MM-DD",
"content_type": "text/markdown",
"content": "# What I'm doing now: Iñaki Fuentes\n…"
}
curl -s 'https://ifuentes.net/api/posts?topic=evoost&limit=5'
Errors
Errors are RFC 9457 problem details (application/problem+json) with the right status code: 400, 404, 405 or 502.
{
"type": "about:blank",
"title": "Not Found",
"status": 404,
"detail": "No blog post with slug 'nope'. List them at https://ifuentes.net/api/posts.",
"instance": "/api/posts/nope"
}
MCP server
Streamable HTTP, stateless, at https://ifuentes.net/mcp. Read-only tools: get_profile, get_resume, get_now, get_blog_posts, get_blog_post. The documents are also MCP resources. Card: server-card.json.
curl -s -X POST https://ifuentes.net/mcp \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_now","arguments":{}}}'
A2A agent
JSON-RPC 2.0 message/send at https://ifuentes.net/a2a. It picks the right document and returns it verbatim: no generative AI, so it cannot invent facts. Skills: profile, resume, now, blog. Card: agent-card.json.
curl -s -X POST https://ifuentes.net/a2a -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"message/send","params":{"message":{"kind":"message","role":"user","messageId":"1","parts":[{"kind":"text","text":"What is Iñaki Fuentes doing now?"}]}}}'
NLWeb /ask
NLWeb endpoint at https://ifuentes.net/ask, list mode. It ranks the published pages and blog posts against the query with the same keyword rules as the A2A agent and returns them with their schema.org data. GET with ?query=, or POST a v0.55 request. Add streaming=true or Accept: text/event-stream for server-sent events.
curl -s 'https://ifuentes.net/ask?query=what+is+he+working+on+now'
curl -sN -X POST https://ifuentes.net/ask -H 'Content-Type: application/json' \
-d '{"query":{"text":"blog posts about eVoost"},"prefer":{"streaming":true}}'
WebMCP
The home, résumé and Now pages register the same read-only tools with document.modelContext, for agents that run in the browser.
Markdown
| Path | Contents |
|---|---|
/llms.txt | Who he is, in Markdown (llmstxt.org) |
/llms-full.txt | Bio, résumé and Now page in one file |
/index.md | The home page as Markdown, with front matter. GET / with Accept: text/markdown returns it too |
/resume.md | Résumé, with front matter |
/now.md | Now, with front matter |
/blog/llms.txt | Every blog post, linking to its Markdown version |
/blog/<slug>.md | One blog post, with front matter |
/developers/llms.txt | This page, for agents |
Discovery
| Path | What it is |
|---|---|
/.well-known/api-catalog | API catalog (RFC 9727 linkset) of everything on this page |
/openapi.json | OpenAPI 3.1 description of the REST API and /ask |
/.well-known/mcp/server-card.json | MCP server card |
/.well-known/agent-card.json | A2A agent card |
/.well-known/agent-skills/index.json | Agent Skills index (v0.2.0) |
/.well-known/ard.json | Agentic Resource Discovery manifest |
/schemamap.xml | NLWeb Schema Map: the schema.org feed (/schema.jsonl) and RSS feeds |
/auth.md | Authentication notice for agents (there is none) |
Rules
- No accounts, sign-up, API keys, OAuth or tokens. Do not send credentials: they are ignored.
- Everything is read-only and public. Cache responses for a few minutes; content changes rarely.
- Every document says when it was last updated. Cite the page and that date.
- Problems or questions: inaki@ifuentes.net.