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
¿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 MCP | Propósito | Seguridad |
|---|---|---|
get_organization | Lee el perfil, la configuración fiscal y la disponibilidad de la organización activa. | Solo lectura |
update_organization | Actualiza una sección coherente de la configuración de la organización. | Efecto externo |
get_employees | Busca empleados y consulta un empleado específico de la organización. | Solo lectura |
save_employee | Crea o actualiza un empleado de la organización. | Modifica datos |
Configuración inicial
| Herramienta MCP | Propósito | Seguridad |
|---|---|---|
get_configuration | Busca 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_catalog | Busca claves oficiales de productos y servicios del catálogo del SAT. | Solo lectura |
save_configuration | Crea 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_series | Consulta las series fiscales configuradas para la organización. | Solo lectura |
update_fiscal_series | Actualiza una serie fiscal existente de la organización. | Destructivo y externo |
Descubrimiento y entrega de documentos
| Herramienta MCP | Propósito | Seguridad |
|---|---|---|
search_documents | Busca 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_document | Recupera un documento mediante su documentRef público. | Solo lectura |
send_document | Entrega un CFDI, retención o recibo de venta a un destinatario. | Efecto externo |
get_document_file | Descarga 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 MCP | Propósito | Seguridad |
|---|---|---|
create_withholding | Crea y timbra inmediatamente un documento de retención del SAT. | Destructivo y externo |
create_invoice_draft_from_sales_receipts | Crea un borrador CFDI a partir de recibos de venta compatibles. | Efecto externo |
create_invoice_draft | Crea 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_draft | Crea un borrador CFDI de nómina y valida empleado, percepciones, deducciones, otros pagos e incapacidades. | Efecto externo |
update_invoice_draft | Reemplaza un borrador CFDI y vuelve a validar su contrato fiscal. | Efecto externo |
update_payroll_invoice_draft | Reemplaza un borrador CFDI de nómina y vuelve a validar su contrato fiscal y laboral. | Efecto externo |
stamp_invoice | Timbra un borrador revisado solo si conserva su contrato fiscal canónico. | Destructivo y externo |
refresh_invoice_status | Consulta 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_document | Solicita 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_document | Archiva o restaura un CFDI o documento de retención sin eliminar su historial. | Modifica datos |
get_payroll | Consulta 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_payroll | Prepara 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_payroll | Timbra 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 MCP | Propósito | Seguridad |
|---|---|---|
create_sales_receipt | Crea 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_receipt | Cancela un recibo abierto y conserva su historial de venta. | Destructivo |
refund_sales_receipt | Registra un reembolso de recibo y, cuando corresponda, crea una nota de crédito CFDI. | Destructivo y externo |
Catálogo comercial e inventario
| Herramienta MCP | Propósito | Seguridad |
|---|---|---|
get_products | Busca productos, consulta un producto o sus proveedores vinculados. | Solo lectura |
get_contacts | Busca contactos y consulta un contacto específico de la organización. | Solo lectura |
get_inventory | Consulta existencias, movimientos u operaciones agrupadas de inventario. | Solo lectura |
save_contact | Crea o actualiza un cliente o proveedor de la organización. | Modifica datos |
save_product | Crea o actualiza un producto del catálogo de la organización. | Modifica datos |
update_inventory | Establece o repone la existencia de un producto. | Destructivo |
receive_inventory | Registra una entrega de inventario de proveedor con varios productos. | Destructivo |
get_price_overrides | Consulta precios configurados por cliente o sucursal. | Solo lectura |
set_price_override | Crea o actualiza una regla de precio para cliente o sucursal. | Modifica datos |
Cuentas y análisis fiscales
| Herramienta MCP | Propósito | Seguridad |
|---|---|---|
get_accounts | Busca cuentas por cobrar o por pagar y consulta sus movimientos. | Solo lectura |
archive_account_document | Archiva 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_plan | Crea, 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 MCP | Propósito | Seguridad |
|---|---|---|
get_income_expenses_summary | Consulta agregados financieros de documentos CFDI por periodo. | Solo lectura |
get_sales_receipt_summary | Consulta 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_summary | Consulta 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_summary | Consulta 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_summary | Consulta totales fiscales provenientes de declaraciones analizadas. | Solo lectura |
Ley fiscal oficial y parámetros
| Herramienta MCP | Propósito | Seguridad |
|---|---|---|
search_tax_law | Busca 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_law | Lee 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_rules | Lee 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