Tema
Qué puedes integrar
Esta documentación asume que ya tienes una instalación de ur funcionando y que puedes entrar en su panel de administración. No cubre cómo desplegarla.
ur expone tres superficies independientes. Puedes usar las tres, o solo una:
| Superficie | Para qué | Quién la llama | Autenticación |
|---|---|---|---|
Agentes (/embed/*) | Un chat conversacional con streaming en tu producto | El navegador de tu usuario final | Ninguna — canal público |
API HTTP (/api/*) | Inferencias, búsqueda en RAGs, estado de indexación | Tu backend | Token Bearer |
MCP (/mcp) | Administrar ur desde un asistente de IA | Claude, Cursor, Claude Code… | OAuth 2.1 |
La diferencia que más confunde
Agentes y API son cosas distintas, no dos formas de lo mismo. Un agente es una conversación con memoria, tools y streaming, pensada para un usuario final. Una inferencia es una llamada suelta y sin estado: prompt entra, respuesta sale. Si tu caso es "un chat", vas a agentes; si es "procesar esto y devolverme un JSON", vas a inferencias.
Mapa de decisión
¿Quién va a hablar con ur?
Un usuario final, desde un navegador
Vas a la sección Agentes. Elige según cuánta UI quieras escribir:
- Ninguna → Widget embebible. Una etiqueta
<script>y tienes un chat flotante con los colores de tu marca. Es el camino más corto. - La tuya → SDK — quickstart.
@nykk/ur-agent-clienthabla con el backend y te da los eventos; tú pintas lo que quieras, en el framework que quieras.
Este canal no tiene autenticación
/embed/* es público por diseño: un <script> en el navegador no puede guardar un secreto. La identidad de conversación la genera el propio navegador y el único freno real al abuso es el rate limit por IP. Nunca pongas ahí un token. Detalles en Limitaciones.
Tu propio backend
Vas a la sección API HTTP, con un access token:
- Ejecutar un prompt contra tus documentos → Inferencias.
- Solo recuperar fragmentos relevantes, sin pasar por un LLM → RAGs.
- Un turno de agente sin streaming, respuesta completa de una vez → HTTP sin streaming.
/api/* no admite llamadas desde el navegador
No emite cabeceras CORS, a propósito: el token Bearer nunca debe llegar a un navegador. Llámala solo desde servidor. Si necesitas hablar desde el navegador, la vía es /embed/*.
Tú mismo, para administrar
Vas a MCP. Conectas Claude, Cursor o Claude Code a tu instancia y le pides los cambios en lenguaje natural, sin pasar por el panel.
El recorrido típico
- Crea el agente o la inferencia en el panel — ver Configurar el agente.
- Si vas por API, crea un access token con permisos sobre ese recurso.
- Integra siguiendo la guía de la vía que hayas elegido.
Antes de nada, si los términos no te suenan, echa un ojo a Conceptos: son siete y aparecen en todas las páginas.