connect_ai_mcp); si no la tienes, el endpoint responde con 403.
Conectar clientes
- Claude
- ChatGPT
- Otros clientes
- Configuración → Conectores → Añadir conector personalizado
- Introduce
https://app.famulor.io/mcp - Claude inicia el flujo de OAuth automáticamente: inicia sesión en la página de inicio de sesión de tu plataforma y aprueba la pantalla de consentimiento.
- Las herramientas aparecen en Claude.
Conectar desde el panel
La forma más rápida de conectar es el modal integrado Connect AI: abre la página Herramientas del panel y haz clic en Usar en ChatGPT y Claude. El modal muestra la URL MCP de tu cuenta (tu dominio de marca blanca, si tienes uno configurado y verificado), te deja copiarla con un clic y ofrece prompts iniciales listos para usar: crear un asistente, arreglar un asistente, analizar la última llamada, extraer datos de las últimas 30 llamadas o lanzar una campaña. Abrir en Claude / Abrir en ChatGPT envía el prompt elegido directamente a la app de IA; ahí solo te queda completar el inicio de sesión y el consentimiento.Autenticación
El endpoint implementa la pila de autenticación MCP moderna al completo; los clientes la gestionan automáticamente:- Una solicitud sin autenticar devuelve
401con metadatos del recurso protegido (RFC 9728) y una pistascope=. - El cliente descubre el servidor de autorización (RFC 8414). El AS anuncia
client_id_metadata_document_supported: trueytoken_endpoint_auth_methods_supportedincluyendononeyprivate_key_jwt. - Registro de cliente (prioridad MCP): preregistrado → Client ID Metadata Document (CIMD) cuando
client_ides una URL HTTPS de metadatos (Claude / ChatGPT) → Dynamic Client Registration (RFC 7591) como respaldo → manual. Luego Authorization Code + PKCE-S256. - Inicias sesión (login de marca blanca) y apruebas la pantalla de consentimiento —una vez por aplicación—; la aprobación se recuerda durante 180 días. Con CIMD, el consentimiento muestra el hostname verificado de la URL de metadatos.
- El cliente recibe un token de acceso (
fam_at_..., 1 h, con refresh token) y llama al endpoint.
Herramientas disponibles
Todas las operaciones de la REST API v1 también están disponibles como herramienta MCP: los mismos servicios, la misma validación (límites del plan, catálogo de modelos, lista DNC).
En la app, Milian Copilot usa los mismos servicios a través de tu sesión de inicio de sesión (
/api/milian/*), no este endpoint MCP.
| delete_assistant | assistants:write | Eliminar un asistente de forma permanente |
| list_tools / get_tool | assistants:read | Listar herramientas reutilizables (herramientas de API HTTP + servidores MCP externos) / obtener una (los secretos se muestran enmascarados como •••) |
| create_tool / update_tool / delete_tool | assistants:write | Gestionar herramientas reutilizables (type api, mcp o builtin; esta última envuelve una herramienta integrada como herramienta del espacio de trabajo; crear/actualizar requiere una credencial de administrador porque la configuración contiene secretos) |
| get_assistant_tools / set_assistant_tools | assistants:read / assistants:write | Leer / REEMPLAZAR las herramientas asignadas a un asistente |
| get_voices | voices:read o assistants:read | Explorar la biblioteca de voces TTS (proveedor, idioma, género, acento, búsqueda) |
| get_models | assistants:read | Explorar el catálogo de modelos (type = llm, stt, tts o realtime): los modelos disponibles para configurar asistentes |
| get_languages | assistants:read | Listar los idiomas admitidos para asistentes (códigos ISO 639-1 + etiquetas) para primary_language / secondary_languages |
| list_calls / get_call | calls:read | Explorar llamadas; get_call incluye transcripción, resumen y un recording_url temporal |
| list_history / get_email_history_item | calls:read | Explorar llamadas y conversaciones de email agrupadas; cada turno de cliente/asistente con el mismo ID de hilo estable forma una fila y se puede consultar en orden cronológico |
| make_call | calls:write | Iniciar una llamada saliente (assistant_id, to_number, lead opcional) |
| live_call_control | calls:write | Control de llamadas activas: listen_token, whisper, end_agent o hangup (requiere la función de plan live_monitoring) |
| list_campaigns / get_campaign | campaigns:read o calls:read | Explorar campañas, incl. configuración del marcador y número de leads |
| create_campaign / update_campaign / delete_campaign | campaigns:write o calls:write | Gestionar campañas (concurrencia, reintentos, ventanas horarias de llamada y políticas de reintento: retry_on_voicemail, retry_until_goal + goal_variable, mark_complete_when_no_leads) |
| start_campaign / stop_campaign | campaigns:write o calls:write | Iniciar o pausar el marcador |
| list_leads | leads:read o calls:read | Listar los leads de una campaña |
| add_lead / add_leads / delete_lead | leads:write o calls:write | Gestionar leads (individual o en bloque hasta 1000, normalizados en formato E.164 y verificados contra la lista DNC) |
| list_suppression_entries | suppression:read o campaigns:read | Explorar la lista de no llamar (supresión) del espacio de trabajo |
| add_suppression_entry / remove_suppression_entry | suppression:write o campaigns:write | Bloquear un número para todas las campañas / quitarlo de la lista |
| list_phone_numbers | phone_numbers:read o calls:read | Números de la cuenta |
| search_phone_numbers | phone_numbers:read o calls:read | Buscar números disponibles para comprar en el marketplace, incl. precios |
| buy_phone_number / release_phone_number | phone_numbers:write o calls:write | Comprar / liberar números (con el flujo completo de facturación y compliance) |
| assign_phone_number | phone_numbers:write o calls:write | Asignar un número a un asistente y alternar sus direcciones |
| list_sip_trunks / get_sip_trunk | sip_trunks:read o calls:read | Explorar troncales SIP (las credenciales nunca se devuelven) |
| create_sip_trunk / delete_sip_trunk | sip_trunks:write o calls:write | Usar tu propio operador (DID/extensión, formato de llamada, SLA avanzado) / eliminar una troncal — consulta BYO SIP trunk |
| list_knowledge_bases / get_knowledge_base | knowledge:read o assistants:read | Explorar bases de conocimiento |
| create_knowledge_base / delete_knowledge_base | knowledge:write o assistants:write | Gestionar bases de conocimiento |
| add_document | knowledge:write o assistants:write | Añadir un documento (texto plano o URL de archivo) e indexarlo para su recuperación |
| get_balance | billing:read o calls:read | Saldo de minutos/créditos + resumen del plan |
| list_transactions | billing:read o calls:read | Historial del saldo con notas legibles; no se muestran identificadores de pago ni de conciliación |
| get_me | ninguno (cualquier token válido) | Inspeccionar la credencial que llama, los límites del plan y los toggles de funciones |
| get_memory_settings / update_memory_settings | settings:read / settings:write (o assistants:*) | Valores por defecto del espacio de trabajo para la memoria de quien llama (activada/desactivada por defecto + ventana de vigencia) |
| get_assistant_variables / set_assistant_variables | assistants:read / assistants:write | Leer / REEMPLAZAR las definiciones de variables personalizadas de un asistente |
| list_integrations / get_integration | integrations:read o assistants:read | Explorar integraciones de calendario (Cal.com, Calendly, Google, Outlook, nativa; secretos enmascarados) |
| create_integration / update_integration / delete_integration | integrations:write o assistants:write | Gestionar integraciones de calendario (se prueba la conexión antes de guardar; requiere credencial de administrador) |
| get_assistant_integrations / set_assistant_integrations | integrations:read/write o assistants:read/write | Leer / REEMPLAZAR las integraciones de calendario asignadas a un asistente |
| get_booking_event_types | bookings:read o assistants:read | Listar los tipos de evento del motor de reservas (slug, duración, disponibilidad semanal) |
| create_booking_event_type / update_booking_event_type / delete_booking_event_type | bookings:write o assistants:write | Gestionar los tipos de evento del motor de reservas integrado |
| list_bookings / get_booking | bookings:read o calls:read | Explorar reservas (filtrar por tipo de evento, estado o rango de fechas) |
| cancel_booking | bookings:write o calls:write | Cancelar una reserva (envía la actualización ICS METHOD:CANCEL) |
| get_usage_summary | calls:read | Uso mensual de minutos de llamada |
| list_dashboards / get_dashboard | dashboards:read o calls:read | Explorar paneles de analítica personalizados |
| create_dashboard / update_dashboard / delete_dashboard | dashboards:write o calls:write | Gestionar paneles personalizados; show_default_sections=false crea un lienzo en blanco y hidden_default_sections elimina tarjetas integradas individuales (requiere la función de plan custom_dashboards) |
| get_dashboard_analytics | dashboards:read o calls:read | KPIs, deltas de comparación, series temporales, desgloses, progreso de campañas y resúmenes de módulos restringidos |
| list_dashboard_widgets | dashboards:read o calls:read | Leer widgets, filtros, configuración de visualización y diseño de la cuadrícula |
| create_dashboard_widget / update_dashboard_widget / remove_dashboard_widget | dashboards:write o calls:write | Construir el lienzo del panel; eliminar lo desvincula pero conserva el widget reutilizable |
Cada herramienta acepta tanto su alcance detallado de v1 o el alcance general heredado (calls:* para campañas/leads/números/SIP/facturación/paneles, assistants:* para voces/conocimiento): los tokens de OAuth emitidos con los cuatro alcances estándar siguen funcionando para todo. Las claves/tokens sin restricción de alcance tienen acceso total; :write implica :read.