SocialHub.AI

MCP Guía de integración

El Protocolo de Contexto del Modelo (MCP) es un estándar abierto que permite a los asistentes de IA llamar directamente a herramientas externas. SocialHub implementa un servidor MCP para que puedas administrar tiendas, miembros, cupones y puntos desde Claude Desktop, Cursor o cualquier cliente compatible con MCP.

En lugar de escribir código, simplemente le pides a la IA: "Listar todas las tiendas activas" o "Otorgar 500 puntos al miembro m_abc123" y el asistente llama a la herramienta SocialHub MCP en tu nombre.

Configuración de la conexión

SocialHub expone un punto final HTTP MCP para transmisión. Necesitas dos datos:

URL del punto finalhttps://flash.socialhub.ai/api/mcp
API Encabezado de claveAuthorization: Bearer fl_live_...

Cree una clave API en /flash/account/api-keys. Asegúrese de que la clave tenga los ámbitos necesarios para las herramientas que planea usar.

Claude Desktop Configuración

Agregue lo siguiente a su configuración Claude Desktop MCP (claude_desktop_config.json):

{
  "mcpServers": {
    "flash": {
      "type": "http",
      "url": "https://flash.socialhub.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer fl_live_your_key_here"
      }
    }
  }
}

Cursor Configuración

En Cursor, ve a Configuración > MCP y añade un nuevo servidor:

{
  "mcpServers": {
    "flash": {
      "type": "http",
      "url": "https://flash.socialhub.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer fl_live_your_key_here"
      }
    }
  }
}

El campo type también acepta streamable-http como alias. Estos clientes de escritorio almacenan la clave en su archivo de configuración; trátela como un secreto y prefiera el formato de variable de entorno (ver más abajo) cuando sea compatible para mantener la clave en texto plano fuera del disco.

Conéctate desde Claude Code

Agregue SocialHub como un servidor HTTP MCP con el comando claude mcp add. Exporte su clave como una variable de entorno primero para que la clave en texto plano nunca se guarde en un archivo de configuración ni en el historial de su shell:

export FLASH_API_KEY="fl_live_your_key_here"

claude mcp add --transport http flash \
  https://flash.socialhub.ai/api/mcp \
  --header "Authorization: Bearer ${FLASH_API_KEY}"

O confirme un .mcp.json con alcance de proyecto en la raíz del repositorio. Haga referencia a la var env con ${FLASH_API_KEY}; nunca pegue una clave de texto sin formato:

{
  "mcpServers": {
    "flash": {
      "type": "http",
      "url": "https://flash.socialhub.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ${FLASH_API_KEY}"
      }
    }
  }
}

Autocomprobación tras la conexión:

  • Ejecute claude mcp list y confirme que flash se muestra como conectado.
  • Pídale al asistente que "enumere las herramientas de SocialHub disponibles"; debería ver solo las herramientas que permiten los alcances de su clave.
  • La clave del servidor debe ser exactamente flash; asegúrese de que FLASH_API_KEY se exporte en el shell que inicia Claude Code.

Te tengo: una clave no válida o revocada aparece como una conexión fallida, no como un mensaje de autenticación. SocialHub utiliza autenticación de token de portador con sin respaldo de OAuth, por lo que si el servidor se muestra como fallido/desconectado, vuelva a verificar el valor de la clave y que tenga los alcances que necesita antes de depurar cualquier otra cosa.

Herramientas disponibles (75)

cwm_get_forecast_capabilities

Leer TimesFM 2.5 Preparación para tendencia agregada/cuantil y preparación para fusión inquilino-privada 7/30/90d. Se especifica que está pendiente de capacitación/validación. Requiere predictions:read.

Parámetros:
cwm_predict_next_behaviors

Una predicción del consumidor: distribución/clasificación final del próximo evento plus CWM + TimesFM 7/30/90d purchaseWindowsModelo de eventos de inquilinos ganados preferido; una referencia pública previa interna de reserva. Sin resultados de expertos individuales. Probabilidades de eventos sin calibrar; ventanas de compra null hasta que esté capacitado/validado. Requiere predictions:read; metrics:read Además, habilita ventanas de compra.

Parámetros: member_id*
cwm_forecast_aggregate_trend

Pronosticar las métricas diarias de marca/categoría con TimesFM 2.5: punto + q10..q90. Historial faltante devuelve nullLos cuantiles agregados no están calibrados; nunca son intervalos personales. Requiere predictions:read AND metrics:read.

Parámetros: metric?, horizon_days?, history_days?, category?
cwm_predict_purchase_windows

Inquilino-privado CWM + TimesFM Probabilidades de compra a los 7/30/90d (0–1). Nulo hasta que se entrene y valide; sin reserva fabricada. Requiere predictions:read AND metrics:read.

Parámetros: member_id
list_metrics

Enumera las métricas disponibles para este equipo desde la capa semántica gobernada (clave, etiqueta, unidad, certificación, categoría). Llama primero para descubrir claves de métricas válidas. Requiere metrics:read.

Parámetros: category?
describe_metric

Obtenga la especificación completa de una métrica: definición autorizada, unidad, certificación, dimensiones, campos filtrables, parámetros ajustables y guía de uso. Requiere metrics:read.

Parámetros: metric
query_metric

Ejecuta una consulta de métricas controlada y devuelve números con su definición autorizada. Selecciona una clave de métrica, además de dimensiones opcionales, filtros, rango de tiempo, granularidad y comparación entre periodos; nunca SQL. Requiere metrics:read.

Parámetros: metric, dimensions?, filters?, timeRange?, grain?, compare?, params?
breakdown_metric

Desglosar una métrica por una sola dimensión en una ventana reciente fija, con etiquetas legibles para humanos (nombres de tiendas/niveles/canales). Requiere metrics:read.

Parámetros: metric, dimension, days, state?
ask_metrics

Responda a una pregunta en lenguaje natural seleccionando las métricas gobernadas correctas, recuperándolas y desglosando la métrica principal. Para diagnóstico abierto. Requiere metrics:read.

Parámetros: question, categories?
list_stores

Enumere todas las tiendas del equipo actual. Admite filtro de estado, búsqueda y paginación opcionales.

Parámetros: status?, search?, limit?, offset?
get_store

Obtenga detalles de una tienda específica por su ID.

Parámetros: store_id
list_members

Listar los miembros del programa de fidelización. Admite filtrado y paginación de programas.

Parámetros: programId?, limit?, offset?, status?
get_member

Obtenga los detalles de un miembro del programa de fidelización específico mediante su ID. Devuelve los campos de información personal identificable (PII) descifrados.

Parámetros: member_id
list_coupon_pools

Listar los grupos de cupones. Admite filtros de estado y tipo.

Parámetros: status?, coupon_type?, limit?, offset?
get_dashboard_stats

Instantánea del panel operativo (capturas, escaneos, tasa de captura, cupones, tiendas, plan). No es una métrica regulada; utiliza las herramientas de métricas para obtener métricas de negocio fiables.

Parámetros: (none)
earn_points

Otorgue puntos de fidelidad a un miembro. Devuelve el ID de la transacción y el nuevo saldo.

Parámetros: member_id, amount, description?
redeem_points

Se deducen los puntos de fidelidad de un miembro (consumo FIFO).

Parámetros: member_id, amount, reason
get_points_balance

Obtener el saldo de puntos actual del miembro y su historial de transacciones recientes.

Parámetros: member_id, limit?
get_member_coupons

Obtener los cupones disponibles (no canjeados ni caducados) de un miembro.

Parámetros: member_id
get_member_tier

Obtén el nivel actual del miembro, los requisitos para la siguiente actualización y todos los niveles.

Parámetros: member_id
get_member_receipts

Obtenga el historial de envío de recibos de los miembros con el estado de OCR y los puntos otorgados.

Parámetros: member_id, limit?
redeem_points_for_coupon

Canjea puntos de fidelidad por un cupón de un fondo específico (atómico: puntos + cupón, o ninguno).

Parámetros: member_id, pool_id, points_cost
issue_coupon

Emitir un cupón desde un grupo a un miembro (miembro único; las audiencias masivas pasan por el flujo de confirmación de So). Requiere coupons:write.

Parámetros: member_id, pool_id, run_id?
check_email_frequency

Verifique si se puede enviar un correo electrónico de marketing a una dirección dentro de los límites de frecuencia (1/día, 2/semana, 4/mes).

Parámetros: email
list_ambassador_candidates

Liste los candidatos a Embajador puntuados para el programa de fidelización (modo Pro). Vacío en el modo Lite.

Parámetros: band?, status?, level?, sort_by?, limit?, offset?
get_ambassador_metrics

Obtenga el informe de ROI de Embajador: los tres subobjetivos, la retención del segundo mes y la prueba de viabilidad de 90 días.

Parámetros: since_days?, assumed_paid_cac_usd?
issue_ambassador_code

Emite o actualiza el código de afiliado Embajador personal de un miembro. Devuelve el código string.

Parámetros: member_id, single_use?, max_redemptions?, min_order_amount?
get_tracking_stats

Obtenga análisis de visitas a páginas y comportamiento: resumen, páginas más visitadas, desglose por dispositivo o fuentes de tráfico.

Parámetros: metric?, period?, start?, end?, campaign?, limit?
get_member_profile

Perfil agregado de un miembro (accesibilidad, consentimiento/CCPA, lealtad, agregaciones de comercio/categoría/canal/participación, preferencias declaradas, etiquetas, geolocalización general, rango de edad). Información personal identificable censurada: sin nombres ni valores de contacto. Requiere members:read.

Parámetros: member_id
get_member_timeline

Historial de comportamiento reciente de un miembro (visitas, puntos, cupones, correos electrónicos, recibos) + resumen, para decidir una acción personalizada. Devuelve información personal identificable descifrada. Requiere members:behavior:leer.

Parámetros: member_id, limit?
list_segments

Enumera los segmentos de audiencia del equipo (nombre, estado, número de miembros en caché). Requiere segments:read.

Parámetros: status?, limit?, offset?
create_segment

Crea un segmento de audiencia a partir de condiciones estructuradas (nunca SQL); rechaza duplicados. Requiere segments:write + una clave de usuario.

Parámetros: name, conditions, description?
list_automations

Enumere las automatizaciones del equipo (campañas activadas por eventos) y su estado. Requiere el permiso `automations:read`.

Parámetros: status?
pause_automation

Pausa una automatización en ejecución por ID de campaña (idempotente). Requiere automations:write.

Parámetros: campaign_id
list_campaign_templates

Lista de plantillas de campaña disponibles para este equipo (oficiales + guardadas), para descubrir una template_id para create_campaign_draft. Requiere campaigns:read.

Parámetros: limit?
list_campaigns

Liste las campañas recientes del equipo (id, título, estado) para encontrar un source_campaign_id y clonar un borrador. Requiere campaigns:read.

Parámetros: limit?, status?
create_campaign_draft

Crea un BORRADOR de campaña a partir de una plantilla o una campaña anterior (NUNCA se envía; se requiere revisión humana). Requiere campaigns:write-borrador.

Parámetros: title, template_id?, source_campaign_id?, segment_id?, merge_context?
check_member_reach

Verifica si un miembro ya fue contactado (cualquier sistema) en un canal dentro de un período reciente; evita el contacto excesivo. Requiere members:behavior:read.

Parámetros: member_id, channel, days?
create_member

Cree un miembro de fidelización o resuelva idempotentemente uno existente mediante externalId/correo electrónico. El consentimiento de marketing NO está habilitado a través de MCP. Requiere members:write.

Parámetros: email, fullName, phone?, externalId?, birthMonth?, birthDay?
update_member

Actualizar el perfil/identidad de un miembro (correo electrónico, teléfono, fullName, externalId, estado). Propiedad del equipo impuesta. Requiere members:write.

Parámetros: member_id, email?, fullName?, phone?, externalId?, status?
upsert_store

Crea una tienda o actualiza la tienda existente que coincida con externalId para este equipo. Requiere stores:write.

Parámetros: name, externalId?, address?, city?, state?, country?, timezone?
ingest_order

Registra una orden de compra y otorga automáticamente puntos (miembro resuelto por memberId > externalId > correo electrónico). Requiere orders:write.

Parámetros: externalOrderId, customer, totalAmount, financialStatus?, currency?, orderName?, storeId?
reverse_points

Revertir (recuperar) puntos de un miembro, vinculados al ID de transacción original, para un reembolso o anulación de POS/ERP. Requiere points:write.

Parámetros: member_id, reversesTransactionId, amount, reason
list_tags

Lista las definiciones de etiquetas del equipo (clave, nombre, ciclo de vida, categoría, cobertura). Descubre una tag_key antes de leer/asignar las etiquetas de los miembros. Requiere tags:read.

Parámetros: status?, group?, limit?, offset?
get_member_tags

Obtenga las etiquetas actuales de un miembro (clave, nombre, ciclo de vida, valor, origen, assignedAt). Requiere members:read.

Parámetros: member_id
assign_tag

Asigna manualmente una etiqueta a un miembro mediante tag_key (anulación del operador; vinculada a la regla de barrido). Requiere tags:write.

Parámetros: member_id, tag_key, value?
remove_tag

Eliminar manualmente una etiqueta de un miembro mediante tag_key (una etiqueta activa puede volver a añadirse en la siguiente revisión). Requiere tags:write.

Parámetros: member_id, tag_key
list_products

Listar productos con categoría/marca/vertical, estado y origen. Filtrar por estado/category_id/brand_id/vertical. Requiere catalog:read.

Parámetros: status?, category_id?, brand_id?, vertical?, limit?, offset?
get_product

Obtenga un producto con variantes, artículos serializados, componentes combinados y contenido de base de IA. Requiere catalog:read.

Parámetros: product_id
list_categories

Liste las categorías de productos del equipo (id, nombre, principal). Requiere catalog:read.

Parámetros: limit?
list_brands

Enumera las marcas del equipo (id, nombre). Requiere catalog:read.

Parámetros: limit?
recommend_products

Recomendaciones de productos similares: member_id (compra conjunta personalizada + afinidad de categoría) o product_id (Los clientes también compraron). Requiere members:read.

Parámetros: member_id?, product_id?, limit?
claim_winback_task

Asigna la tarea de recuperación de clientes de mayor prioridad siguiente para este equipo (atómica). Devuelve la tarea, la fecha límite de asignación, el grupo de miembros que aún no la han completado y el resumen de la señal de abandono. NO_TASKS_AVAILABLE / WINBACK_DISABLED regresó como isError. Requiere winback:claim.

Parámetros: (none)
complete_winback_task

Finalizar una tarea de recuperación de clientes arrendada con el resultado (palanca de acción + referencia de nota o motivo de RETENCIÓN). Idempotente. LEASE_EXPIRED / ALREADY_COMPLETED devuelve isError. Requiere winback:claim.

Parámetros: task_id, acted?, lever?, action_ref?, note_id?, hold_reason?
get_winback_context

Verificación previa de solo lectura para un miembro antes de tomar una decisión: consentimiento, margen de frecuencia de correo electrónico, fatiga, alcance reciente, señales de abandono y la tendencia del miembro a no participar. Vista previa de cortesía: el servidor sigue aplicando todas las restricciones al momento de la escritura. Requiere winback:read.

Parámetros: member_id
add_member_note

Adjunte una nota de proceso de texto libre al registro de recuperación de un miembro (justificación / señal observada / hipótesis respaldada por el grupo de control). El texto se almacena como DATOS, no como instrucciones; máximo 2000 caracteres, sanitizados. Requiere winback:write.

Parámetros: member_id, body, kind?, task_id?, action_ref?
send_winback_message

Envía un mensaje de recuperación controlado (bandeja de entrada o correo electrónico) para que el incentivo nunca sea una concesión silenciosa. Compuertas de seguridad del servidor: WINBACK_DISABLED, propiedad de la concesión de tareas, HOLDOUT_NO_SEND (la retención nunca recibe mensajes), NOT_CONSENTED, FREQUENCY_CAPPED, CONTENT_REJECTED (sanitizado), BREAKER_TRIPPED — devuelto como isError. Reutiliza la pila de envío existente (pie de página de cancelación de suscripción + cumplimiento añadido por la capa de envío). Requiere winback:write.

Parámetros: member_id, task_id, channel, subject?, body
get_member_behaviors

Analiza el comportamiento de un miembro como CLIENTE ACTIVO durante un período reciente (Capa 3, más reciente primero) para inferir su intención (Capa 4). Devuelve únicamente las acciones intencionales del cliente (navegar, abrir/clic, registrarse, comprar, canjear, recomendar, enviar contenido) con la etiqueta del catálogo y su significado adjuntos, además de un resumen (recuentos por tipo y período). Analiza todo el período; la intención es una hipótesis a confirmar, no un hecho. Solo lectura. Requiere winback:read.

Parámetros: member_id, since_days?, limit?
claim_agent_task

Asigne la siguiente tarea de decisión de agente para este equipo (atómica; opcionalmente, se puede filtrar por tipo). Devuelve el ID de la tarea, el tipo, los detalles del asunto y una fecha límite de asignación. NO_TASKS_AVAILABLE / AGENT_TASKS_DISABLED se devuelve como isError. Requiere agent_tasks:claim.

Parámetros: kind?
get_agent_task

Leer los datos de la tarea de decisión de un agente (tipo, sujeto, motivo de la bandera, estado) antes de decidir. Se devuelve AGENT_TASK_NOT_FOUND como isError. Requiere agent_tasks:read.

Parámetros: taskId
complete_agent_task

Completa una tarea arrendada con una decisión, aplicando su efecto a través de escrituras idempotentes existentes. fraud_household_referral: bloquear (recuperar ambos lados) / permitir (descartar la bandera) / escalar (dejar para un humano). ALREADY_COMPLETED / NOT_LEASE_OWNER / LEASE_EXPIRED devuelto como isError. Requiere agent_tasks:claim.

Parámetros: taskId, decision, reason?
list_objects

Enumere los objetos de negocio sobre los que este equipo puede razonar: los objetos de la plataforma principal (miembro, pedido, tienda, cupón, campaña, producto, segmento, etiqueta) más los de este equipo. MCP-objetos personalizados visibles: clave, etiqueta y significado autorizado de una sola línea. Llame primero para descubrir la validez object llaves. Requiere introspection:read.

Parámetros: (none)
describe_object

Describe un negocio object del registro gobernado: significado autorizado más propiedades particionadas en hechos (respaldados por columnas), derivados (referencias de métricas/etiquetas/resumen con actualización; nunca se vuelve a derivar un calibre) y personalizados (campos personalizados de este equipo). Las propiedades PII devuelven solo metadatos, nunca valores. campos=resumen (predeterminado) o completo. Requiere introspection:read.

Parámetros: object, fields?
list_actions

Enumera las acciones del agente controlado (lo que un agente puede HACER): objetivo object, efecto secundario, engranaje (automático/revisión/prohibido), claves de precondiciones del servidor, límite de valor y reversibilidad: autocomprobación antes de proponer una escritura. Opcionalmente, filtrar por object. Requiere introspection:read.

Parámetros: object?
list_stamp_programs

Enumerar la tarjeta de sellos del equipo (eStamp) programas: id, nombre, sellos necesarios para completar, tipo de recompensa (cupón/puntos/manual), reinicio automático y estado. Llame primero para obtener un program_id. Requiere stamp:read.

Parámetros: (none)
get_member_stamp_cards

Obtenga las tarjetas de sellos activas de un miembro: nombre del programa, sellos actuales, sellos necesarios, logros alcanzados y recompensa. Requiere el permiso stamp:read.

Parámetros: member_id
grant_stamps

Otorga sellos a un miembro por un programa de sellos (por ejemplo, una visita a una tienda). Idempotente con idempotency_key; al completar la tarjeta, la recompensa (cupón/puntos) se emite automáticamente. Cantidad limitada por llamada. Requiere stamp:write.

Parámetros: program_id, member_id, amount?, reason?, idempotency_key?
get_member_points

Puntos de un miembro: saldo disponible, puntos acumulados, canjes, nivel actual, lote con vencimiento próximo. Clave vinculada al miembro → puntos propios (omitir member_id); clave del equipo → pasar member_id. Requiere loyalty:self:read.

Parámetros: member_id?
get_member_points_history

Transacciones recientes de puntos de un miembro (ganados/canjeados/ajustados), de la más reciente a la más antigua. Clave vinculada al miembro → historial propio; clave del equipo → pasar member_id. Requiere loyalty:self:read.

Parámetros: member_id?
get_member_rewards

Recompensas que un miembro puede canjear por puntos: catálogo con el costo en puntos, clasificado según su asequibilidad en relación con el saldo del miembro. Clave vinculada al miembro → propia; clave del equipo → pasar member_id. Requiere loyalty:self:read.

Parámetros: member_id?
get_loyalty_program_rules

Cómo funciona el programa de fidelización: tasa de acumulación, bono de bienvenida, valor de los puntos, cómo unirse, además de preguntas frecuentes aprobadas por la marca. Información pública. La clave vinculada al miembro no requiere argumentos. Requiere loyalty:self:read.

Parámetros: member_id?
list_synthetic_scenarios

Enumere los escenarios de simulación de panel sintético con el límite de usabilidad honesto, el techo de confianza y los campos de entrada de cada uno. Llame primero para elegir un tipo. Requiere metrics:read.

Parámetros: (none)
get_synthetic_calibration

La calibración del panel sintético de la marca (tasa de aciertos de las predicciones sintéticas pasadas frente a la realidad; null hasta que existan pruebas retrospectivas). Requiere metrics:read.

Parámetros: (none)
get_synthetic_report

Lea el informe honesto congelado para una ejecución de panel sintético (lectura direccional, límite de confianza, indicadores de supresión, temas) o un blockReason si no está listo. Requiere metrics:read.

Parámetros: run_id
run_synthetic_panel

Ejecuta un panel sintético: gemelos digitales anonimizados de un segmento reaccionan a un estímulo, generando un informe direccional honesto (nunca cifras absolutas reales). Devuelve un run_id para sondear. Limitado por un límite diario de ejecuciones + ≤50 gemelos. Requiere synthetic:write.

Parámetros: segment_id, kind, fields

Seguridad y privacidad

La interfaz MCP es la capa de conveniencia de la IA, no una herramienta de administración masiva. Algunos puntos a tener en cuenta:

  • El servidor es el límite, no el chat. Las operaciones de escritura (otorgar/canjear puntos, emitir cupones, emitir códigos de Embajador) requieren el alcance de escritura coincidente y están limitadas por una protección del lado del servidor: un límite de valor por llamada más un límite de velocidad de escritura por clave, ambos aplicados a prueba de fallos. Cualquier confirmación en el chat que solicite su cliente de IA es cortesía: el servidor es lo que realmente evita que una clave filtrada o un modelo inyectado rápidamente se agote.
  • Algunas herramientas de lectura devuelven información personal identificable (PII) de los miembros. Herramientas como get_member y list_members pueden devolver nombres y correos electrónicos descifrados a su cliente de IA. Trate esos datos como corresponde y priorice las claves de mínimo privilegio.
  • Nunca confirmes una clave en texto plano. Siempre haz referencia a ${FLASH_API_KEY} en una .mcp.json registrada, en lugar de la clave literal.
  • Utilice claves de solo lectura con privilegios mínimos. Cree una clave con alcance limitado a las herramientas que necesite. Si una clave no tiene alcance para una herramienta, esta simplemente se oculta y nunca aparece en la lista.

Las cifras provienen de la capa semántica gobernada

Cada métrica que reporta la IA (volumen bruto de mercancías, miembros activos, tasa de canje, etc.) pasa por la capa de métricas controladas de SocialHub, que contiene una definición (y certificación) única y autorizada para cada métrica. Las herramientas list_metrics, describe_metric, query_metric, breakdown_metric y ask_metrics seleccionan las claves y dimensiones de las métricas bajo esa gobernanza; la IA nunca escribe SQL. Por lo tanto, las cifras que recibe coinciden con sus paneles de control en lugar de ser agregados ad hoc propensos a desviaciones.

Ejemplo de conversación

Tú: "Listar todas las tiendas activas"
Claude: Llama a list_stores con estado "activo"
Claude: "Tienes 3 tiendas activas: Downtown Flagship, Mall Kiosk y Airport Pop-up".