Docs

MCP

Servidor MCP

Conecta agentes de IA con Exac mediante el servidor Model Context Protocol de producción, con permisos y los mismos contratos de dominio que la API REST.

Servidor MCP

MCP está disponible únicamente en producción. OAuth muestra las herramientas permitidas por el rol del usuario. Una API key de organización de producción muestra todas las herramientas disponibles para esa organización.

¿Qué es Exac MCP?

Exac MCP es un servidor remoto Streamable HTTP, disponible únicamente en producción, para la organización activa. OAuth respeta el rol del usuario; una API key de organización de producción concede acceso completo a la API.

https://adventurous-moose-616.convex.site
  • Buscar documentos y registros fiscales de la organización
  • Crear y administrar recursos mediante contratos de dominio compartidos
  • Consultar reportes y datos del SAT previamente sincronizados por Exac

Conectar un cliente

Usa el origen de producción del sitio Convex de Exac como endpoint Streamable HTTP. OAuth es la opción recomendada para agentes interactivos; las API keys de organización de producción funcionan mejor para integraciones fijas. MCP no acepta claves de prueba.

Configuración OAuth (recomendada)

{  "mcpServers": {    "exac": {      "url": "https://adventurous-moose-616.convex.site"    }  }}

Configuración con API key de organización

{  "mcpServers": {    "exac": {      "url": "https://adventurous-moose-616.convex.site",      "headers": {        "Authorization": "Bearer <EXAC_API_KEY>"      }    }  }}

Ejemplo CFDI en tres pasos

Crea un borrador, revisa su documentRef público y timbra solo después de revisarlo. El flujo completo de REST y MCP está en Inicio rápido.

{  "steps": [    {      "tool": "create_invoice_draft",      "arguments": {        "idempotencyKey": "workflow-create-cfdi",        "input": {          "customerId": "customer-example",          "items": [            {              "kind": "custom",              "description": "Consultoría administrativa · julio 2026",              "quantity": 1,              "unitPrice": 10000,              "satProductCode": "84111506",              "satUnitCode": "E48",              "taxRate": 0.16,              "taxability": "standard"            }          ],          "kind": "income",          "cfdiUse": "G03",          "payment": {            "timing": "deferred_or_installments",            "formCode": "99",            "conditions": "Crédito a 30 días"          }        }      },      "environments": [        "production"      ]    },    {      "tool": "get_document",      "arguments": {        "documentRef": "invoice:invoice-example"      },      "environments": [        "production"      ]    },    {      "tool": "stamp_invoice",      "arguments": {        "documentRef": "invoice:invoice-example",        "idempotencyKey": "workflow-stamp-cfdi"      },      "environments": [        "production"      ]    }  ]}

Semántica de resultados y errores MCP

Toda herramienta JSON ordinaria devuelve un sobre data. Los fallos esperados devuelven un sobre error con un código estable; los archivos binarios permanecen como recursos MCP.

Sobre de éxito

JSON Schema
{  "data": {}}

Sobre de error

JSON Schema
{  "error": {    "code": "validation_error",    "message": "La validación de la solicitud falló",    "details": {}  }}

Recuperación por código

validation_error
Corrige la solicitud usando error.message y, cuando existan, los paths y códigos de details.issues.
unauthenticated
Proporciona una API key o un token de acceso OAuth válido.
forbidden
Usa una credencial con el permiso requerido.
payment_required
Si details.reason = api_wallet_insufficient, agrega saldo prepagado de API/MCP mediante details.topUpUrl; balanceMinor indica el saldo en centavos. En otros casos revisa el requisito de facturación. Reintenta solo después de resolverlo.
not_found
Verifica el identificador del recurso dentro de la organización.
method_not_allowed
Usa el método HTTP documentado.
conflict
Actualiza el recurso y resuelve su estado actual.
idempotency_conflict
Usa otra clave de idempotencia para una solicitud modificada.
operation_in_progress
Espera el tiempo de Retry-After y repite la misma solicitud.
recovery_required
No reintentes automáticamente ni cambies la clave de idempotencia. Consulta details.document.documentRef cuando exista, verifica el resultado y contacta a soporte con Request-Id si continúa incierto.
migration_required
Contacta a soporte para completar la migración histórica; no vuelvas a emitir el documento.
rate_limited
Espera el tiempo de Retry-After antes de reintentar.
provider_unavailable
Reintenta solo cuando la respuesta marque la falla como reintentable.
internal
Una respuesta fallida no demuestra que una escritura no tuvo efectos. Reintenta una lectura después de una espera; una escritura solo con su clave de idempotencia original y la solicitud sin cambios. Contacta a soporte con Request-Id si persiste.

Herramientas disponibles

El servidor publica únicamente las herramientas permitidas para la credencial activa. Cada cliente MCP recibe el esquema de entrada autoritativo mediante tools/list.

Organización y acceso

Herramienta MCPPropósitoSeguridad
get_organizationLee el perfil, la configuración fiscal y la disponibilidad de la organización activa.Solo lectura
update_organizationActualiza una sección coherente de la configuración de la organización.Efecto externo
get_employeesBusca empleados y consulta un empleado específico de la organización.Solo lectura
save_employeeCrea o actualiza un empleado de la organización.Modifica datos

Configuración inicial

Herramienta MCPPropósitoSeguridad
get_configurationBusca o recupera sucursales y campos de recibos de la organización. Si un campo indica valuesComplete: false, usa operation: values con kind: sales_receipt_field y entryId, desde la primera página, para recuperar todas sus opciones mediante cursor.Solo lectura
search_sat_product_catalogBusca claves oficiales de productos y servicios del catálogo del SAT.Solo lectura
save_configurationCrea o actualiza una sucursal o campo de recibo de la organización. Crear un campo con un nombre normalizado existente devuelve conflict; consúltalo con get_configuration y usa operation: update con su entryId. Al actualizar un campo, omite values para conservar sus opciones; un arreglo enviado las reemplaza todas y un arreglo vacío las borra. Nunca uses una vista previa incompleta como reemplazo.Modifica datos
get_fiscal_seriesConsulta las series fiscales configuradas para la organización.Solo lectura
update_fiscal_seriesActualiza una serie fiscal existente de la organización.Destructivo y externo

Descubrimiento y entrega de documentos

Herramienta MCPPropósitoSeguridad
search_documentsBusca una familia de documentos usando referencias públicas estables. Una página puede venir vacía mientras hasMore sea true; sigue nextCursor.Solo lectura
get_documentRecupera un documento mediante su documentRef público.Solo lectura
send_documentEntrega un CFDI, retención o recibo de venta a un destinatario.Efecto externo
get_document_fileDescarga un archivo como recurso binario. Usa preview_pdf para renderizar un borrador CFDI sin timbrar; la vista previa no tiene validez fiscal.Solo lectura

Facturas y retenciones

Herramienta MCPPropósitoSeguridad
create_withholdingCrea y timbra inmediatamente un documento de retención del SAT.Destructivo y externo
create_invoice_draft_from_sales_receiptsCrea un borrador CFDI a partir de recibos de venta compatibles.Efecto externo
create_invoice_draftCrea un borrador CFDI con impuestos canónicos. En complementos, Exac puede calcularlos o aceptar el taxObject y las filas del pago.Efecto externo
create_payroll_invoice_draftCrea un borrador CFDI de nómina y valida empleado, percepciones, deducciones, otros pagos e incapacidades.Efecto externo
update_invoice_draftReemplaza un borrador CFDI y vuelve a validar su contrato fiscal.Efecto externo
update_payroll_invoice_draftReemplaza un borrador CFDI de nómina y vuelve a validar su contrato fiscal y laboral.Efecto externo
stamp_invoiceTimbra un borrador revisado solo si conserva su contrato fiscal canónico.Destructivo y externo
refresh_invoice_statusConsulta al SAT el estado actual de un CFDI timbrado en producción y concilia el estado local. Los documentos del sandbox de Exac son simulados y no se pueden verificar ante el SAT; usa get_document para leer su estado almacenado.Efecto externo
cancel_fiscal_documentSolicita la cancelación de un CFDI o retención timbrados. pending: true indica que se recibió la solicitud, sin confirmar la cancelación. Para retenciones, get_document lee el estado almacenado; no hay actualización automática ante el SAT. Verifica de forma independiente en el [portal de verificación de retenciones del SAT](https://prodretencionverificacion.clouda.sat.gob.mx/). Un acuse disponible no confirma por sí solo que la cancelación haya concluido. Ante recovery_required o un resultado incierto, no reenvíes automáticamente ni cambies la clave de idempotencia.Destructivo y externo
archive_fiscal_documentArchiva o restaura un CFDI o documento de retención sin eliminar su historial.Modifica datos
get_payrollConsulta los ajustes de nómina, las nóminas de una periodicidad, una nómina con el número y el neto de sus recibos por estado, sus recibos (opcionalmente de un estado) o un recibo con sus conceptos y su cálculo.Solo lectura
save_payrollPrepara o ajusta la nómina antes de timbrar: reemplaza los ajustes, prepara la nómina de un periodo (una por periodo; los recibos se calculan en segundo plano), cambia su fecha de pago, la recalcula, actualiza un recibo (omitirlo o incluirlo, confirmar que su empleado sigue trabajando, capturar sus importes o volver al cálculo) o prepara de nuevo un recibo cancelado.Modifica datos
stamp_payrollTimbra recibos de nómina de forma irreversible: todos los listos de una nómina, con el número y el neto que verificaste, o un recibo rechazado ya corregido. Cada recibo se timbra en segundo plano por separado.Destructivo y externo

Ventas

Herramienta MCPPropósitoSeguridad
create_sales_receiptCrea un recibo de venta de caja sin timbrar un CFDI. Las partidas de ventas pagadas o a crédito sin productId requieren satProductCode y satUnitCode al crearlas; los productos de catálogo aportan su identidad fiscal.Modifica datos
cancel_sales_receiptCancela un recibo abierto y conserva su historial de venta.Destructivo
refund_sales_receiptRegistra un reembolso de recibo y, cuando corresponda, crea una nota de crédito CFDI.Destructivo y externo

Catálogo comercial e inventario

Herramienta MCPPropósitoSeguridad
get_productsBusca productos, consulta un producto o sus proveedores vinculados.Solo lectura
get_contactsBusca contactos y consulta un contacto específico de la organización.Solo lectura
get_inventoryConsulta existencias, movimientos u operaciones agrupadas de inventario.Solo lectura
save_contactCrea o actualiza un cliente o proveedor de la organización.Modifica datos
save_productCrea o actualiza un producto del catálogo de la organización.Modifica datos
update_inventoryEstablece o repone la existencia de un producto.Destructivo
receive_inventoryRegistra una entrega de inventario de proveedor con varios productos.Destructivo
get_price_overridesConsulta precios configurados por cliente o sucursal.Solo lectura
set_price_overrideCrea o actualiza una regla de precio para cliente o sucursal.Modifica datos

Cuentas y análisis fiscales

Herramienta MCPPropósitoSeguridad
get_accountsBusca cuentas por cobrar o por pagar y consulta sus movimientos.Solo lectura
archive_account_documentArchiva o restaura una factura PPD en cuentas por cobrar o por pagar sin modificar su saldo fiscal ni ocultarla en otras secciones.Destructivo
set_payment_planCrea, reemplaza o elimina los términos de pago de una factura PPD pendiente, por cobrar o por pagar. Las parcialidades se derivan de los términos y del saldo fiscal.Destructivo

Reportes y datos fiscales

Herramienta MCPPropósitoSeguridad
get_income_expenses_summaryConsulta agregados financieros de documentos CFDI por periodo.Solo lectura
get_sales_receipt_summaryConsulta las ventas de recibos de caja de hoy, la semana (desde el lunes) o el mes, por forma de pago, con los principales clientes, productos y ubicaciones del mes.Solo lectura
get_invoicing_summaryConsulta lo facturado y liquidado sin IVA hoy, en la semana o en el mes, con formas de pago y principales contrapartes.Solo lectura
get_payroll_summaryConsulta la nómina emitida antes de deducciones hoy, en la semana o en el mes, con el número de recibos, el neto pagado, el ISR retenido, el ISR de nómina del siguiente pago mensual y los principales empleados.Solo lectura
get_tax_summaryConsulta totales fiscales provenientes de declaraciones analizadas.Solo lectura

Ley fiscal oficial y parámetros

Herramienta MCPPropósitoSeguridad
search_tax_lawBusca en el texto oficial de la ley fiscal y laboral mexicana (LISR, LIVA, CFF, LIEPS, LSS, LFT y sus reglamentos, consolidados por la Cámara de Diputados, y la RMF del SAT) y devuelve los pasajes que coinciden, con su cita. Devuelve fuentes, no respuestas: lee el artículo de un pasaje con get_tax_law.Solo lectura
get_tax_lawLee un artículo de una ley fiscal mexicana oficial (o una regla de la RMF) como estaba en una fecha, lista las leyes disponibles o lista lo que cambió en ellas desde una fecha.Solo lectura
get_tax_rulesLee los parámetros fiscales con que calcula Exac (tasas de IVA, tarifas de ISR, UMA, salarios mínimos, cuotas del IMSS, reglas de retención) y sus valores en una fecha, con la publicación que establece cada uno.Solo lectura

Recomendaciones de seguridad

Revisa las llamadas antes de ejecutarlas y nunca pegues credenciales en prompts. Las API keys de organización de producción conceden acceso completo a la API; usa OAuth cuando el acceso deba respetar el rol de un usuario. Las herramientas destructivas permanecen marcadas para que el cliente solicite confirmación.