MCP serverAvailable tools
Stamp invoice
Irreversibly stamp an existing CFDI draft. Review the draft first with get_document. Safe retries require reusing the same idempotencyKey.
MCP tool
stamp_invoicePurpose
Irreversibly submit a CFDI draft for SAT stamping.
- Use when
- The draft has been reviewed and is ready for issuance.
- Do not use when
- The draft still needs edits or the document is not a CFDI.
- Required permissions
- Side effects
- Destructive and external
- Idempotency
- Idempotent
Input schema
JSON Schema{ "type": "object", "properties": { "documentRef": { "type": "string", "pattern": "^invoice:", "description": "CFDI documentRef returned by search_documents" }, "idempotencyKey": { "type": "string", "minLength": 1, "maxLength": 200, "description": "Unique retry key for this exact operation. Reuse it only when retrying the same request." }, "emissionDate": { "description": "Optional SAT-valid emission timestamp to apply while stamping the draft", "allOf": [ { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$" } ] } }, "required": [ "documentRef", "idempotencyKey" ], "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false}Output schema
JSON Schema{ "type": "object", "properties": { "data": { "type": "object", "properties": { "simulated": { "allOf": [ { "type": "boolean", "const": true } ] }, "documentRef": { "type": "string", "pattern": "^invoice:.+$" }, "status": { "const": "valid" }, "uuid": { "type": "string" }, "stampedLocalDateTime": { "type": "string", "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,9}))?$" } }, "required": [ "documentRef", "status", "uuid" ], "additionalProperties": false }, "error": { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "code": { "enum": [ "validation_error", "unauthenticated", "forbidden", "payment_required", "not_found", "method_not_allowed", "conflict", "idempotency_conflict", "operation_in_progress", "recovery_required", "migration_required", "rate_limited", "provider_unavailable", "internal" ] }, "message": { "type": "string" }, "details": { "type": "object", "properties": { "document": { "type": "object", "properties": { "documentRef": { "type": "string", "pattern": "^(invoice|withholding|sales_receipt|declaration|tax_compliance_opinion|sales_receipt_refund):.+$" }, "editable": { "type": "boolean" } }, "required": [ "documentRef", "editable" ], "additionalProperties": false }, "issues": { "type": "array", "items": { "type": "object", "properties": { "path": { "type": "array", "items": { "anyOf": [ { "type": "string" }, { "type": "number" } ] } }, "message": { "type": "string" }, "code": { "type": "string" } }, "required": [ "path", "message" ], "additionalProperties": false } }, "retryable": { "type": "boolean" }, "retryAfterSeconds": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 }, "reason": { "type": "string" }, "balanceMinor": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "topUpUrl": { "type": "string" } }, "additionalProperties": false } }, "required": [ "code", "message" ], "additionalProperties": false } }, "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "oneOf": [ { "required": [ "data" ] }, { "required": [ "error" ] } ]}Related workflow
See the canonical workflows in the introductionRelated tools
Update payroll invoice draft
Fully replace an existing payroll CFDI draft and rerun the canonical payroll validations. The draft must already be payroll.
Refresh invoice status
Consult SAT directly for the current status of a stamped CFDI and reconcile the local document state. This requires verification data captured from its XML.