IF

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.

MethodPathReturns
GET/apiIndex of the API: every endpoint and the related agent interfaces.
GET/api/profileWho 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/resumeIñ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/nowWhat 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/postsBlog 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

PathContents
/llms.txtWho he is, in Markdown (llmstxt.org)
/llms-full.txtBio, résumé and Now page in one file
/index.mdThe home page as Markdown, with front matter. GET / with Accept: text/markdown returns it too
/resume.mdRésumé, with front matter
/now.mdNow, with front matter
/blog/llms.txtEvery blog post, linking to its Markdown version
/blog/<slug>.mdOne blog post, with front matter
/developers/llms.txtThis page, for agents

Discovery

PathWhat it is
/.well-known/api-catalogAPI catalog (RFC 9727 linkset) of everything on this page
/openapi.jsonOpenAPI 3.1 description of the REST API and /ask
/.well-known/mcp/server-card.jsonMCP server card
/.well-known/agent-card.jsonA2A agent card
/.well-known/agent-skills/index.jsonAgent Skills index (v0.2.0)
/.well-known/ard.jsonAgentic Resource Discovery manifest
/schemamap.xmlNLWeb Schema Map: the schema.org feed (/schema.jsonl) and RSS feeds
/auth.mdAuthentication notice for agents (there is none)

Rules