El servidor MCP de Audeo permite que agentes de IA como Claude, Cursor y otros clientes compatibles con el protocolo MCP accedan a tus datos de reuniones, transcripciones y resúmenes de forma estructurada y segura.
Model Context Protocol (MCP) es un protocolo estándar que permite a los modelos de lenguaje (LLMs) interactuar con sistemas externos de forma estructurada. El servidor MCP de Audeo implementa este protocolo para exponer tus datos de reuniones a través de herramientas que los agentes de IA pueden usar.
El servidor MCP expone dos endpoints principales:
/api/v1/mcp - Listar HerramientasRetorna la lista de herramientas disponibles con sus esquemas de entrada.
Ejemplo:
curl -X GET https://api.salescaling.com/api/v1/mcp \
-H "X-API-Key: sk_xxx"
/api/v1/mcp - Ejecutar HerramientaEjecuta una herramienta específica con los argumentos proporcionados.
Ejemplo:
curl -X POST https://api.salescaling.com/api/v1/mcp \
-H "X-API-Key: sk_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "search_meetings",
"arguments": {
"query": "performance",
"limit": 10
}
}'
Además de la API key, puedes conectar clientes MCP que soporten OAuth 2.0 (flujo Authorization Code con PKCE). El servidor admite Dynamic Client Registration (DCR), por lo que el cliente registra automáticamente sus redirect URIs y no necesita un client_id ni un client_secret creados manualmente.
Authorization: Bearer <access_token> al servidor MCP.Añade únicamente la URL del servidor MCP. Claude u otro cliente compatible hará el registro DCR y abrirá la pantalla de consentimiento. Para Claude (Anthropic) la redirect URI que registra el cliente es:
https://claude.ai/api/mcp/auth_callback
Como mínimo se solicita meetings:read para las herramientas actuales de reuniones. La pantalla de consentimiento permite seleccionar individualmente los scopes antes de autorizar el acceso.
Audeo expone metadatos compatibles con descubrimiento OpenID en el propio endpoint MCP:
GET https://api.salescaling.com/.well-known/oauth-protected-resource/api/v1/mcpGET https://api.salescaling.com/.well-known/oauth-authorization-serverAhí encontrarás issuer, authorization_endpoint, token_endpoint, revocation_endpoint y scopes soportados (sustituye el host si usas otro entorno).
Configura el cliente MCP con la URL del servidor MCP (ajusta dominios si usas otro entorno):
{
"mcpServers": {
"Audeo": {
"url": "https://api.salescaling.com/api/v1/mcp"
}
}
}
Resumen de URLs típicas
| Uso | URL |
|---|---|
| Servidor MCP | https://api.salescaling.com/api/v1/mcp |
| Autorización (login usuario) | https://audeo.audeo.recordari.ai/oauth/authorize |
| Token (intercambio código / refresh) | https://api.salescaling.com/v1/oauth/token |
| Registro dinámico (DCR) | https://api.salescaling.com/v1/oauth/register |
Las peticiones al MCP usarán el token de acceso en el header Authorization: Bearer … en lugar de X-API-Key.
Audeo guarda videollamadas, reuniones presenciales y llamadas telefónicas en la misma entidad de reunión. Para que la API MCP sea clara:
meetings (search_meetings, list_meetings, find_meetings_by_participant) solo incluyen videollamadas y presenciales (no devuelven llamadas telefónicas).list_calls, search_calls y find_calls_by_participant están dedicadas a llamadas telefónicas y admiten filtros como dirección (INBOUND / OUTBOUND) y números de teléfono.get_meeting_transcript, get_meeting_summary, get_meeting_details y get_meeting_action_items funcionan con cualquier ID de reunión o llamada (el mismo identificador).search_meetings - Búsqueda AvanzadaBusca videollamadas y reuniones presenciales por texto en títulos y/o transcripciones (Full Text Search). No incluye llamadas telefónicas; para eso usa search_calls.
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
query | string | Sí | Término de búsqueda |
scope | string | No | title, sentences o all (default: all) |
fromDate | string | No | Fecha inicio (YYYY-MM-DD) |
toDate | string | No | Fecha fin (YYYY-MM-DD) |
limit | number | No | Máximo 50 (default: 20) |
Nota: Solo actividades de tipo videollamada o presencial.
Ejemplo:
{
"name": "search_meetings",
"arguments": {
"query": "performance review",
"scope": "all",
"fromDate": "2024-12-01",
"limit": 10
}
}
list_meetings - Listar ReunionesLista videollamadas y reuniones presenciales con filtros estructurados (excluye llamadas telefónicas).
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
keyword | string | No | Búsqueda en nombres / título |
fromDate | string | No | Fecha inicio |
toDate | string | No | Fecha fin |
limit | number | No | Máximo 50 (default: 20) |
skip | number | No | Paginación (default: 0) |
sortOrder | string | No | asc o desc — orden por fecha de inicio (default: desc) |
participants | string[] | No | Emails de participantes |
organizers | string[] | No | Emails de organizadores |
Ejemplo:
{
"name": "list_meetings",
"arguments": {
"fromDate": "2024-12-01",
"toDate": "2024-12-31",
"participants": ["cliente@empresa.com"],
"limit": 20
}
}
get_meeting_transcript - Obtener TranscripciónObtiene la transcripción detallada con atribución de speakers (reunión o llamada).
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
transcriptId | string | Sí | ID de la reunión o llamada |
language | string | No | Código de idioma (ej: "es", "en") |
maxSentences | number | No | Límite de oraciones (control de payload) |
Control de Payload:
maxSentencesEjemplo:
{
"name": "get_meeting_transcript",
"arguments": {
"transcriptId": "meeting-uuid-here",
"language": "es",
"maxSentences": 100
}
}
get_meeting_summary - Obtener ResumenObtiene el resumen generado por IA: texto (summaryText), action items (actionItems / next_steps), y según el tipo, topics/highlights (reuniones) o call insights (llamadas).
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
transcriptId | string | Sí | ID de la reunión o llamada |
language | string | No | Código de idioma |
Ejemplo:
{
"name": "get_meeting_summary",
"arguments": {
"transcriptId": "meeting-uuid-here",
"language": "es"
}
}
get_meeting_details - Detalles CompletosObtiene detalles completos de una reunión (metadatos + transcripción + resumen).
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
id | string | Sí | ID de la reunión |
includeTranscript | boolean | No | Incluir transcripción (default: true) |
includeSummary | boolean | No | Incluir resumen (default: true) |
maxSentences | number | No | Límite de oraciones en transcript |
Ejemplo:
{
"name": "get_meeting_details",
"arguments": {
"id": "meeting-uuid-here",
"includeTranscript": true,
"includeSummary": true,
"maxSentences": 500
}
}
find_meetings_by_participant - Buscar Reuniones por ParticipanteEncuentra reuniones donde participó una persona específica. Busca por nombre (coincidencia parcial) o email (coincidencia exacta).
Parámetros:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
participant | string | Sí | Nombre o email del participante |
fromDate | string | No | Fecha inicio (YYYY-MM-DD) |
toDate | string | No | Fecha fin (YYYY-MM-DD) |
limit | number | No | Máximo 50 (default: 20) |
skip | number | No | Paginación (default: 0) |
sortOrder | string | No | asc o desc por fecha de inicio (default: desc) |
titleFilter | string | No | Filtro opcional sobre el título de la reunión (coincidencia parcial) |
Características:
jon@empresa.com encontrará solo ese email exactoJon encontrará "Jon Smith", "Jonathan", "Jon Doe", etc.sortOrderEjemplos:
Buscar por email:
{
"name": "find_meetings_by_participant",
"arguments": {
"participant": "jon@empresa.com",
"fromDate": "2024-12-01",
"limit": 20
}
}
Buscar por nombre:
{
"name": "find_meetings_by_participant",
"arguments": {
"participant": "Jon",
"fromDate": "2024-01-01",
"toDate": "2024-12-31",
"limit": 50
}
}
list_calls - Listar llamadas telefónicasLista solo llamadas telefónicas (phonecall), con filtros por fechas, título, participantes, dirección y números.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
titleFilter | string | No | Coincidencia parcial en el nombre/título |
fromDate / toDate | string | No | Rango de fechas (YYYY-MM-DD) |
limit | number | No | Máximo 50 (default: 20) |
skip | number | No | Paginación |
sortOrder | string | No | asc o desc (default: desc) |
direction | string | No | INBOUND o OUTBOUND |
participants | string[] | No | Emails de participantes |
fromNumber / toNumber | string | No | Filtro parcial por número de llamante o destino |
search_calls - Buscar en llamadasBúsqueda en títulos y/o transcripciones solo para llamadas telefónicas. Parámetros similares a search_meetings, más direction, fromNumber, toNumber opcionales.
find_calls_by_participant - Llamadas por participanteIgual que find_meetings_by_participant pero solo para llamadas telefónicas, con los mismos filtros extra que list_calls (titleFilter, sortOrder, direction, números).
get_meeting_action_items - Action items del resumenDevuelve los next steps estructurados del resumen IA para un ID de reunión o llamada.
| Parámetro | Tipo | Requerido |
|---|---|---|
meetingId | string | Sí |
language | string | No |
get_meetings_statistics - Estadísticas agregadasTotales, duraciones medias por tipo de actividad, y top participantes (muestra acotada). Ámbito configurable:
| Parámetro | Tipo | Descripción |
|---|---|---|
fromDate / toDate | string | Rango opcional |
type | string | meetings (video+presencial), calls (solo teléfono), o all (default) |
Para OAuth (incluido Claude con redirect https://claude.ai/api/mcp/auth_callback), sigue la sección Conexión MCP vía OAuth Clients.
Localiza tu archivo de configuración:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonAgrega la configuración del servidor MCP:
{
"mcpServers": {
"Audeo": {
"url": "https://api.salescaling.com/api/v1/mcp",
"headers": {
"X-API-Key": "sk_tu_api_key_aqui"
}
}
}
}
Reinicia Claude Desktop
Verifica que el servidor esté conectado:
Abre la configuración de Cursor (Cmd/Ctrl + ,)
Busca "MCP Servers" en la configuración
Agrega el servidor de Audeo:
{
"mcp.servers": {
"Audeo": {
"url": "https://api.salescaling.com/api/v1/mcp",
"headers": {
"X-API-Key": "sk_tu_api_key_aqui"
}
}
}
}
Reinicia Cursor
Usa el servidor desde el chat de Cursor:
Para cualquier cliente compatible con MCP:
https://api.salescaling.com/api/v1/mcpX-API-Key con tu API keyUsuario: "Busca reuniones sobre pricing del último mes"
Claude → POST /api/v1/mcp
{
"name": "search_meetings",
"arguments": {
"query": "pricing",
"scope": "all",
"fromDate": "2024-12-01",
"limit": 20
}
}
Claude: "Encontré 5 reuniones sobre pricing:
1. Reunión de pricing con Acme Corp - 15 dic 2024
2. Review de estrategia de precios - 10 dic 2024
..."
Usuario: "Dame la transcripción completa de la reunión con ID abc-123"
Claude → POST /api/v1/mcp
{
"name": "get_meeting_transcript",
"arguments": {
"transcriptId": "abc-123",
"language": "es"
}
}
Claude: "Aquí está la transcripción de la reunión:
[00:00 - 00:15] Juan Pérez: Buenos días a todos..."
Usuario: "Analiza las reuniones de ventas de diciembre y dame insights"
Claude:
1. Lista reuniones → list_meetings (diciembre)
2. Para cada reunión → get_meeting_summary
3. Analiza patrones y genera insights
Claude: "He analizado 15 reuniones de diciembre:
- Temas más discutidos: pricing (8), implementación (6)
- Objeciones comunes: tiempo de implementación (5)
- Oportunidades identificadas: 3 cuentas enterprise..."
Todas las herramientas retornan respuestas en formato MCP estándar:
{
"content": [
{
"type": "text",
"text": "Descripción legible del resultado"
},
{
"type": "resource",
"resource": {
"uri": "Audeo://meeting/xxx",
"mimeType": "application/json",
"text": "{...datos JSON estructurados...}"
}
}
]
}
X-API-Key) o un access token OAuth (Authorization: Bearer) emitido para un OAuth Client autorizadoEl servidor MCP comparte los mismos límites de la API pública:
Usa el parámetro maxSentences para controlar el tamaño de las transcripciones.
Causa: API key no válida o no proporcionada
Solución:
X-API-Key esté presenteCausa: Nombre de herramienta incorrecto
Solución:
GET /api/v1/mcp para ver las herramientas disponiblessearch_meetings, list_meetings, get_meeting_transcript, get_meeting_summary, get_meeting_details, find_meetings_by_participant, list_calls, search_calls, find_calls_by_participant, get_meeting_action_items, get_meetings_statisticsCausa: ID de reunión no existe o no tienes acceso
Solución:
list_meetings para obtener IDs válidosSolución:
Solución:
maxSentences para limitar transcripcioneslimit en búsquedas y listadosincludeTranscript: false si solo necesitas el resumen¿Necesitas ayuda con el servidor MCP?
Última actualización: Abril 2026