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 por defecto; opcionalmente, un token corto que tu backend firma para tu usuario |
API HTTP (/api/*) | Inferencias, búsqueda en RAGs, estado de indexación, avisos de contenido nuevo | Tu backend | Token Bearer |
MCP (/mcp) | Administrar ur y usar sus RAGs e inferencias desde un asistente de IA | Claude, Cursor, Claude Code… | OAuth 2.1, o un access token con «Usable desde el MCP» |
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 lleva secretos
/embed/* es público por diseño: un <script> en el navegador no puede guardar un secreto. Por defecto, la identidad de conversación la genera el propio navegador y lo que contiene el abuso son los límites por IP y por agente. Nunca pongas ahí un access token ni una clave. Detalles en Seguridad y límites.
Si el agente tiene que saber quién es tu usuario, tu backend firma para él un token corto y el navegador solo lo pide y lo reenvía → Usuarios identificados.
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.
- Saber qué agentes alcanza tu token, y qué tools tiene cada uno → Agentes en la API.
- Avisar de que hay documentos nuevos, sin esperar al siguiente escaneo → Webhooks. Ojo: estos van con el secreto del webhook de esa fuente, no con el access token.
/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 recurso en el panel: si es un agente, Configurar el agente; si es una inferencia, Inferencias.
- 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.