Un endpoint de Model Context Protocol, para que un agente pueda consultar la
documentación en lugar de hacerle scraping.

## Herramientas

| Herramienta     | Qué hace                                                |
| :-------------- | :------------------------------------------------------ |
| `list_versions` | Cada versión, con el prefijo que la delimita            |
| `list_pages`    | El índice de contenidos, acotado y delimitado           |
| `search_docs`   | Encontrar una página por término, con un extracto       |
| `read_page`     | Una página como Markdown, con frontmatter de duxt       |

## El ámbito es un prefijo de URL

`list_versions` devuelve el prefijo en el que se sirve cada versión — `/app`,
`/app/v1`, `/de/app` — y esa cadena es todo el ámbito que aceptan `list_pages` y
`search_docs`. Lleva además la etiqueta de la versión, su estado de ciclo de
vida, los idiomas en los que está publicada y si es la predeterminada, de modo
que un agente elige una edición antes de buscar en ella.

Omitir el prefijo cubre todas las versiones, en el idioma predeterminado del
sitio. Una versión anidada bajo otra — `/app/v1` bajo el `/app` actual — nunca
está dentro del ámbito de la superior.

## Respuestas acotadas

Ambos listados aceptan `limit` (20 por defecto, 100 como máximo) y un `cursor`.
Los resultados se ordenan por ruta, y una línea `nextCursor` indica dónde
continuar; un listado sin ella está completo. El cursor es la última ruta
devuelta, así que se mantiene estable si la documentación cambia entre dos
llamadas.

## Qué devuelve `read_page`

El frontmatter YAML propio de duxt — ruta, prefijo, etiqueta y ref de la
versión, idioma y estado de ciclo de vida — sobre el Markdown escrito, con el
frontmatter original eliminado. Nunca el HTML renderizado ni el árbol de
análisis de Content.

## Notas

Las mismas colecciones que las páginas, así que las respuestas no pueden
desviarse de lo publicado. El nombre, la descripción y las instrucciones del
servidor vienen de las opciones del módulo.

El servidor reutiliza un índice de rutas por colección de producción. Las listas leen metadatos de los resultados solicitados y una fila de continuación. La búsqueda lee cuerpos en bloques de hasta 64 páginas y se detiene al completar la respuesta. Mantiene Unicode y la prioridad de traducciones. Sin coincidencias recorre todo el ámbito, sin conservar todos los cuerpos en memoria.