@timbrix/mcp — que le da a
cualquier agente de IA compatible con MCP (Claude Desktop, Cursor, agentes
construidos con LangChain, etc.) acceso directo a la misma API REST que usa
@timbrix/sdk, sin que el agente tenga que conocer los detalles del
protocolo HTTP de Timbrix.
Inicio rápido
1. Obtén tu API key de sandbox
Sigue los pasos 1 y 2 de Quickstart: crea tu cuenta en app.timbrix.mx/register y copia la API key “Sandbox — auto generada” desde Configuración → API Keys. Los CFDI que timbres con esta key no tienen validez fiscal real — es el ambiente correcto para que un agente experimente sin riesgo.2. Instala el MCP server
No necesitas instalar nada de forma permanente. Agrega esto a la configuración MCP de tu cliente (Claude Desktop, Cursor, etc.):3. Timbra tu primer CFDI desde el agente
Con el MCP server conectado, pídele a tu agente algo como:
“Usa timbrix_crear_cfdi_ingreso para timbrar una factura a Público en
General por $100 MXN, forma de pago efectivo (01), uso G03.”
El agente resuelve la herramienta timbrix_crear_cfdi_ingreso y te regresa
el UUID fiscal, el estatus y el XML timbrado. Si el resultado trae
isError: true, revisa la sección Manejo de errores
antes de reintentar — los errores más comunes en sandbox (fecha en UTC, RFC
no inscrito) están documentados ahí con su solución exacta.
Instalación del MCP server
@timbrix/mcp es un paquete npm público que implementa el protocolo MCP
sobre stdio (por defecto) o HTTP (para despliegues hospedados).
Sin instalación (npx)
Configuración en Claude Desktop
Agrega esto a tuclaude_desktop_config.json:
Configuración en Cursor
Cursor usa el mismo formatomcpServers que Claude Desktop. El bloque JSON
de arriba funciona sin cambios; solo cámbialo al archivo de configuración
MCP que use tu versión de Cursor (Cursor expone esta configuración desde
Settings → MCP, o un archivo de configuración de proyecto/usuario según
la versión — consulta la documentación oficial de Cursor para el path
exacto, ya que puede variar entre versiones).
Variables de entorno
Operaciones disponibles
El MCP v1 de Timbrix expone 4 herramientas. No existe una quinta herramienta para crear organizaciones/emisores (timbrix_crear_emisor) —
registrar un nuevo RFC emisor y subir su CSD requiere hoy una sesión
autenticada de owner, no una API key, así que se hace desde el dashboard o
@timbrix/cli.
timbrix_crear_cfdi_ingreso
Timbra (sella ante el SAT vía PAC) un CFDI 4.0 de tipo Ingreso para la
organización a la que pertenece tu API key. Devuelve el UUID fiscal, el XML
timbrado y el estatus.
* Debes enviar exactamente uno de
customer o customerId.
** Obligatorio solo cuando requiere_confirmacion es true.
timbrix_cancelar_cfdi
Solicita la cancelación de un CFDI ya timbrado ante el SAT. Si el receptor
debe aprobar la cancelación, el resultado queda en estatus pendiente.
Valores de
motivo:
timbrix_listar_cfdi
Lista los CFDI timbrados de la organización, más recientes primero.
timbrix_consultar_saldo
Sin parámetros. Devuelve cuántos CFDI ha timbrado la organización en el mes
calendario actual (hora Ciudad de México) contra el límite de su plan, y
cuándo se reinicia el periodo.
Ejemplos de flujos
Caso real: timbrar automáticamente al confirmarse un pago
Un patrón común es que un agente escuche un webhook de un proveedor de pagos (ej. Stripepayment_intent.succeeded) y, al confirmarse el cobro,
arme el cliente, el producto y el CFDI usando las herramientas MCP —sin
intervención humana.
TypeScript/Node con LangChain
Python con LangChain
Autenticación
TIMBRIX_API_KEY resuelve automáticamente la organización — no necesitas
pasar organizationId en ninguna herramienta MCP.
Reglas de seguridad para agentes:
- Nunca pongas la API key en el prompt o system message del agente. Un LLM puede repetir cualquier texto de su contexto en su output (por un error de razonamiento, un prompt injection, o simplemente al depurar en voz alta), y eso filtraría la key.
- Pasa siempre la key como variable de entorno del proceso que hospeda
el MCP server (
TIMBRIX_API_KEY=sk_... npx @timbrix/mcp), nunca como un valor que el modelo pueda leer o citar. - Si tu agente corre en un entorno multi-tenant (por ejemplo, un SaaS que orquesta agentes para varios clientes de Timbrix), cada tenant necesita su propia API key con su propio scope de organización — no reutilices una sola key para varios tenants. Como la key ya resuelve la organización por sí sola, aislar tenants es tan simple como levantar una instancia del MCP server (o una sesión, en el transporte HTTP) por key.
Manejo de errores
@timbrix/mcp nunca lanza una excepción que tumbe el proceso cuando la
API de Timbrix responde con un error. En su lugar, cualquier error se
devuelve como un resultado MCP normal con isError: true y
content[0].text conteniendo un mensaje de texto libre. Un agente debe
revisar result.isError explícitamente — no puede confiar en un bloque
try/catch alrededor de la llamada a la herramienta para detectar fallos.
CFDI#####) vienen embebidos
dentro de ese texto libre, no como un campo estructurado aparte. Los más
comunes que verás en sandbox:
Responsabilidad legal
El SAT no tiene una regulación específica para el timbrado ejecutado por agentes de IA: la responsabilidad del CFDI emitido sigue siendo, íntegramente, del RFC emisor — el cliente de Timbrix — sin importar si el comprobante lo generó un humano desde el dashboard o un agente autónomo vía MCP. Timbrix no valida ni certifica el juicio del agente antes de aceptar la petición de timbrado. Si despliegas un agente autónomo capaz de timbrar o cancelar CFDI sin intervención humana en cada paso, eres responsable de supervisarlo: revisar sus timbrados, tener alertas sobre montos o volúmenes inusuales, y poder detenerlo si empieza a operar incorrectamente.timbrix_crear_cfdi_ingreso
incluye un hook de confirmación para esto (ver abajo), pero sigue siendo tu
responsabilidad configurarlo y actuar sobre sus mensajes de confirmación
pendiente — Timbrix no supervisa el juicio del agente por ti.
Confirmación explícita para timbrados de alto valor
Un agente mal configurado que timbra automáticamente un CFDI de $500,000 MXN sin revisión humana es un riesgo operativo real, aunque el SAT no lo regule de forma distinta a cualquier otro CFDI.timbrix_crear_cfdi_ingreso
acepta tres parámetros opcionales para mitigar esto:
Cuando
requiere_confirmacion: true y la suma de items[].amount (el
subtotal estimado del CFDI) supera umbral_confirmacion_mxn, el tool no
timbra: responde con un mensaje estructurado (requiereConfirmacion: true,
el subtotal estimado, el umbral configurado y las instrucciones para
proceder) en vez de llamar a la API. El agente debe mostrarle ese mensaje a
un humano y, solo tras obtener su confirmación explícita, volver a invocar
la herramienta con el mismo payload agregando "confirmado": true.
Siguiente paso
Quickstart de la API REST
El mismo flujo cliente → producto → CFDI, sin MCP de por medio.
API Reference
Endpoints, autenticación, límites de tasa y códigos de error.