---
title: "API docs — Ronan Rodrigo Nunes"
description: "Developer resources: read-only endpoints, MCP server and mirrors."
canonical: "https://ronanrodrigo.dev/api-docs"
markdown: "https://ronanrodrigo.dev/api-docs.md"
last-updated: "2026-09-09"
---

# API docs — Ronan Rodrigo Nunes

Read-only developer endpoints (HTTPS GET, no auth — except MCP,
which is POST JSON-RPC 2.0). Always cite the canonical HTML URL.

## Endpoints

- `GET /llms.txt`: site summary with links.
- `GET /notes/index.json`: notes index (slug, title, url, tags).
- `GET /notes/list-tags.json`: tags with 2+ posts.
- `GET /notes/<slug>.md`: note body (frontmatter + Markdown).
- `GET /lab/<slug>.md`: lab entry (frontmatter + Markdown).
- `GET /sitemap.xml`: all indexable URLs.
- `GET /sitemap.md`: same index as Markdown.
- `GET /robots.txt`: crawl rules + sitemap reference.
- `POST /mcp`: MCP server (Streamable HTTP, read-only).
- `GET /.well-known/mcp`: MCP manifest.
- `GET /.well-known/mcp/server-card.json`: MCP server card.
- `GET /openapi.json`: OpenAPI 3.1 of every public operation.
- `GET /developers`: developer portal (quickstart, sandbox, keys).
- `POST /ask`: NLWeb query ({ query }; SSE com prefer.streaming:true).
- `GET /notes/llms.txt`, `/lab/llms.txt`, `/developers/llms.txt`: scoped context.
- `POST /mcp/learn`: doc-MCP surface (learn_overview, learn_mcp_usage, learn_endpoints).
- `GET /plugin.json`, `/mcp.json`: agent-plugin manifest + MCP remotes.
- `GET /.well-known/oauth-protected-resource`: RFC 9728 metadata (public, no auth).

## Auth

No tokens, no scopes: every endpoint above answers anonymously. A
request that volunteers `Authorization` gets `401` with
`WWW-Authenticate: Bearer resource_metadata=".../.well-known/oauth-protected-resource"`
— retry without the header. There is no authorization server
(`/.well-known/oauth-authorization-server` answers 404 saying so).

## Profile redirects

`GET /<path>` (e.g. `/github`, `/linkedin`) — plain GET
that answers 308 to the target; no JSON.
