← Factumático MCP

Documentación

Conecta tu agente de IA y timbra CFDI 4.0 ante el SAT.

Primera prueba, sin tarjeta

La llave de prueba es gratuita y sale por correo. Timbra 2 CFDI de prueba en el sandbox del SAT y caduca a los 7 días. No tiene validez fiscal: sirve para ver el circuito completo antes de pagar nada.

curl -X POST https://mcp.factumatico.com/api/mcp/trial/issue \
  -H 'Content-Type: application/json' \
  -d '{"email":"tu@correo.com"}'

Respuesta: un JSON con api_key que empieza por sk_test_. Se muestra una sola vez y también llega al correo.

Conectar tu agente

Endpoint: https://mcp.factumatico.com/mcp · JSON-RPC 2.0 sobre HTTP · protocolo MCP 2025-06-18 · autenticación Authorization: Bearer <TU_LLAVE>.

Elige tu cliente y salta a su apartado. La columna «cómo» dice de qué va cada uno:

Tu clienteCómo se conectaCuánto cuesta
Claude CodeUn comando en la terminal1 minuto
Claude DesktopEditar un archivo de configuración5 minutos
ChatGPT (escritorio)Rellenar su formulario de MCP5 minutos
ChatGPT (navegador)Todavía no se puede—
Cursor, n8n, otrosURL + cabecera, o el mismo puente5 minutos

Claude Code — un comando

claude mcp add --transport http factumatico https://mcp.factumatico.com/mcp \
  --header "Authorization: Bearer TU_LLAVE"

Comprueba con /mcp dentro de Claude Code, o claude mcp get factumatico. Debe decir connected; si dice failed, el detalle trae el código HTTP —un 401 es llave inválida o caducada—. Añade --scope user si lo quieres en todos tus proyectos.

Claude Desktop — paso a paso

1. Abre el archivo de configuración. En Claude Desktop: menú Ajustes → Desarrollador → botón Editar configuración. Eso abre la carpeta con el archivo:

SistemaRuta
Windows%APPDATA%\Claude\claude_desktop_config.json
macOS~/Library/Application Support/Claude/claude_desktop_config.json

Ábrelo con el Bloc de notas o cualquier editor de texto.

Si el archivo ya tiene contenido, NO pegues el bloque entero encima. El error más común es acabar con dos "mcpServers" y un { de más, y entonces Claude Desktop no arranca ningún servidor. Va una sola lista "mcpServers", con tus servidores separados por coma dentro. El apartado de abajo tiene el ejemplo.

2. Pega esto y cambia TU_LLAVE por la que te llegó por correo (empieza por sk_test_):

{
  "mcpServers": {
    "factumatico": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.factumatico.com/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": { "AUTH_HEADER": "Bearer TU_LLAVE" }
    }
  }
}

Qué es cada cosa, por si tienes que adaptarlo:

CampoQué es
"factumatico"El nombre con el que lo verás en Claude. Puedes cambiarlo
command y argsnpx arranca mcp-remote, un puente que habla con nuestro servidor por HTTP y le añade tu cabecera. Requiere Node.js instalado
-yInstala el puente sin preguntar. Sin él, la primera vez npx se queda esperando una confirmación que nadie puede darle y el servidor no arranca
--headerLa cabecera de autenticación. Sin espacio después de los dos puntos: ver el aviso de abajo
envDonde vive tu llave. Aquí sí puede llevar espacio, por eso el token va aquí y no en args
Windows: el espacio rompe la conexión. Escribir el argumento como "Authorization: Bearer sk_test_..." —con espacios— hace que Claude Desktop lo parta al invocar npx y el servidor nunca recibe la cabecera. Por eso el argumento va sin espacio (Authorization:${AUTH_HEADER}) y la llave viaja en env. Si copias el bloque tal cual, ya está bien.

2b. Si ya tenías otros servidores, añade factumatico como una entrada más dentro de la lista que ya existe — fíjate en la coma después de la llave de cierre del servidor anterior, y en que el archivo conserva lo demás (coworkUserFilesPath, preferences…) tal cual estaba:

{
  "mcpServers": {
    "otro-servidor": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://ejemplo.com/mcp"]
    },                                      <-- coma entre servidores
    "factumatico": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.factumatico.com/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": { "AUTH_HEADER": "Bearer TU_LLAVE" }
    }
  },
  "coworkUserFilesPath": "C:\Users\TuUsuario\Claude",
  "preferences": { }
}

Fíjate en que "mcpServers" aparece una sola vez y en que todo el archivo empieza con un { y termina con un }. Si el editor te marca error, pega el contenido en un validador de JSON: te dirá la línea exacta.

3. Cierra Claude Desktop del todo y vuelve a abrirlo. No basta con cerrar la ventana: en Windows, click derecho en el icono de la bandeja → Salir; en macOS, Cmd+Q. La configuración solo se lee al arrancar.

4. Comprueba que quedó. En una conversación, pulsa el icono de «Añadir archivos, conectores y más» (abajo a la izquierda del cuadro de texto) → Conectores. Debe aparecer factumatico con sus herramientas. Pídele entonces: «lista las herramientas de factumatico».

Si no aparece: el registro dice por qué. En Windows, %APPDATA%\Claude\logs\mcp-server-factumatico.log; en macOS, ~/Library/Logs/Claude/mcp-server-factumatico.log. Lo más común, por orden: el JSON quedó con dos "mcpServers" o una coma de más, falta Node.js, o la llave está mal copiada.

¿Y la pantalla «Agregar conector personalizado»? Es la de Ajustes → Conectores → Agregar, que pide Nombre y URL del servidor MCP. Con Factumático todavía no funciona: esa pantalla espera que el servidor ofrezca inicio de sesión OAuth, y el nuestro se autentica con una llave (Authorization: Bearer), que ahí no se puede escribir. Si lo intentas, verás un error de conexión o una pantalla de inicio de sesión que no lleva a ninguna parte; bórralo de la lista y usa el archivo de configuración de arriba. Cuando publiquemos OAuth, esa pantalla será el camino corto y lo diremos aquí.

ChatGPT (aplicación de escritorio)

En Ajustes → Conexiones/Complementos → MCP → Conectar a un MCP personalizado, con Tipo: STDIO:

CampoQué poner
Nombrefactumatico
TipoSTDIO
Comando para iniciarnpx
Argumentosuno por línea, en este orden: -y · mcp-remote · https://mcp.factumatico.com/mcp · --header · Authorization:${AUTH_HEADER}
Variables del entornoAUTH_HEADER = Bearer TU_LLAVE

Si eliges HTTP con transmisión en tiempo real, la URL es la misma (https://mcp.factumatico.com/mcp), pero solo servirá si esa pantalla te deja añadir la cabecera Authorization. Si no, quédate con STDIO: el resultado es el mismo.

Qué está probado y qué no. El puente mcp-remote con esta cabecera está comprobado contra nuestro servidor —conecta y establece el proxy— y es el mismo que funciona en Claude Desktop. Lo que no hemos podido probar es la pantalla de ChatGPT pasando esos argumentos y esa variable de entorno. Si algo falla ahí, será en cómo ese formulario los entrega, no en el servidor: escríbenos y lo miramos contigo.

ChatGPT en el navegador

Los conectores del ChatGPT web (Modo desarrollador) piden URL y un método de autenticación entre OAuth, sin autenticación o mixta: no hay hueco para una cabecera Bearer. Todavía no lo soportamos por esa vía y no lo hemos probado; usa la aplicación de escritorio o Claude Code. Cuando publiquemos OAuth lo diremos aquí.

Cursor, n8n y otros

Si el cliente acepta servidores HTTP con cabeceras, apúntalo a https://mcp.factumatico.com/mcp con Authorization: Bearer TU_LLAVE. Si solo acepta comandos locales, usa el mismo bloque de mcp-remote de arriba.

No pegues tu llave en un chat. Va en el archivo de configuración de tu cliente o en una variable de entorno. Y el CSD (.cer, .key y contraseña) se carga solo en la página de activación, nunca en una conversación.

El recorrido, paso a paso

# 1. initialize
curl -X POST https://mcp.factumatico.com/mcp -H 'Authorization: Bearer TU_LLAVE' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"mi-agente","version":"1.0"}}}'

# 2. tools/list — devuelve exactamente las herramientas de las tablas de abajo
curl -X POST https://mcp.factumatico.com/mcp -H 'Authorization: Bearer TU_LLAVE' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

# 3. tools/call — un CFDI de prueba
curl -X POST https://mcp.factumatico.com/mcp -H 'Authorization: Bearer TU_LLAVE' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"factumatico_stamp_test_invoice","arguments":{"total":116.00,"concepto":"Prueba de integracion"}}}'

La respuesta del paso 3 trae el folio fiscal (UUID) del CFDI de prueba y descuenta uno de tus timbrados. Si algo falla, el mensaje dice qué falta.

Herramientas disponibles

Esto es todo lo que el servidor MCP expone hoy. Factumático tiene por dentro cientos de herramientas; ninguna otra está disponible por esta vía.

Con llave de prueba

HerramientaQué haceParámetrosAmbiente
factumatico_stamp_test_invoiceTimbra un CFDI de PRUEBA (sandbox SAT, sin validez fiscal). Consume 1 timbrado de tu trial. Ambiente sandbox forzado.total, concepto, receptor_rfcPrueba
factumatico_trial_statusMuestra el estado de tu trial: timbrados usados, limite y restantes, y fecha de expiracion de tu key.sin parámetrosPrueba
factumatico_helpExplica que puedes hacer con tu llave de Factumatico y cuales son tus limites.sin parámetrosPrueba

Con la llave de producción se añaden

HerramientaQué haceParámetrosAmbiente
factumatico_stamp_invoiceTimbra un CFDI 4.0 REAL con validez fiscal usando tu propio CSD. Consume un timbre de tu plan. Tipo ingreso, IVA 16% trasladado.receptor, conceptos, forma_pago, serieProducción
factumatico_cancel_invoiceCancela ante el SAT un CFDI REAL emitido por ti. Solo puedes cancelar facturas de tu propia cuenta.uuid, motivo, uuid_sustitutoProducción

Tu negocio, no solo tus facturas (25)

Estas herramientas operan sobre los datos de tu propia empresa y están disponibles con la llave de producción, en cuanto tu CSD queda validado. No gastan timbrados: dar de alta un cliente no es timbrar.

Clientes (8)

Dar de alta, actualizar, buscar y consultar el saldo y el historial de tus clientes.

HerramientaQué haceParámetrosAmbiente
factumatico_crm_client_createCrea un nuevo cliente/contacto en el CRM. Requiere al menos el nombre. Soporta datos fiscales (RFC, regimen fiscal), contacto (email, telefono), direccion y configuracion CFDI.name, type, rfc, tax_regime, email, phone, address, cfdi_use, payment_method, trade_name, tags, notesProducción
factumatico_crm_client_updateActualiza los datos de un cliente existente. Se actualizan solo los campos proporcionados; los demas permanecen sin cambio.id, uuid, search_name, name, type, rfc, tax_regime, email, phone, address, cfdi_use, payment_method, trade_name, tags, notesProducción
factumatico_crm_client_getObtiene el detalle completo de un cliente por su UUID, incluyendo conteo de facturas y estadisticas de pagos.uuidProducción
factumatico_crm_client_listLista los clientes del tenant con filtros opcionales por tipo, estado activo y busqueda. Soporta paginacion.type, is_active, search, page, per_page, sortProducción
factumatico_crm_client_searchBusca clientes por nombre, RFC, telefono o email. Retorna hasta el limite especificado de coincidencias.query, limitProducción
factumatico_crm_client_balanceCalcula el resumen financiero de un cliente: total facturado, total pagado, saldo pendiente y numero de facturas.uuidProducción
factumatico_crm_client_historyObtiene el historial de facturas y pagos de un cliente como una linea de tiempo ordenada por fecha.uuid, limitProducción
factumatico_crm_client_tagAgrega o elimina etiquetas de un cliente. Permite gestionar las tags para clasificar y organizar clientes.uuid, add, removeProducción

Productos y servicios (9)

Tu catálogo: altas, precios, imágenes, existencias y estadísticas.

HerramientaQué haceParámetrosAmbiente
factumatico_products_createCrea un producto o servicio en el catalogo. Solo nombre y precio son obligatorios; los datos fiscales (clave SAT) se completan automaticamente.name, description, sat_product_code, sat_unit_code, unit_name, price, currency, tax_rate, tax_included, category, internal_code, barcode, default_discount, image_urlProducción
factumatico_products_updateActualiza los datos de un producto existente: precio, nombre, descripcion, datos SAT.product_id, name, description, sat_product_code, sat_unit_code, unit_name, price, currency, tax_rate, tax_included, category, internal_code, barcode, default_discount, is_active, image_urlProducción
factumatico_products_getMuestra el detalle completo de un producto: datos, precios, datos SAT y estadisticas de venta.product_idProducción
factumatico_products_listLista los productos del catalogo con filtros por categoria, estado y rango de precio.category, is_active, price_min, price_max, sort_by, page, per_pageProducción
factumatico_products_searchBusca productos por nombre, descripcion, codigo interno, codigo de barras o clave SAT.query, limitProducción
factumatico_products_price_updateActualiza el precio de un producto. Opcionalmente puede actualizar multiples productos por porcentaje.product_id, new_price, category, percentageProducción
factumatico_products_set_imageAsigna una imagen a un producto. Sube el archivo (foto del usuario o imagen generada) a Cloudflare R2 y guarda la URL publica en el producto. Antes de usar: confirma con el usuario si quiere usar una foto real o la imagen generada por IA.product_id, source_path, source_typeProducción
factumatico_products_statsEstadisticas de productos: mas vendidos, mayor ingreso, categorias populares y tendencias.period, limitProducción
factumatico_products_inventory_checkConsulta el stock actual de uno o varios productos. Muestra alertas si el stock esta bajo.product_id, category, low_stock_onlyProducción

Marca (5)

El logo que sale en tus facturas: subirlo, mejorarlo o generarlo con IA.

HerramientaQué haceParámetrosAmbiente
factumatico_branding_logo_uploadGuarda el logotipo del negocio a partir de una imagen que el usuario envió al chat (PNG, JPG o WebP). El logo aparecerá en cotizaciones, facturas, recibos y emails. Recibe el file_path local donde está la imagen.file_path, url, remove_backgroundProducción
factumatico_branding_logo_generateGenera un logotipo profesional con IA basado en el nombre del negocio y una descripción visual. Optimizado para cotizaciones, facturas y emails. El logo se aplica automáticamente al tenant. Estilos: minimalist (líneas limpias), classic (formal), modern (vibrante), elegant (alta gama).description, styleProducción
factumatico_branding_logo_improveGenera una variante mejorada del logo actual con IA aplicando ajustes (más limpio, más moderno, otro color, otro estilo). Útil cuando el usuario quiere refinar su logo sin empezar de cero.adjustmentProducción
factumatico_branding_logo_getDevuelve el logotipo actual del negocio (si existe) para previsualizarlo o reenviarlo al usuario.sin parámetrosProducción
factumatico_branding_logo_removeElimina el logotipo personalizado del negocio. Las cotizaciones y facturas volverán a usar solo texto (sin logo).sin parámetrosProducción

Series y folios (3)

Series de facturación, el siguiente folio y los datos por omisión de tus CFDI.

HerramientaQué haceParámetrosAmbiente
factumatico_config_invoice_seriesGestiona las series de facturacion del negocio (FA, NC, PG, COT, REC). Permite listar, crear, activar o desactivar series.action, series, description, typeProducción
factumatico_config_invoice_folioConsulta o configura el ultimo folio de una serie de facturacion. Permite ajustar el folio inicial para nuevas series.series, set_folioProducción
factumatico_config_invoice_defaultsConfigura los valores predeterminados para facturas nuevas: uso CFDI, metodo de pago, forma de pago, moneda, lugar de expedicion.cfdi_use, payment_method, payment_form, currency, expedition_place, conditionsProducción
Lo que todavía NO existe por MCP: consultar tus facturas emitidas, descargar XML/PDF de forma independiente, dar de alta clientes o productos, y la contabilidad. El XML y el PDF llegan en la respuesta de la herramienta que timbra, no por una llamada aparte. Si tu integración los necesita de otra forma, escríbenos antes de comprar.

Tus dos llaves: pruebas y producción

Una cuenta de Factumático tiene dos credenciales distintas, y el modo lo eliges según cuál pongas en tu agente. No hay ningún interruptor escondido: cambiar de pruebas a producción es cambiar esa línea de tu configuración.

Llave de pruebasLlave de producción
Empieza porsk_test_sk_live_
Qué timbraCFDI contra el sandbox del SAT: sin validez fiscalCFDI reales ante el SAT, con tu firma
EmisorEl RFC público de pruebas del SATTu RFC, con tu CSD
Cuándo la tienesDesde que te das de alta, gratisCuando cargas tu CSD y lo validamos
CupoContador aparte: probar no gasta el cupo de tu planEl cupo del plan: hasta 10,000 por periodo

Cómo se obtiene la llave de producción

  1. Contrata el Plan Agente.
  2. Carga tu CSD (.cer, .key y contraseña) en la página de activación. Lo validamos en el momento.
  3. Entra a tu panel y pulsa «Emitir mi llave de producción». Te pedimos confirmación: a partir de ahí tus CFDI tienen validez fiscal.
  4. La llave aparece una sola vez en pantalla y te llega por correo. De ella solo guardamos una huella, así que si se pierde hay que emitir otra.
Tu llave de pruebas sigue viva. Emitir la de producción no la invalida: la conservas para ensayar cuando quieras, sin tocar tu contabilidad ni gastar cupo del plan.

Qué incluye el Plan Agente

ConceptoDetalle
Precio$499 MXN IVA incluido por 30 días
EmisorUn (1) RFC emisor. Es la empresa que factura con su CSD
ReceptoresLos que quieras: el límite es del emisor, no de a quién le facturas
TimbradosHasta 10,000 por periodo
Importe por CFDIMáximo $50,000.00 MXN
RenovaciónManual. Al terminar los 30 días se vuelve a pagar desde la página
Factura de la suscripciónLa emite Grupo Factumático y Soluciones S.A. de C.V.

Errores frecuentes

RespuestaQué pasóQué hacer
authentication_requiredNo mandaste la cabecera AuthorizationAñade Bearer y tu llave
invalid_trial_keyLa llave no existe o fue sustituida por otraRevisa cuál de tus dos llaves estás usando. Si la perdiste, pide otra desde tu panel: te llega un enlace al correo registrado
Timbra en sandbox cuando esperabas realEstás usando tu llave sk_test_Cambia la cabecera Authorization por tu llave sk_live_. Ver tus dos llaves
trial_key_expiredSe acabó la vigenciaContrata o renueva el Plan Agente
trial_limit_reachedAgotaste los timbrados del periodoRenueva. Pagar sigue funcionando aunque el cupo esté agotado
Timbra pero sin validez fiscalTu llave sigue en pruebasSube tu CSD en /activar; hasta entonces el ambiente es sandbox

Para pegarle a tu agente

Si prefieres que lo haga él, este bloque le dice qué hacer sin exponer secretos:

Vas a integrar Factumatico MCP (timbrado de CFDI 4.0 en Mexico).

1. Lee https://mcp.factumatico.com/documentacion
2. Conecta al servidor MCP https://mcp.factumatico.com/mcp con la credencial
   que te dare por un canal seguro. NO la escribas en el chat ni en el codigo.
3. Llama a tools/list y dime exactamente que herramientas te autoriza.
4. Ejecuta UNA prueba en sandbox: factumatico_stamp_test_invoice con
   total 116.00 y concepto "Prueba de integracion". Enseñame el resultado.

Reglas: no emitas ni canceles ningun CFDI real sin que yo lo confirme antes,
y no me pidas el CSD ni su contraseña por chat: eso se carga en la web.

Qué datos pedimos y para qué

Son dos cosas distintas y conviene no mezclarlas:

El CSD se comprueba de verdad: que el certificado y la llave se correspondan, que la contraseña abra la llave y que el RFC del certificado sea el que nos diste. Eso es validar el certificado; no es una consulta al SAT sobre tu situación fiscal.