MCP Alegra
MCP Alegra
Servidor MCP (Model Context Protocol) para integración con Alegra.
Permite acceso a herramientas de gestión empresarial como inventarios, contactos,
facturas, bancos, pagos, retenciones, entre otros, a través de una interfaz MCP estandarizada.
Paquete MCP Expenses (@alegradev/mcp-expenses): facturas de compra (bills), notas de débito de
gastos, órdenes de compra y pagos salientes; las herramientas públicas documentadas enlazan con
references/tools/ y se invocan igual vía JSON-RPC sobre POST /mcp (véase #/paths/~1mcp).
Base URL: https://mcp.alegra.com
Versión: 1.0.0
Soporte: Comunidad Alegra
Inicio Rápido
El token se construye codificando email:token-alegra en Base64:
Base64(email:token-alegra)
Obtén tu token en Alegra → Configuración → API.
Cursor IDE
{
"mcpServers": {
"alegra-mcp": {
"type": "streamable-http",
"streamable": true,
"url": "https://mcp.alegra.com/mcp",
"headers": {
"Authorization": "Basic TU_TOKEN_AQUI",
"mcp-groups": "maestros,gastos,ingresos,items,config,contacts,invoices,banks,income-payments,resolutions,currencies,sellers,taxes,retentions,reports,ledger,accounting,support-center"
}
}
}
}
Otros clientes MCP
- URL:
https://mcp.alegra.com/mcp - Transporte:
streamable-http - Header auth:
Authorization: Basic <token-base64> - Header grupos:
mcp-groups: <grupos-separados-por-coma>
Grupos disponibles
132 herramientas en 19 grupos.
| Grupo | Descripción | Herramientas |
|---|---|---|
🔧 maestros | Protocolo MCP, endpoints principales y verificación de salud del servidor. | 0 |
🧾 gastos | Facturas de compra, notas de débito, órdenes de compra y pagos salientes. | 35 |
📈 ingresos | Gestión de facturación, emisión de comprobantes, numeraciones y pagos recibidos. | 17 |
📦 items | Gestión de inventario y productos | 22 |
⚙️ config | Catálogos de configuración del sistema (unidades de medida, claves de producto) | 2 |
👥 contacts | Gestión de contactos y clientes | 5 |
💰 invoices | Gestión de facturación | 7 |
🏦 banks | Gestión de cuentas bancarias y conciliaciones | 10 |
💵 income-payments | Gestión de pagos recibidos | 4 |
📄 resolutions | Gestión de numeraciones y resoluciones | 6 |
💱 currencies | Gestión de monedas y divisas | 5 |
🏪 sellers | Gestión de vendedores | 4 |
🧾 taxes | Gestión de impuestos | 4 |
🛡️ retentions | Gestión de retenciones fiscales | 4 |
🔧 reports | Gestión de reportes de ventas | 7 |
📖 ledger | Catálogo de cuentas contables | 4 |
🗂️ accounting | Comprobantes contables y centros de costos | 10 |
🔧 support-center | Gestión de tickets de soporte y base de conocimientos | 3 |
Herramientas
🧾 Gastos
Facturas de compra, notas de débito, órdenes de compra y pagos salientes.
🧾 Bills
bills__list_bills— bills__list_billsbills__get_bill— bills__get_billbills__create_bill— bills__create_billbills__update_bill— bills__update_billbills__delete_bill— bills__delete_billbills__close_bill— bills__close_billbills__apply_bill_advances— bills__apply_bill_advancesbills__update_bill_retentions— bills__update_bill_retentionsbills__update_bill_perceptions— bills__update_bill_perceptionsbills__add_bill_comments— bills__add_bill_commentsbills__update_bill_comment— bills__update_bill_commentbills__delete_bill_comment— bills__delete_bill_commentbills__upload_bill_attachment— bills__upload_bill_attachmentbills__delete_bill_attachment— bills__delete_bill_attachmentbills__import_bill_by_cufe— bills__import_bill_by_cufe
bills__list_bills
bills__list_billsMCP
Herramienta lógica list_bills. Nombre típico: bills__list_bills (p. ej. expenses__list_bills según el servidor).
HTTP
GET /v1/bills — Query: todos los parámetros opcionales van en arguments como claves planas (equivalente a query string).
Respuesta exitosa
HTTP 200: arreglo de bills, o { metadata: { total }, data: [...] } si metadata=true.
Errores frecuentes
| Código | Significado | Acción |
|---|---|---|
| 903 | Paginación inválida (start/limit) | start≥0; limit dentro del máximo del API |
| 400 | Validación | Revisar message y code en el cuerpo |
Filtros proveedor
client_id exacto: si no existe ese proveedor, cero resultados (no es error). No combinar lógica de intersección con client_name/provider_name; usar id o nombre (ver guía list_filter_semantics en la fuente).
Campos expandidos
Usar fields como lista separada por comas; ver fields_query_param y fields_guidance en la guía pública (stamp, xml, retentions, journal, etc.).
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
start | integer | Offset ≥0. Default: 0 | |
limit | integer | Tamaño de página (máx. típico 200). Default: 30 | |
fields | string | Campos extra separados por comas | |
decimalMode | string | Valores: calculation | display | |
simple | boolean | ||
metadata | string | 'true' para envoltorio metadata+data | |
order_field | string | Valores: billNumber | name | date | dueDate | id | |
order_direction | string | Valores: ASC | DESC | |
uuid | string | ||
uuids | string | ||
ids | string | ||
idGlobal | string | ||
exclude_id | string | ||
fullNumber | string | ||
billNumber_equals | string | ||
status | string | draft,open,paid,void (separados por coma) | |
type | string | Colombia suele default bill. Valores: bill | supportDocument | all | |
client_id | integer | ||
client_name | string | ||
provider_name | string | ||
date | string | ||
date_afterOrNow | string | ||
date_beforeOrNow | string | ||
dueDate | string | ||
dueDate_earlierThanOrEqualTo | string | ||
dueDate_laterThanOrEqualTo | string | ||
dueDate_between | string | start,end | |
createdAt_laterThanOrEqualTo | string | ||
createdAt_earlierThanOrEqualTo | string | ||
createdBy | string | ||
item_id | integer | ||
purchaseOrder_id | integer | ||
currency | string | ||
warehouse_id | integer | ||
costCenter_id | string | ||
emissionStatus | string | ||
areElectronic | boolean | ||
excludePaidBills | boolean | ||
excludePrefix | string | ||
includeVoidPayments | string | Valores: yes | no |
Respuesta:
{
"data": []
}
bills__get_bill
bills__get_billMCP
get_bill → bills__get_bill.
HTTP
GET /v1/bills/{id}
Argumentos
id(path): id local del bill.- Query opcional:
fields,decimalMode,simple,includeVoidPayments,dataByDate.
Respuesta exitosa
HTTP 200: objeto bill (forma según fields).
Errores
| Código | Significado | Acción |
|---|---|---|
| 11110 | Bill no existe | Verificar id |
| 403 | Prohibido (permisos/plan) | Revisar rol, plan y permisos del recurso |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
fields | string | ||
decimalMode | string | Valores: calculation | display | |
simple | boolean | ||
includeVoidPayments | string | Valores: yes | no | |
dataByDate | string |
Respuesta:
{
"id": "1"
}
bills__create_bill
bills__create_billMCP
create_bill → bills__create_bill.
HTTP
POST /v1/bills — Cuerpo JSON = objeto bill de alta.
Requisitos
date,dueDate,provider.idobligatorios.- Líneas bajo
purchases.itemsy/opurchases.categories(al menos una línea), salvo fusión válida con órdenes de compra (ver guía). - No enviar en alta: id, status, total, totalPaid, balance, calculationScale, payments (solo lectura / calculados).
- No usar
idCostCenteren raíz (rechazado); usarcostCenter: { id }o atajo numéricocostCenter.
Impuestos en líneas
tax debe ser arreglo de { id }. Códigos: 11048, 11058, 11081 (multiples impuestos), 11067/11059 ids inválidos.
Respuesta exitosa
HTTP 201: bill creado.
Errores (selección)
| Código | Significado | Acción |
|---|---|---|
| 11004 | Proveedor no encontrado | Corregir provider.id |
| 2094 | Proveedor deshabilitado | Habilitar proveedor o usar otro |
| 11040 | Sin ítems ni categorías | Agregar líneas en purchases |
| 20007 | Resolución / numberTemplate.id inválida | Ajustar numeración según país |
| 11097 / 11101 | Retenciones o pagos no permitidos al timbrar (CR) | Quitar o ajustar retenciones/pagos para timbre |
| 900 | Límite de plan | Actualizar plan o borrar documentos |
| 907 | Plan solo lectura | Plan que no permite escritura |
| 3051 | Fallo timbre — puede ir error + bill parcial | No repetir POST a ciegas; usar update_bill con id (ver guía 3051) |
| 11108 | UUID ya asociado a otro bill | Usar otro UUID o factura existente |
Ver error_3051_stamp_failure y error_code_reference en la guía pública.
Respuesta:
{
"id": "1"
}
bills__update_bill
bills__update_billMCP
update_bill → bills__update_bill.
HTTP
PUT /v1/bills/{id} — Actualización parcial.
Restricciones
No enviar id, status, total, totalPaid, balance, calculationScale, payments, advances en el sentido de forzar estado.
Errores
| Código | Significado | Acción |
|---|---|---|
| 11042 | No editable | Estado/reglas bloquean edición |
| 3051 | Fallo timbre (puede incluir bill parcial) | Ver guía 3051; no reintentar mismo payload a ciegas |
| 11094 | Falta centro de costo obligatorio | Enviar costCenter donde aplique |
| 907 / 908 / 911 | Plan o acción no permitida | Revisar plan y tipo de operación |
| 11110 | No encontrado | Verificar id |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
date | string | ||
dueDate | string | ||
provider | object | ||
purchases | object | ||
costCenter | object | ||
stamp | object | ||
should_open_bill | boolean | ||
electronicInvoicingVersion | string |
Respuesta:
{
"id": "1"
}
bills__delete_bill
bills__delete_billMCP
delete_bill → bills__delete_bill.
HTTP
DELETE /v1/bills/{id}
Respuesta exitosa
HTTP 204 (cuerpo vacío).
Errores
| Código | Significado | Acción |
|---|---|---|
| 11110 | Bill no encontrado | Verificar id |
| 403 | Sin permiso | Revisar acceso |
| 400 | Validación / no eliminable | Revisar message y estado del documento |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ |
Respuesta:
{}
bills__close_bill
bills__close_billMCP
close_bill → bills__close_bill.
HTTP
POST /v1/bills/{id}/close
Body obligatorio
date(yyyy-MM-dd): fecha de cierre.category: id de categoría de ingreso (string, number u objeto{ id }).
Body opcional
observations(máx. 500 caracteres).journal.numberTemplate.idsi la empresa usa tipos y numeraciones para el asiento de cierre.
Errores
| Código | Significado | Acción |
|---|---|---|
| 11200 | Formulario de cierre vacío o incompleto | Enviar campos requeridos de cierre |
| 11201 | Fecha de cierre obligatoria | Incluir date válida |
| 11203 | Categoría de ingreso obligatoria | Incluir category válida |
| 11208 | Factura no cerrable en este estado | Verificar saldo y estado |
| 11110 | Bill no encontrado | Verificar id |
| 905 | JSON inválido | Corregir cuerpo de la petición |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
date | string | ✓ | |
category | object | ✓ | |
observations | string | ||
journal | object |
Respuesta:
{
"code": 200,
"message": "OK"
}
bills__apply_bill_advances
bills__apply_bill_advancesMCP
apply_bill_advances → bills__apply_bill_advances.
HTTP
POST /v1/bills/{id}/advances-applied
Body
advances: arreglo de { id, amount }.
Respuesta
HTTP 200: { code: 200, message: [ ... anticipos ... ] }
Errores
| Código | Significado | Acción |
|---|---|---|
| 11110 | Bill no encontrado | Verificar id |
| 11300 | Cuerpo de anticipos vacío | Enviar advances con entradas válidas |
| 400 | Validación | Revisar ids y montos de anticipos |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
advances | array | ✓ |
Respuesta:
{
"code": 200,
"message": []
}
bills__update_bill_retentions
bills__update_bill_retentionsMCP
update_bill_retentions → bills__update_bill_retentions.
HTTP
PUT /v1/bills/{id}/retentions — Reemplazo total del arreglo retentions.
Errores
| Código | Significado | Acción |
|---|---|---|
| 11110 | Bill no encontrado | Verificar id |
| 11311 | Tipo documento incompatible con detracciones (PE) | Solo tipo bill admite regla |
| 11435 | Retenciones aplicadas bloquean edición | No reemplazar retenciones en ese estado |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
retentions | array | ✓ |
Respuesta:
[]
bills__update_bill_perceptions
bills__update_bill_perceptionsMCP
update_bill_perceptions → bills__update_bill_perceptions.
HTTP
PUT /v1/bills/{id}/perceptions
Solo empresas Argentina con percepciones habilitadas. Otros países: 405. Cuenta sin feature: 923.
Body
perceptions: arreglo de { id, amount }.
Errores
| Código | Significado | Acción |
|---|---|---|
| 405 | Método no permitido (país / sin feature) | Solo Argentina con percepciones habilitadas |
| 923 | Cuenta sin feature de percepciones | Habilitar feature en cuenta |
| 11414 | Percepción inválida | Revisar ids y montos en perceptions |
| 11416 | perceptions debe ser arreglo | Enviar arreglo de { id, amount } |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
perceptions | array | ✓ |
Respuesta:
[]
bills__add_bill_comments
bills__add_bill_commentsMCP
add_bill_comments → bills__add_bill_comments.
HTTP
POST /v1/bills/{id}/comments
Body
Debe incluir comments: arreglo de objetos (p. ej. { text } según integración).
Errores
| Código | Significado | Acción |
|---|---|---|
| 902 | Cuerpo vacío | Enviar JSON con body |
| 905 | JSON inválido | Corregir sintaxis del cuerpo |
| 11103 | comments mal formado (debe ser arreglo) | Formato según API de comentarios |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
comments | array | ✓ |
Respuesta:
{
"success": true
}
bills__update_bill_comment
bills__update_bill_commentMCP
update_bill_comment → bills__update_bill_comment.
HTTP
PUT /v1/bills/{id}/comments/{commentId}
Body
comment: string (texto del comentario).
Errores
| Código | Significado | Acción |
|---|---|---|
| 11301 | Falta id de comentario obligatorio | Incluir commentId válido en ruta/payload |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
commentId | string | ✓ | |
comment | string | ✓ |
Respuesta:
{
"success": true
}
bills__delete_bill_comment
bills__delete_bill_commentMCP
delete_bill_comment → bills__delete_bill_comment.
HTTP
DELETE /v1/bills/{id}/comments/{commentId}
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
commentId | string | ✓ |
Respuesta:
{
"success": true
}
bills__upload_bill_attachment
bills__upload_bill_attachmentMCP
upload_bill_attachment → bills__upload_bill_attachment.
HTTP
POST /v1/bills/{id}/attachment — multipart/form-data con un solo campo de archivo llamado file. El id del bill va solo
en la URL ({id}), no como campo extra del formulario.
Argumentos (MCP)
id: mismo valor que{id}del path (no se duplica como campo multipart).file: contenido del único campo de formulariofile(en JSON-RPC suele enviarse como base64).
Errores
| Código | Significado | Acción |
|---|---|---|
| 11110 | Bill no encontrado | Verificar id |
| 904 | Adjunto / multipart inválido | Campo file y multipart/form-data correctos |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
file | string | ✓ | Único campo de archivo de la API; nombre del campo file. |
Respuesta:
{
"id": "1"
}
bills__delete_bill_attachment
bills__delete_bill_attachmentMCP
delete_bill_attachment → bills__delete_bill_attachment.
HTTP
DELETE /v1/bills/attachment/{fileId} — fileId va solo en la URL (no es el id del bill).
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
fileId | string | ✓ |
Respuesta:
{
"success": true
}
bills__import_bill_by_cufe
bills__import_bill_by_cufeMCP
import_bill_by_cufe → bills__import_bill_by_cufe.
HTTP
POST /v1/bills/import-by-cufe — Body JSON: { "cufe": "..." }.
Solo Colombia.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
cufe | string | ✓ |
Respuesta:
{
"id": "1"
}
📑 Debit Notes
debit-notes__list_debit_notes— debit-notes__list_debit_notesdebit-notes__get_debit_note— debit-notes__get_debit_notedebit-notes__create_debit_note— debit-notes__create_debit_notedebit-notes__update_debit_note— debit-notes__update_debit_notedebit-notes__delete_debit_note— debit-notes__delete_debit_notedebit-notes__add_debit_note_comments— debit-notes__add_debit_note_comments
debit-notes__list_debit_notes
debit-notes__list_debit_notesMCP
list_debit_notes → debit-notes__list_debit_notes.
HTTP
GET /v1/debit-notes
Query (arguments)
Paginación: start (default 0), limit (default 30). type: normal | adjustmentNote | all (default normal).
Filtros: fields, metadata, order_field, order_direction, number, date, item_id, provider_name,
emissionStatus, idGlobal, client_id, id (lista de ids locales, máx. 30 en un request), rangos de fecha, etc.
Respuesta
HTTP 200: arreglo o { metadata, data } si metadata está definido.
Errores frecuentes
| Código | Significado | Acción |
|---|---|---|
| 903 | Paginación inválida o más de 30 ids en id | start≥0; limit válido; máx. 30 ids en id |
| 400 | Validación | Revisar message y code en el cuerpo |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
start | integer | Default: 0 | |
limit | integer | Default: 30 | |
fields | string | ||
metadata | string | ||
type | string | Valores: normal | adjustmentNote | all. Default: normal | |
order_field | string | Valores: number | name | date | id | |
order_direction | string | Valores: ASC | DESC | |
number | string | ||
date | string | ||
item_id | integer | ||
provider_name | string | ||
emissionStatus | string | ||
idGlobal | string | ||
client_id | integer | ||
id | string | Ids separados por coma, máx. 30 | |
date_afterOrNow | string | ||
date_beforeOrNow | string | ||
date_between | string |
Respuesta:
{
"data": []
}
debit-notes__get_debit_note
debit-notes__get_debit_noteMCP
get_debit_note → debit-notes__get_debit_note.
HTTP
GET /v1/debit-notes/{id} — Query opcional: fields.
Errores
| Código | Significado | Acción |
|---|---|---|
| 13005 | Nota de débito no existe | Verificar id (típ. HTTP 404) |
| 403 | Prohibido | Revisar permisos/plan |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
fields | string |
Respuesta:
{
"id": "1"
}
debit-notes__create_debit_note
debit-notes__create_debit_noteMCP
create_debit_note → debit-notes__create_debit_note.
HTTP
POST /v1/debit-notes
Obligatorio
client: { id }(proveedor),date- Al menos una línea:
items,categories,purchases.itemsopurchases.categories
Opcional
bills: [{ id, amount }], refunds, retentions, stamp, warehouse, currency, costCenter,
resolution, metadatos (adjustmentNoteType, annotation, reason, typeCreditNote CR), etc.
No enviar
id, status, total, balance, calculationScale, emissionStatus, payments.
Errores (selección)
| Código | Significado | Acción |
|---|---|---|
| 13011 | Cliente/proveedor no encontrado | Corregir client.id |
| 13043 | Sin líneas | Agregar items/categories/purchases |
| 13066 | Timbre sin resolución electrónica (CO/CR cuando aplica) | Asignar resolución electrónica |
| 13007 | Multimoneda no habilitada | Habilitar multimoneda en cuenta |
| 900 | Límite plan | Plan o cupo |
| 907 | Solo lectura | Plan no permite escritura |
| 3051 | Fallo timbre en alta — puede ir debitNote parcial | No re-POST ciego; update_debit_note con id |
| 905 / 902 | JSON vacío o mal formado | Cuerpo JSON válido y no vacío |
Códigos de líneas: 13043–13054, 13104, etc. Ver line_models.validation_codes_common en la fuente.
Actualización tras 3051
Persistir debitNote.id y usar update_debit_note (ver error_3051_stamp_failure en la guía).
Respuesta:
{
"id": "1"
}
debit-notes__update_debit_note
debit-notes__update_debit_noteMCP
update_debit_note → debit-notes__update_debit_note.
HTTP
PUT /v1/debit-notes/{id}
Errores
| Código | Significado | Acción |
|---|---|---|
| 13038 | No editable | Estado/reglas bloquean edición |
| 13093 | Periodo contable cerrado | Abrir periodo o ajustar fecha |
| 13005 | No encontrado | Verificar id |
| 907 / 908 | Plan | Revisar plan y permisos |
| (dinámico) | Fallo timbre en PUT: error + debitNote | Leer error.code; no reintentar mismo payload a ciegas |
No reintentar el mismo payload fallido a ciegas en rutas de timbre.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
date | string | ||
client | object | ||
items | array | ||
categories | array | ||
purchases | object | ||
bills | array | ||
stamp | object |
Respuesta:
{
"id": "1"
}
debit-notes__delete_debit_note
debit-notes__delete_debit_noteMCP
delete_debit_note → debit-notes__delete_debit_note.
HTTP
DELETE /v1/debit-notes/{id}
Respuesta
HTTP 204; algunos despliegues devuelven JSON legacy { code, message }.
Errores
| Código | Significado | Acción |
|---|---|---|
| 13005 | Nota no encontrada | Verificar id |
| 13042 | Estado no permite borrado | Anular o cambiar estado según reglas |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ |
Respuesta:
{
"code": 200
}
debit-notes__add_debit_note_comments
debit-notes__add_debit_note_commentsMCP
add_debit_note_comments → debit-notes__add_debit_note_comments.
HTTP
POST /v1/debit-notes/{id}/comments
Body
Debe existir la clave comments (arreglo u objeto según servicio de comentarios).
Errores
| Código | Significado | Acción |
|---|---|---|
| 902 | Cuerpo vacío | Enviar JSON con body |
| 905 | JSON inválido | Corregir cuerpo |
| 37008 | Sin comentarios válidos para agregar | comments presente y no vacío según API |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
comments | array | ✓ | Array de comentarios (forma según API de comentarios) |
Respuesta:
{
"success": true
}
📋 Purchase Orders
purchase-orders__list-purchase-orders— purchase-orders__list-purchase-orderspurchase-orders__get-purchase-order— purchase-orders__get-purchase-orderpurchase-orders__create-purchase-order— purchase-orders__create-purchase-orderpurchase-orders__update-purchase-order— purchase-orders__update-purchase-orderpurchase-orders__delete-purchase-order— purchase-orders__delete-purchase-orderpurchase-orders__void-purchase-order— purchase-orders__void-purchase-orderpurchase-orders__add-purchase-order-comments— purchase-orders__add-purchase-order-commentspurchase-orders__email-purchase-order— purchase-orders__email-purchase-order
purchase-orders__list-purchase-orders
purchase-orders__list-purchase-ordersMCP
list-purchase-orders → purchase-orders__list-purchase-orders.
HTTP
GET /v1/purchase-orders
Query (arguments)
Defaults API/MCP: start=0, limit=30. Opcional: metadata (boolean), order_field (name, date, id, deliveryDate, status),
order_direction (ASC|DESC), fields, client_id, provider_name, costCenter_id (usar null/none/0 para sin CC),
warehouse_id, fullNumber, number, item_id, status, date, deliveryDate, delivery_date, id, currency.
Respuesta
Arreglo de órdenes o { metadata: { total }, data } con metadata=true.
Errores frecuentes
| Código | Significado | Acción |
|---|---|---|
| 903 | Paginación inválida (start/limit) | Valores dentro del máximo del API |
| 905 | Petición mal formada o serialización | Revisar query y tipos |
| 400 | Validación | Revisar message y code en el cuerpo |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
start | number | Default: 0 | |
limit | number | Default: 30 | |
metadata | boolean | ||
order_field | string | Valores: name | date | id | deliveryDate | status | |
order_direction | string | Valores: ASC | DESC | |
fields | string | ||
client_id | number | ||
provider_name | string | ||
costCenter_id | string | ||
warehouse_id | string | ||
fullNumber | string | ||
number | string | ||
item_id | number | ||
status | string | ||
date | string | ||
deliveryDate | string | ||
delivery_date | string | ||
id | string | ||
currency | string |
Respuesta:
{
"data": []
}
purchase-orders__get-purchase-order
purchase-orders__get-purchase-orderMCP
get-purchase-order → purchase-orders__get-purchase-order.
HTTP
GET /v1/purchase-orders/{id}
Query
fields, fromMicro (boolean o string según cliente).
Errores
| Código | Significado | Acción |
|---|---|---|
| 404 | Orden de compra no existe | Verificar id |
| 905 | Error inesperado / serialización | Reducir fields o revisar petición |
| 403 | Prohibido | Permisos o plan |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | Id numérico local (path) |
fields | string | ||
fromMicro | object |
Respuesta:
{
"id": "1"
}
purchase-orders__create-purchase-order
purchase-orders__create-purchase-orderMCP
create-purchase-order → purchase-orders__create-purchase-order.
HTTP
POST /v1/purchase-orders
Body obligatorio
date,deliveryDateprovider(oprovider.id)purchasescon al menos una línea enpurchases.itemsy/opurchases.categories
No enviar
id, status, total, subTotal, bills (en respuesta). Evitar idCostCenter en raíz; usar costCenter objeto.
Líneas
Items/categories: id, price, quantity; impuestos como { id } o arreglo de objetos { id }.
Errores
| Código | Significado | Acción |
|---|---|---|
| 12016 | Sin líneas en compra | Agregar items/categories en purchases |
| 12030 | Moneda no disponible | Elegir moneda válida para la cuenta |
| 3042 | Validación de línea | Revisar items/categories e impuestos |
| 12021 | Número ya registrado | Otro número o numeración |
| 902 | Cuerpo vacío | Enviar JSON con body |
México puede exigir taxCondition en líneas.
Respuesta:
{
"id": "1"
}
purchase-orders__update-purchase-order
purchase-orders__update-purchase-orderMCP
update-purchase-order → purchase-orders__update-purchase-order.
HTTP
PUT /v1/purchase-orders/{id}
Errores
| Código | Significado | Acción |
|---|---|---|
| 12010 | No editable (facturas asociadas u otros bloqueos) | Resolver bloqueos o no editar |
| 12009 | Orden no encontrada | Verificar id |
| 3042 | Líneas inválidas | Corregir purchases |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
date | string | ||
deliveryDate | string | ||
provider | object | ||
purchases | object | ||
currency | object | ||
warehouse | object | ||
costCenter | object |
Respuesta:
{
"id": "1"
}
purchase-orders__delete-purchase-order
purchase-orders__delete-purchase-orderMCP
delete-purchase-order → purchase-orders__delete-purchase-order.
HTTP
DELETE /v1/purchase-orders/{id} — Solo si es eliminable (sin bills ligadas que bloqueen).
Errores
| Código | Significado | Acción |
|---|---|---|
| 404 | No encontrada | Verificar id |
| 400 | No eliminable (reglas de negocio) | Quitar vínculos que bloqueen |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ |
Respuesta:
{
"code": 200
}
purchase-orders__void-purchase-order
purchase-orders__void-purchase-orderMCP
void-purchase-order → purchase-orders__void-purchase-order.
HTTP
POST al endpoint de anulación (void) — no es DELETE.
Errores
| Código | Significado | Acción |
|---|---|---|
| 404 | No encontrada o no anulable en este estado | Verificar id y estado |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ |
Respuesta:
{
"id": "1",
"status": "void"
}
purchase-orders__add-purchase-order-comments
purchase-orders__add-purchase-order-commentsMCP
add-purchase-order-comments → purchase-orders__add-purchase-order-comments.
HTTP
POST /v1/purchase-orders/{purchaseOrderId}/comments (nombre de path en guía: purchaseOrderId).
Body
comments: string o arreglo (no vacío).
Errores
| Código | Significado | Acción |
|---|---|---|
| 37008 | Sin comentarios válidos para agregar | comments no vacío según API |
| 37009 | Documento no existe | Verificar purchaseOrderId |
| 37010 | No se pudo guardar comentario | Reintentar o revisar payload |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
purchaseOrderId | string | ✓ | Id local de la OC (path). Algunos clientes usan id como alias. |
comments | object | ✓ |
Respuesta:
{
"code": 201
}
purchase-orders__email-purchase-order
purchase-orders__email-purchase-orderMCP
email-purchase-order → purchase-orders__email-purchase-order.
HTTP
POST con path purchaseOrderId según API de correo de OC.
Body
- emails: arreglo o string (obligatorio)
- Opcional:
sendCopyToUser,emailTemplate: { subject, message }
Errores
| Código | Significado | Acción |
|---|---|---|
| 12005 | Sin destinatarios | Incluir emails o sendCopyToUser |
| 12006 | Correo inválido | Formato email válido en lista |
| 12004 | Error maquetación PDF (tamaño de página) | Ajustar plantilla PDF o contactar soporte |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
purchaseOrderId | string | ✓ | |
emails | object | ✓ | |
sendCopyToUser | boolean | ||
emailTemplate | object |
Respuesta:
{
"success": true
}
💸 Transaction Out
transaction-out__list-outgoing-payments— transaction-out__list-outgoing-paymentstransaction-out__get-outgoing-payment— transaction-out__get-outgoing-paymenttransaction-out__create-outgoing-payment— transaction-out__create-outgoing-paymenttransaction-out__update-outgoing-payment— transaction-out__update-outgoing-paymenttransaction-out__delete-outgoing-payment— transaction-out__delete-outgoing-paymenttransaction-out__void-outgoing-payment— transaction-out__void-outgoing-payment
transaction-out__list-outgoing-payments
transaction-out__list-outgoing-paymentsMCP
list-outgoing-payments → transaction-out__list-outgoing-payments.
HTTP
GET /api/v1/payments (según gateway; el listado de solo salientes usa type=out).
Query (arguments)
Incluir type: "out" para restringir a pagos salientes. Paginación: start, limit (típico tope 30).
Filtros adicionales: order_field, order_direction, from, to (fechas), fields, client_id, account_id, status.
Respuesta
Lista paginada o arreglo según API; expandir con fields.
Errores frecuentes
| Código | Significado | Acción |
|---|---|---|
| 400 | Parámetros o rango de fechas inválido | Revisar from/to y filtros |
| 401 | No autorizado | Token Bearer válido |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
type | string | Filtrar pagos salientes. Valores: out | |
start | number | ||
limit | number | ||
order_field | string | ||
order_direction | string | ||
from | string | Fecha inicio | |
to | string | Fecha fin | |
fields | string | ||
client_id | string | ||
account_id | string | ||
status | string |
Respuesta:
{
"data": []
}
transaction-out__get-outgoing-payment
transaction-out__get-outgoing-paymentMCP
get-outgoing-payment → transaction-out__get-outgoing-payment.
HTTP
GET /api/v1/payments/{id}
Query
fields (lista separada por comas) para expandir numberTemplate, bills, pdf, etc.
Errores
| Código | Significado | Acción |
|---|---|---|
| 404 | Pago no encontrado | Verificar id |
| 400 | Parámetro fields u otros inválidos | Revisar lista de fields |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | Id local del pago |
fields | string |
Respuesta:
{
"id": "1",
"type": "out"
}
transaction-out__create-outgoing-payment
transaction-out__create-outgoing-paymentMCP
create-outgoing-payment → transaction-out__create-outgoing-payment.
HTTP
POST /api/v1/payments
Body obligatorio
type:"out"date:YYYY-MM-DDbankAccount:{ id }o id escalar
Asociaciones (al menos una)
bills:[{ id, amount, retentions? }]categories: líneas de gasto (verline_models.categoriesen fuente)documentLines: pagos a líneas de mayor (idJournal,documentLineId,amount)
Opcional
numberTemplate, currency, costCenter (objeto { id }, no idCostCenter en raíz),
client, paymentMethod, observations, metadata (string JSON), paymentType (Rep. Dominicana → mayúsculas en metadata).
Errores
| Código | Significado | Acción |
|---|---|---|
| 4002 | Cuenta bancaria ausente o inválida | Enviar bankAccount válido |
| 4006 | Resolución no es tipo salida (transactionOut) | Elegir numeración correcta |
| 4012 | Mezcla de asociaciones incompatible | No mezclar bills con invoices en mismo pago |
| 4004 | Conflicto entre number y numberTemplate | Alinear numeración manual vs plantilla |
| 4250 | Aviso/retraso en respuesta de timbre SAT (async) | Ver error_4250_stamp_failure en la guía |
Timbre async
Otros códigos de timbre pueden ir en error anidado según país (ver guía pública).
Respuesta:
{
"id": "1"
}
transaction-out__update-outgoing-payment
transaction-out__update-outgoing-paymentMCP
update-outgoing-payment → transaction-out__update-outgoing-payment.
HTTP
PUT /api/v1/payments/{id}
Restricción
No cambiar el tipo fuera de out.
Errores
| Código | Significado | Acción |
|---|---|---|
| 4059 | No se puede cambiar el tipo de pago | Mantener type: out |
| 6071 | idCostCenter en raíz no permitido | Usar solo costCenter: { id } |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
date | string | ||
bankAccount | object | ||
bills | array | ||
categories | array | ||
numberTemplate | object | ||
costCenter | object |
Respuesta:
{
"id": "1"
}
transaction-out__delete-outgoing-payment
transaction-out__delete-outgoing-paymentMCP
delete-outgoing-payment → transaction-out__delete-outgoing-payment.
HTTP
DELETE /api/v1/payments/{id} cuando las reglas lo permitan.
Errores
| Código | Significado | Acción |
|---|---|---|
| 403 | Borrado prohibido | Usar anulación (void) o liberar documentos bloqueantes |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ |
Respuesta:
{
"success": true
}
transaction-out__void-outgoing-payment
transaction-out__void-outgoing-paymentMCP
void-outgoing-payment → transaction-out__void-outgoing-payment.
HTTP
Endpoint de void del recurso de pagos (no confundir con delete).
Body opcional
voidCause, voidDate (nombres según contrato API / guía).
Errores
| Código | Significado | Acción |
|---|---|---|
| 400 | No anulable en el estado actual | Consultar GET previo (voidable y mensaje) |
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
voidCause | string | ||
voidDate | string |
Respuesta:
{
"id": "1",
"status": "void"
}
📈 Ingresos
Gestión de facturación, emisión de comprobantes, numeraciones y pagos recibidos.
💰 Invoices
invoices__getInvoices— invoices__getInvoicesinvoices__getInvoiceById— invoices__getInvoiceByIdinvoices__getInvoiceByNumber— invoices__getInvoiceByNumberinvoices__createInvoice— invoices__createInvoiceinvoices__updateInvoice— invoices__updateInvoiceinvoices__deleteInvoice— invoices__deleteInvoiceinvoices__getPaymentTypes— invoices__getPaymentTypes
invoices__getInvoices
invoices__getInvoicesLista todas las facturas con filtros opcionales
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Default: 30 | |
offset | integer | Default: 0 | |
status | string | Valores: draft | open | paid | void |
Respuesta:
{
"data": [
{
"id": 1,
"number": "FAC-001",
"status": "open"
}
]
}
invoices__getInvoiceById
invoices__getInvoiceByIdObtiene una factura específica por su ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1,
"number": "FAC-001"
}
invoices__getInvoiceByNumber
invoices__getInvoiceByNumberObtiene una factura por su número (NCF o número completo)
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
number | string | ✓ |
Respuesta:
{
"id": 1
}
invoices__createInvoice
invoices__createInvoiceCrea una nueva factura
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
documentType | string | ||
clientId | integer | ||
items | array |
Respuesta:
{
"id": 1
}
invoices__updateInvoice
invoices__updateInvoiceActualiza una factura existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
invoices__deleteInvoice
invoices__deleteInvoiceElimina una factura por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
invoices__getPaymentTypes
invoices__getPaymentTypesObtiene tipos de pago disponibles (específico para República Dominicana)
Respuesta:
{
"data": [
{
"id": 1,
"name": "Efectivo"
},
{
"id": 2,
"name": "Tarjeta"
}
]
}
💵 Income Payments
incomePayments__getIncomePayments— incomePayments__getIncomePaymentsincomePayments__createIncomePayment— incomePayments__createIncomePaymentincomePayments__updateIncomePayment— incomePayments__updateIncomePaymentincomePayments__deleteIncomePayment— incomePayments__deleteIncomePayment
incomePayments__getIncomePayments
incomePayments__getIncomePaymentsObtiene lista de pagos asociados a ingresos
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Default: 30 | |
offset | integer | Default: 0 |
Respuesta:
{
"data": [
{
"id": 1,
"amount": 100,
"date": "2024-01-15"
}
]
}
incomePayments__createIncomePayment
incomePayments__createIncomePaymentCrea un nuevo pago recibido
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
invoiceId | integer | ||
amount | number | ||
date | string |
Respuesta:
{
"id": 1
}
incomePayments__updateIncomePayment
incomePayments__updateIncomePaymentActualiza un pago existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
incomePayments__deleteIncomePayment
incomePayments__deleteIncomePaymentElimina un pago por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
📄 Resolutions
resolutions__getResolutionss— resolutions__getResolutionssresolutions__getResolutionById— resolutions__getResolutionByIdresolutions__getDefaultResolutions— resolutions__getDefaultResolutionsresolutions__createResolutions— resolutions__createResolutionsresolutions__updateResolutions— resolutions__updateResolutionsresolutions__deleteResolutions— resolutions__deleteResolutions
resolutions__getResolutionss
resolutions__getResolutionssObtiene lista de resoluciones (plantillas de numeración)
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Default: 30 |
Respuesta:
{
"data": [
{
"id": 1,
"name": "Factura Electrónica"
}
]
}
resolutions__getResolutionById
resolutions__getResolutionByIdObtiene una resolución específica por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
resolutions__getDefaultResolutions
resolutions__getDefaultResolutionsObtiene las resoluciones por defecto para un tipo de documento
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
documentType | string |
Respuesta:
{
"data": []
}
resolutions__createResolutions
resolutions__createResolutionsCrea una nueva resolución
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ||
prefix | string | ||
from | integer | ||
to | integer |
Respuesta:
{
"id": 1
}
resolutions__updateResolutions
resolutions__updateResolutionsActualiza una resolución existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
resolutions__deleteResolutions
resolutions__deleteResolutionsElimina una resolución por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
📦 Items
Gestión de inventario y productos
items__getItems— items__getItemsitems__createItem— items__createItemitems__updateItem— items__updateItemitems__deleteItem— items__deleteItemcustomFields__getCustomFields— customFields__getCustomFieldscustomFields__createCustomField— customFields__createCustomFieldcustomFields__updateCustomField— customFields__updateCustomFieldcustomFields__deleteCustomField— customFields__deleteCustomFielditemCategories__getItemCategories— itemCategories__getItemCategoriesitemCategories__createItemCategory— itemCategories__createItemCategoryitemCategories__updateItemCategory— itemCategories__updateItemCategoryitemCategories__deleteItemCategory— itemCategories__deleteItemCategorypriceList__getPriceLists— priceList__getPriceListspriceList__createPriceList— priceList__createPriceListpriceList__updatePriceList— priceList__updatePriceListpriceList__deletePriceList— priceList__deletePriceListwarehouses__getWarehouses— warehouses__getWarehouseswarehouses__createWarehouse— warehouses__createWarehousewarehouses__updateWarehouse— warehouses__updateWarehousewarehouses__deleteWarehouse— warehouses__deleteWarehouseitemStock__get_item_stock— itemStock__get_item_stockitemStock__get_item_stock_summary— itemStock__get_item_stock_summary
items__getItems
items__getItemsObtiene la lista de ítems registrados en la aplicación con filtros opcionales. Usar el parámetro "fields" para incluir datos adicionales cuando el contexto de la conversación lo requiera (e.g. inventory para consultas de stock, images para catálogos, editable/deletable para tareas de gestión).
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Cantidad máxima de ítems a retornar. Por defecto 30. | |
start | integer | Offset para paginación (número de ítems a omitir). | |
metadata | boolean | Si es true, la respuesta incluye { metadata: { total }, data: [...] } en lugar del array directo. | |
query | string | Texto libre para buscar ítems por nombre o descripción. | |
type | string | Filtrar ítems por tipo.. Valores: simple | kit | variantParent | variant | surtido | |
status | string | Filtrar ítems por estado.. Valores: active | inactive | |
name | string | Filtrar ítems por nombre exacto. | |
reference | string | Filtrar ítems por referencia o código SKU. | |
idItemCategory | string | Filtrar ítems por ID de categoría de ítem. | |
idWarehouse | string | Filtrar ítems por ID de bodega. | |
order_field | string | Campo por el cual ordenar los resultados. | |
order_direction | string | Dirección del ordenamiento.. Valores: ASC | DESC | |
fields | string | Campos adicionales a retornar, separados por coma. Valores posibles: itemVariants, variantAttributes, subitems, editable, deletable, settingsOnShop, remissionedQuantity, negativeSale, source, simpleSale, inventory, images, attachments, productKey, tariffHeading, kitWarehouse, idGlobal. | |
mode | string | Modo de respuesta: simple retorna un conjunto reducido de campos.. Valores: advanced | simple |
Respuesta:
[
{
"id": "1",
"name": "Camiseta azul",
"description": "Algodón 100%",
"price": [
{
"price": 25
}
],
"type": "product",
"status": "active"
},
{
"id": "2",
"name": "Consultoría básica",
"price": [
{
"price": 150
}
],
"type": "service",
"status": "active"
}
]
items__createItem
items__createItemCrea un nuevo ítem (producto, servicio o kit) en la aplicación. El campo "type" determina qué campos adicionales aplican.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ✓ | Nombre del ítem. |
type | string | ✓ | Tipo de ítem.. Valores: service | product | kit |
price | array | ✓ | Lista de precios. Se requiere al menos un precio. |
description | string | ||
reference | string | ||
status | string | Valores: active | inactive | |
unit | string | ||
itemCategory | object | ||
tax | array | ||
inventory | object | ||
subitems | array | ||
kitWarehouse | object | ||
customFields | array |
Respuesta:
{
"id": "10",
"name": "Camiseta azul",
"type": "product",
"status": "active"
}
items__updateItem
items__updateItemActualiza los datos de un ítem existente. Solo es necesario enviar los campos que cambiarán.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | ID del ítem a actualizar. |
name | string | ||
price | array | ||
description | string | ||
reference | string | ||
status | string | Valores: active | inactive | |
unit | string | ||
itemCategory | object | ||
tax | array | ||
inventory | object | ||
customFields | array |
Respuesta:
{
"id": "10",
"name": "Camiseta azul actualizada",
"type": "product",
"status": "active"
}
items__deleteItem
items__deleteItemElimina un ítem por su ID de la aplicación.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | ID del ítem a eliminar. |
Respuesta:
{
"id": "10",
"name": "Camiseta azul",
"status": "inactive"
}
customFields__getCustomFields
customFields__getCustomFieldsObtiene los campos adicionales registrados en la aplicación con filtros opcionales.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
start | integer | ||
limit | integer | ||
metadata | boolean | ||
name | string | ||
status | string | Valores: active | inactive | |
order_field | string | ||
order_direction | string | Valores: ASC | DESC | |
fields | string |
Respuesta:
[
{
"id": "1",
"name": "Código de barras",
"resourceType": "item",
"status": "active",
"key": "barcode",
"type": "text",
"settings": {
"isRequired": false,
"showInItemVariants": true,
"printOnInvoices": null
}
}
]
customFields__createCustomField
customFields__createCustomFieldCrea un nuevo campo adicional para ítems.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
customField | object | ✓ |
Respuesta:
{
"id": "3",
"name": "Fecha de vencimiento",
"resourceType": "item",
"status": "active",
"type": "date"
}
customFields__updateCustomField
customFields__updateCustomFieldActualiza los datos de un campo adicional existente.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
customField | object | ✓ |
Respuesta:
{
"id": "3",
"name": "Fecha de vencimiento actualizada",
"status": "active",
"type": "date"
}
customFields__deleteCustomField
customFields__deleteCustomFieldElimina un campo adicional por su ID.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ |
Respuesta:
{
"id": "3",
"name": "Fecha de vencimiento",
"status": "inactive"
}
itemCategories__getItemCategories
itemCategories__getItemCategoriesObtiene las categorías de ítems registradas en la aplicación con filtros opcionales.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
start | integer | ||
limit | integer | ||
metadata | boolean | ||
name | string | ||
order_field | string | ||
order_direction | string | Valores: ASC | DESC | |
fields | string |
Respuesta:
[
{
"id": "1",
"name": "Telas",
"status": "active"
},
{
"id": "2",
"name": "Ropa para hombre",
"status": "inactive"
}
]
itemCategories__createItemCategory
itemCategories__createItemCategoryCrea una nueva categoría de ítems en la aplicación.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
itemCategory | object | ✓ |
Respuesta:
{
"id": "3",
"name": "Ropa de mujer",
"status": "active"
}
itemCategories__updateItemCategory
itemCategories__updateItemCategoryActualiza los datos de una categoría de ítems existente.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
itemCategory | object | ✓ |
Respuesta:
{
"id": "3",
"name": "Ropa de mujer actualizada",
"status": "active"
}
itemCategories__deleteItemCategory
itemCategories__deleteItemCategoryElimina una categoría de ítems por su ID.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ |
Respuesta:
{
"id": "3",
"name": "Ropa de mujer",
"status": "inactive"
}
priceList__getPriceLists
priceList__getPriceListsObtiene las listas de precios registradas en la aplicación.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
metadata | boolean | ||
fields | string |
Respuesta:
[
{
"id": "1",
"name": "General",
"status": "active",
"type": "amount"
},
{
"id": "2",
"name": "Precios mayorista",
"status": "active",
"type": "percentage",
"percentage": "10.00"
}
]
priceList__createPriceList
priceList__createPriceListCrea una nueva lista de precios.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
priceList | object | ✓ |
Respuesta:
{
"id": "53",
"name": "Lista mayorista",
"status": "active",
"type": "percentage",
"percentage": 10
}
priceList__updatePriceList
priceList__updatePriceListActualiza los datos de una lista de precios existente.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
priceList | object | ✓ |
Respuesta:
{
"id": "53",
"name": "Lista mayorista actualizada",
"status": "active",
"type": "percentage",
"percentage": 15
}
priceList__deletePriceList
priceList__deletePriceListElimina una lista de precios por su ID.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ |
Respuesta:
{
"id": "53",
"name": "Lista mayorista",
"status": "inactive"
}
warehouses__getWarehouses
warehouses__getWarehousesObtiene la lista de bodegas registradas en la aplicación con filtros opcionales.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
start | integer | ||
limit | integer | ||
metadata | boolean | ||
order_field | string | Valores: name | id | |
order_direction | string | Valores: ASC | DESC | |
fields | string | ||
name | string | ||
status | string | Valores: active | inactive |
Respuesta:
[
{
"id": "1",
"name": "Bodega Norte",
"isDefault": true,
"address": "Calle principal",
"status": "active"
},
{
"id": "3",
"name": "Bodega Sur",
"isDefault": false,
"status": "active"
}
]
warehouses__createWarehouse
warehouses__createWarehouseCrea una nueva bodega en la aplicación.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
warehouse | object | ✓ |
Respuesta:
{
"id": "22",
"name": "Bodega de alimentos",
"isDefault": false,
"status": "active"
}
warehouses__updateWarehouse
warehouses__updateWarehouseActualiza los datos de una bodega existente.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | |
warehouse | object | ✓ |
Respuesta:
{
"id": "22",
"name": "Bodega de alimentos actualizada",
"status": "active"
}
warehouses__deleteWarehouse
warehouses__deleteWarehouseElimina una bodega existente por su ID.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ |
Respuesta:
{
"code": 200,
"message": "Se eliminó la bodega correctamente"
}
itemStock__get_item_stock
itemStock__get_item_stockObtiene el stock disponible de un ítem específico en las bodegas.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | ID del ítem a consultar. |
Respuesta:
{
"company": {
"id": "518587"
},
"item": {
"id": "1046720"
},
"quantity": 5,
"warehouses": [
{
"id": "019c24b0-744e-723e-8fb1-1b76a4f1704e",
"quantity": -7
},
{
"id": "019c441e-48ab-7396-8319-362c4341fbbf",
"quantity": 12
}
]
}
itemStock__get_item_stock_summary
itemStock__get_item_stock_summaryObtiene un resumen del stock de todos los ítems en todas las bodegas.
Respuesta:
{
"data": [
{
"idItem": "1046720",
"idWarehouse": "019c24b0-744e-723e-8fb1-1b76a4f1704e",
"quantity": "-7.0000",
"itemName": "Producto 1",
"warehouseName": "Principal"
},
{
"idItem": "1046721",
"idWarehouse": "019c24b0-744e-723e-8fb1-1b76a4f1704e",
"quantity": "878.0000",
"itemName": "Producto 2",
"warehouseName": "Principal"
}
],
"metadata": {
"total": 21
}
}
⚙️ Config
Catálogos de configuración del sistema (unidades de medida, claves de producto)
config__getUnits— config__getUnitsconfig__getProductKeys— config__getProductKeys
config__getUnits
config__getUnitsObtiene las unidades de medida disponibles en la aplicación para asignar a ítems.
Respuesta:
[
{
"id": 2,
"code": "94",
"key": "unit",
"value": "Unidad",
"unitType": "Unidad",
"electronicInvoicingVersion": "2.1",
"deprecated": false
},
{
"id": 3,
"code": "EA",
"key": "service",
"value": "Servicio",
"unitType": "Unidad",
"electronicInvoicingVersion": "2.1",
"deprecated": false
},
{
"id": 4,
"code": "PIECE",
"key": "piece",
"value": "Pieza",
"unitType": "Unidad",
"electronicInvoicingVersion": "2.1",
"deprecated": false
}
]
config__getProductKeys
config__getProductKeysObtiene las claves (referencias) de producto disponibles en la aplicación para clasificar ítems.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | Filtrar claves de producto por nombre. |
Respuesta:
[
{
"id": 1,
"key": "10101501",
"name": "Gatos"
},
{
"id": 2,
"key": "10101502",
"name": "Perros"
},
{
"id": 3,
"key": "10101504",
"name": "Visón"
}
]
👥 Contacts
Gestión de contactos y clientes
contacts__getContacts— contacts__getContactscontacts__getContactByName— contacts__getContactByNamecontacts__createContact— contacts__createContactcontacts__updateContact— contacts__updateContactcontacts__deleteContact— contacts__deleteContact
contacts__getContacts
contacts__getContactsLista los contactos (clientes y/o proveedores) de la cuenta con filtros y paginación. Equivale a GET /contacts de la API de Alegra. El parámetro mode=advanced retorna objetos completos; mode=simple retorna un subconjunto reducido. Para búsquedas por texto libre usar query; para encontrar exactamente por documento, identification.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Cantidad máxima de contactos a retornar. El servidor MCP fuerza un tope de 30.. Default: 30. Máx: 30 | |
start | integer | Offset para paginación (número de contactos a omitir desde el inicio).. Default: 0 | |
order_direction | string | Dirección del ordenamiento.. Valores: ASC | DESC | |
order_field | string | Campo por el cual ordenar (p. ej. name, id, identification). | |
query | string | Texto libre. Busca coincidencias en nombre, identificación, email, etc. | |
identification | string | Filtra por número de identificación exacto (NIT, cédula, RFC, según país). | |
name | string | Filtra por nombre del contacto. | |
type | string | Filtra por tipo de contacto. Si se omite, retorna ambos.. Valores: client | provider | |
mode | string | Modo de respuesta: simple retorna un subconjunto de campos; advanced retorna el contacto completo.. Valores: advanced | simple |
Respuesta:
[
{
"id": "1",
"name": "Acme S.A.S",
"identification": "900123456",
"email": "[email protected]",
"type": [
"client"
],
"status": "active",
"address": {
"city": "Bogotá",
"address": "Calle 100 #20-30"
}
},
{
"id": "2",
"name": "Proveedor XYZ",
"identification": "800987654",
"type": [
"provider"
],
"status": "active"
}
]
contacts__getContactByName
contacts__getContactByNameBusca un contacto por nombre y retorna el primer resultado encontrado. Atajo equivalente a getContacts con query=<name> tomando data[0]. Si no hay coincidencias, la respuesta puede ser undefined. Para varias coincidencias usar contacts__getContacts.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ✓ | Nombre (o fragmento) del contacto a buscar. |
Respuesta:
{
"id": "1",
"name": "Acme S.A.S",
"identification": "900123456",
"email": "[email protected]",
"type": [
"client"
],
"status": "active"
}
contacts__createContact
contacts__createContactCrea un contacto (cliente, proveedor, o ambos). Equivale a POST /contacts. Únicamente name es obligatorio para Alegra; los demás campos son opcionales y dependen del país y del flujo del usuario (facturación electrónica, contabilidad, retenciones, etc.). Para facturar en países con DIAN/SUNAT/SAT, normalmente también se requiere identification y type.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
contact | object | ✓ |
Respuesta:
{
"id": "10",
"name": "Acme S.A.S",
"identification": "900123456",
"email": "[email protected]",
"type": [
"client"
],
"status": "active",
"address": {
"city": "Bogotá",
"address": "Calle 100 #20-30"
}
}
contacts__updateContact
contacts__updateContactActualiza un contacto existente. Equivale a PUT /contacts/{id} con semántica de PATCH: solo se envían los campos a modificar; los omitidos conservan su valor. El parámetro paramsToUpdate también se acepta como string JSON serializado (algunos clientes MCP serializan objetos anidados); el servidor lo parsea internamente.
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | string | ✓ | ID del contacto a actualizar. |
paramsToUpdate | object | Subconjunto de campos a actualizar. Mismas propiedades que contacts__createContact.contact, todas opcionales. |
Respuesta:
{
"id": "10",
"name": "Acme Colombia S.A.S",
"identification": "900123456",
"email": "[email protected]",
"type": [
"client",
"provider"
],
"status": "inactive"
}
contacts__deleteContact
contacts__deleteContactElimina un contacto por su ID. Equivale a DELETE /contacts/{id}. ⚠️ Operación destructiva: la API de Alegra puede rechazar el borrado si el contacto tiene documentos asociados (facturas, recibos, notas, etc.).
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
contact | object | ✓ |
Respuesta:
{
"id": "10",
"name": "Acme S.A.S",
"status": "inactive"
}
💰 Invoices
Gestión de facturación
invoices__getInvoices— invoices__getInvoicesinvoices__getInvoiceById— invoices__getInvoiceByIdinvoices__getInvoiceByNumber— invoices__getInvoiceByNumberinvoices__createInvoice— invoices__createInvoiceinvoices__updateInvoice— invoices__updateInvoiceinvoices__deleteInvoice— invoices__deleteInvoiceinvoices__getPaymentTypes— invoices__getPaymentTypes
invoices__getInvoices
invoices__getInvoicesLista todas las facturas con filtros opcionales
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Default: 30 | |
offset | integer | Default: 0 | |
status | string | Valores: draft | open | paid | void |
Respuesta:
{
"data": [
{
"id": 1,
"number": "FAC-001",
"status": "open"
}
]
}
invoices__getInvoiceById
invoices__getInvoiceByIdObtiene una factura específica por su ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1,
"number": "FAC-001"
}
invoices__getInvoiceByNumber
invoices__getInvoiceByNumberObtiene una factura por su número (NCF o número completo)
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
number | string | ✓ |
Respuesta:
{
"id": 1
}
invoices__createInvoice
invoices__createInvoiceCrea una nueva factura
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
documentType | string | ||
clientId | integer | ||
items | array |
Respuesta:
{
"id": 1
}
invoices__updateInvoice
invoices__updateInvoiceActualiza una factura existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
invoices__deleteInvoice
invoices__deleteInvoiceElimina una factura por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
invoices__getPaymentTypes
invoices__getPaymentTypesObtiene tipos de pago disponibles (específico para República Dominicana)
Respuesta:
{
"data": [
{
"id": 1,
"name": "Efectivo"
},
{
"id": 2,
"name": "Tarjeta"
}
]
}
🏦 Banks
Gestión de cuentas bancarias y conciliaciones
banks__getBanks— banks__getBanksbanks__getBanksById— banks__getBanksByIdbanks__getBanksByName— banks__getBanksByNamebanks__createBankAccount— banks__createBankAccountbanks__updateBankAccount— banks__updateBankAccountbanks__deleteBankAccount— banks__deleteBankAccountbanks__getReconciliations— banks__getReconciliationsbanks__getReconciliationById— banks__getReconciliationByIdbanks__createReconciliation— banks__createReconciliationbanks__deleteReconciliation— banks__deleteReconciliation
banks__getBanks
banks__getBanksLista todas las cuentas bancarias con filtros opcionales
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Default: 30 | |
offset | integer | Default: 0 |
Respuesta:
{
"data": [
{
"id": 1,
"name": "Banco Principal",
"accountNumber": "123456789"
}
]
}
banks__getBanksById
banks__getBanksByIdObtiene una cuenta bancaria específica por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1,
"name": "Banco Principal"
}
banks__getBanksByName
banks__getBanksByNameLista cuentas bancarias filtradas por nombre
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ✓ |
Respuesta:
{
"data": [
{
"id": 1,
"name": "Banco Principal"
}
]
}
banks__createBankAccount
banks__createBankAccountCrea una nueva cuenta bancaria
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ||
accountNumber | string | ||
bankId | integer |
Respuesta:
{
"id": 1
}
banks__updateBankAccount
banks__updateBankAccountActualiza una cuenta bancaria existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
banks__deleteBankAccount
banks__deleteBankAccountElimina una cuenta bancaria por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
banks__getReconciliations
banks__getReconciliationsLista todas las conciliaciones con filtros
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
bankAccountId | integer | ||
limit | integer |
Respuesta:
{
"data": [
{
"id": 1,
"bankAccountId": 1
}
]
}
banks__getReconciliationById
banks__getReconciliationByIdObtiene una conciliación específica por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
banks__createReconciliation
banks__createReconciliationCrea una nueva conciliación bancaria
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
bankAccountId | integer | ||
date | string |
Respuesta:
{
"id": 1
}
banks__deleteReconciliation
banks__deleteReconciliationElimina una conciliación por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
💵 Income Payments
Gestión de pagos recibidos
incomePayments__getIncomePayments— incomePayments__getIncomePaymentsincomePayments__createIncomePayment— incomePayments__createIncomePaymentincomePayments__updateIncomePayment— incomePayments__updateIncomePaymentincomePayments__deleteIncomePayment— incomePayments__deleteIncomePayment
incomePayments__getIncomePayments
incomePayments__getIncomePaymentsObtiene lista de pagos asociados a ingresos
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Default: 30 | |
offset | integer | Default: 0 |
Respuesta:
{
"data": [
{
"id": 1,
"amount": 100,
"date": "2024-01-15"
}
]
}
incomePayments__createIncomePayment
incomePayments__createIncomePaymentCrea un nuevo pago recibido
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
invoiceId | integer | ||
amount | number | ||
date | string |
Respuesta:
{
"id": 1
}
incomePayments__updateIncomePayment
incomePayments__updateIncomePaymentActualiza un pago existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
incomePayments__deleteIncomePayment
incomePayments__deleteIncomePaymentElimina un pago por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
📄 Resolutions
Gestión de numeraciones y resoluciones
resolutions__getResolutionss— resolutions__getResolutionssresolutions__getResolutionById— resolutions__getResolutionByIdresolutions__getDefaultResolutions— resolutions__getDefaultResolutionsresolutions__createResolutions— resolutions__createResolutionsresolutions__updateResolutions— resolutions__updateResolutionsresolutions__deleteResolutions— resolutions__deleteResolutions
resolutions__getResolutionss
resolutions__getResolutionssObtiene lista de resoluciones (plantillas de numeración)
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Default: 30 |
Respuesta:
{
"data": [
{
"id": 1,
"name": "Factura Electrónica"
}
]
}
resolutions__getResolutionById
resolutions__getResolutionByIdObtiene una resolución específica por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
resolutions__getDefaultResolutions
resolutions__getDefaultResolutionsObtiene las resoluciones por defecto para un tipo de documento
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
documentType | string |
Respuesta:
{
"data": []
}
resolutions__createResolutions
resolutions__createResolutionsCrea una nueva resolución
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ||
prefix | string | ||
from | integer | ||
to | integer |
Respuesta:
{
"id": 1
}
resolutions__updateResolutions
resolutions__updateResolutionsActualiza una resolución existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
resolutions__deleteResolutions
resolutions__deleteResolutionsElimina una resolución por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
💱 Currencies
Gestión de monedas y divisas
currencies__getCurrencies— currencies__getCurrenciescurrencies__getDefaultCurrency— currencies__getDefaultCurrencycurrencies__createCurrency— currencies__createCurrencycurrencies__updateCurrency— currencies__updateCurrencycurrencies__deleteCurrency— currencies__deleteCurrency
currencies__getCurrencies
currencies__getCurrenciesLista las monedas configuradas en la empresa
Respuesta:
{
"data": [
{
"id": 1,
"code": "USD",
"name": "Dólar estadounidense"
}
]
}
currencies__getDefaultCurrency
currencies__getDefaultCurrencyObtiene la moneda principal de la empresa
Respuesta:
{
"id": 1,
"code": "USD"
}
currencies__createCurrency
currencies__createCurrencyCrea una nueva moneda
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
code | string | ||
name | string | ||
exchangeRate | number |
Respuesta:
{
"id": 1
}
currencies__updateCurrency
currencies__updateCurrencyActualiza una moneda por código
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
code | string | ✓ | |
exchangeRate | number |
Respuesta:
{
"id": 1
}
currencies__deleteCurrency
currencies__deleteCurrencyElimina una moneda por código
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
code | string | ✓ |
Respuesta:
{
"success": true
}
🏪 Sellers
Gestión de vendedores
sellers__getSellers— sellers__getSellerssellers__createSeller— sellers__createSellersellers__updateSeller— sellers__updateSellersellers__deleteSeller— sellers__deleteSeller
sellers__getSellers
sellers__getSellersObtiene lista de vendedores
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Default: 30 |
Respuesta:
{
"data": [
{
"id": 1,
"name": "Juan Pérez"
}
]
}
sellers__createSeller
sellers__createSellerCrea un nuevo vendedor
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ||
identification | string | ||
email | string |
Respuesta:
{
"id": 1
}
sellers__updateSeller
sellers__updateSellerActualiza un vendedor existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
sellers__deleteSeller
sellers__deleteSellerElimina un vendedor por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
🧾 Taxes
Gestión de impuestos
taxes__getTaxes— taxes__getTaxestaxes__createTax— taxes__createTaxtaxes__updateTax— taxes__updateTaxtaxes__deleteTax— taxes__deleteTax
taxes__getTaxes
taxes__getTaxesObtiene todos los impuestos configurados
Respuesta:
{
"data": [
{
"id": 1,
"name": "IVA 16%",
"percentage": 16
}
]
}
taxes__createTax
taxes__createTaxCrea un nuevo impuesto
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ||
percentage | number |
Respuesta:
{
"id": 1
}
taxes__updateTax
taxes__updateTaxActualiza un impuesto existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
taxes__deleteTax
taxes__deleteTaxElimina un impuesto por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
🛡️ Retentions
Gestión de retenciones fiscales
retentions__getRetentions— retentions__getRetentionsretentions__createRetention— retentions__createRetentionretentions__updateRetention— retentions__updateRetentionretentions__deleteRetention— retentions__deleteRetention
retentions__getRetentions
retentions__getRetentionsObtiene lista de retenciones fiscales
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Default: 30 |
Respuesta:
{
"data": [
{
"id": 1,
"name": "Retención en la fuente"
}
]
}
retentions__createRetention
retentions__createRetentionCrea una nueva retención fiscal
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ||
type | string | ||
percentage | number |
Respuesta:
{
"id": 1
}
retentions__updateRetention
retentions__updateRetentionActualiza una retención existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1
}
retentions__deleteRetention
retentions__deleteRetentionElimina una retención por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
🔧 Reports
Gestión de reportes de ventas
reports__getGeneralSalesDocuments— reports__getGeneralSalesDocumentsreports__getGeneralSalesTotals— reports__getGeneralSalesTotalsreports__getSalesBySeller— reports__getSalesBySellerreports__getSalesBySellerTotals— reports__getSalesBySellerTotalsreports__getSalesByClient— reports__getSalesByClientreports__getSalesByClientTotals— reports__getSalesByClientTotalsreports__getClientsWithItems— reports__getClientsWithItems
reports__getGeneralSalesDocuments
reports__getGeneralSalesDocumentsObtiene una lista de documentos de venta individuales (facturas, notas crédito, notas débito) para un rango de fechas
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
from | string | ✓ | Fecha inicio en formato YYYY-MM-DD |
to | string | ✓ | Fecha fin en formato YYYY-MM-DD |
start | string | ✓ | Offset de paginación. Default: 0 |
limit | string | ✓ | Cantidad de registros devueltos por llamada (tamaño de página). Por defecto 10.. Default: 10 |
optionalParams | object | Filtros extra sobre los documentos. Envía un objeto (no un texto con JSON escapado). Todo es opcional; puedes combinar varios. • documentName — texto del nombre o descripción del documento • date — un solo día en formato YYYY-MM-DD (el rango principal sigue siendo from / to) • documentStatus — estado: open, closed o applied • documentNumber — número del documento a buscar • documentTypes — tipos separados por coma, por ejemplo invoice, creditNote o incomeDebitNote |
Respuesta:
{
"data": [
{
"id": 1,
"documentNumber": "FV-001",
"documentType": "invoice",
"total": 1500,
"date": "2024-01-15",
"status": "closed"
}
]
}
reports__getGeneralSalesTotals
reports__getGeneralSalesTotalsObtiene totales de ventas agrupados por periodo (día, mes o año). Retorna totales como beforeTaxes, tax, total, discount, creditNote
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
from | string | ✓ | Fecha inicio en formato YYYY-MM-DD |
to | string | ✓ | Fecha fin en formato YYYY-MM-DD |
groupBy | string | ✓ | Agrupación temporal. Valores: day | month | year |
optionalParams | object | Filtros extra sobre los mismos documentos que entran en los totales. Envía un objeto (no un texto con JSON escapado). Todo es opcional. • documentName — texto del nombre o descripción del documento • date — un solo día YYYY-MM-DD (además del rango from / to) • documentStatus — open, closed o applied • documentNumber — número del documento • documentTypes — tipos separados por coma (invoice, creditNote, incomeDebitNote) |
Respuesta:
{
"data": [
{
"period": "2024-01",
"beforeTaxes": 10000,
"tax": 1900,
"total": 11900,
"discount": 500,
"creditNote": 200
}
]
}
reports__getSalesBySeller
reports__getSalesBySellerObtiene una lista de vendedores con sus totales de ventas. Cada fila representa un vendedor con sus datos de ventas agregados
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
from | string | ✓ | Fecha inicio (YYYY-MM-DD) |
to | string | ✓ | Fecha fin (YYYY-MM-DD) |
start | string | ✓ | Offset de paginación. Default: 0 |
limit | string | ✓ | Cantidad de vendedores devueltos por llamada. Por defecto 10.. Default: 10 |
optionalParams | object | Opcional. Envía un objeto (no un texto con JSON escapado). • sellerName — deja solo el vendedor cuyo nombre coincida (si no lo envías, salen todos) • order_field — por qué columna ordenar totalDocuments, totalPayed, beforeTaxes o total (si piden subtotal, usa beforeTaxes) • order_direction — ASC o DESC; úsalo siempre junto con order_field |
Respuesta:
{
"data": [
{
"sellerName": "Juan Pérez",
"totalDocuments": 15,
"totalPayed": 5000,
"beforeTaxes": 8000,
"total": 9520
}
]
}
reports__getSalesBySellerTotals
reports__getSalesBySellerTotalsObtiene el total/suma de ventas por vendedor. Retorna un resumen agregado con totalPayed, beforeTaxes, total
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
from | string | ✓ | Fecha inicio (YYYY-MM-DD) |
to | string | ✓ | Fecha fin (YYYY-MM-DD) |
optionalParams | object | Opcional. Envía un objeto (no un texto con JSON escapado). • sellerName — si lo indicas, el resumen es solo de ese vendedor; si no, de todos • order_field y order_direction — para ordenar antes de agregar (mismos valores que en la lista por vendedor) |
Respuesta:
{
"data": {
"totalPayed": 25000,
"beforeTaxes": 40000,
"total": 47600
}
}
reports__getSalesByClient
reports__getSalesByClientObtiene una lista de clientes con sus datos de compras/transacciones. Muestra las métricas de compra de cada cliente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
from | string | ✓ | Fecha inicio (YYYY-MM-DD) |
to | string | ✓ | Fecha fin (YYYY-MM-DD) |
start | string | ✓ | Offset de paginación. Default: 0 |
limit | string | ✓ | Cantidad de clientes devueltos por llamada. Por defecto 10.. Default: 10 |
optionalParams | object | Opcional. Envía un objeto (no un texto con JSON escapado). • clientName — deja solo el cliente cuyo nombre coincida • order_field — ordenar por totalDocuments, subTotal o total • order_direction — ASC o DESC; úsalo junto con order_field |
Respuesta:
{
"data": [
{
"clientName": "Empresa ABC S.A.S",
"totalDocuments": 8,
"subTotal": 15000,
"total": 17850
}
]
}
reports__getSalesByClientTotals
reports__getSalesByClientTotalsObtiene el total/suma de compras/transacciones por cliente. Retorna un resumen agregado con subTotal, total, totalDiscount
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
from | string | ✓ | Fecha inicio (YYYY-MM-DD) |
to | string | ✓ | Fecha fin (YYYY-MM-DD) |
optionalParams | object | Opcional. Envía un objeto (no un texto con JSON escapado). • clientName — si lo indicas, el resumen es solo de ese cliente; si no, de todos • order_field y order_direction — para ordenar antes de consolidar (totalDocuments, subTotal, total + ASC o DESC) |
Respuesta:
{
"data": {
"subTotal": 50000,
"total": 59500,
"totalDiscount": 2500
}
}
reports__getClientsWithItems
reports__getClientsWithItemsObtiene datos de ventas agrupados por cliente mostrando qué items/productos compró cada cliente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
from | string | ✓ | Fecha inicio (YYYY-MM-DD) |
to | string | ✓ | Fecha fin (YYYY-MM-DD) |
limit | string | ✓ | Cantidad de líneas de ítem mostradas por cliente en la respuesta. Por defecto 10. Enviar como string numérico.. Default: 10 |
optionalParams | object | Opcional. Envía un objeto (no un texto con JSON escapado). • clients — lista de nombres de cliente; si la envías, solo aparecen esos clientes en el resultado (coincidencia sin distinguir mayúsculas) |
Respuesta:
{
"data": [
{
"clientName": "Cliente A",
"items": [
{
"itemName": "Producto 1",
"quantity": 10,
"total": 5000
},
{
"itemName": "Producto 2",
"quantity": 5,
"total": 2500
}
]
}
]
}
📖 Ledger
Catálogo de cuentas contables
ledger__listCategories— ledger__listCategoriesledger__getCategory— ledger__getCategoryledger__createCategory— ledger__createCategoryledger__updateCategory— ledger__updateCategory
ledger__listCategories
ledger__listCategoriesLista todas las categorías del catálogo de cuentas contables
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Número máximo de resultados. Default: 30 | |
offset | integer | Offset para paginación. Default: 0 |
Respuesta:
{
"data": [
{
"id": 1,
"name": "Activos",
"code": "1000",
"type": "asset"
}
]
}
ledger__getCategory
ledger__getCategoryObtiene una categoría contable específica por su ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ | ID de la categoría contable |
Respuesta:
{
"id": 1,
"name": "Activos",
"code": "1000",
"type": "asset"
}
ledger__createCategory
ledger__createCategoryCrea una nueva categoría en el catálogo de cuentas
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ✓ | Nombre de la categoría |
code | string | Código contable | |
type | string | ✓ | Tipo de cuenta contable. Valores: asset | liability | equity | income | expense |
Respuesta:
{
"id": 2,
"name": "Pasivos",
"code": "2000",
"type": "liability"
}
ledger__updateCategory
ledger__updateCategoryActualiza una categoría existente en el catálogo de cuentas
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ | ID de la categoría a actualizar |
name | string | Nuevo nombre | |
code | string | Nuevo código contable |
Respuesta:
{
"id": 1,
"name": "Activos Corrientes",
"code": "1100"
}
🗂️ Accounting
Comprobantes contables y centros de costos
accounting__listJournals— accounting__listJournalsaccounting__getJournal— accounting__getJournalaccounting__createJournal— accounting__createJournalaccounting__updateJournal— accounting__updateJournalaccounting__deleteJournal— accounting__deleteJournalaccounting__listCostCenters— accounting__listCostCentersaccounting__getCostCenter— accounting__getCostCenteraccounting__createCostCenter— accounting__createCostCenteraccounting__updateCostCenter— accounting__updateCostCenteraccounting__deleteCostCenter— accounting__deleteCostCenter
accounting__listJournals
accounting__listJournalsLista todos los comprobantes contables registrados
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Número máximo de resultados. Default: 30 | |
offset | integer | Offset para paginación. Default: 0 |
Respuesta:
{
"data": [
{
"id": 1,
"date": "2024-01-15",
"description": "Asiento de apertura",
"total": 1000
}
]
}
accounting__getJournal
accounting__getJournalObtiene un comprobante contable específico por su ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ | ID del comprobante contable |
Respuesta:
{
"id": 1,
"date": "2024-01-15",
"description": "Asiento de apertura",
"total": 1000
}
accounting__createJournal
accounting__createJournalCrea un nuevo comprobante contable
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
date | string | ✓ | Fecha del comprobante (YYYY-MM-DD) |
description | string | Descripción del comprobante | |
entries | array | ✓ | Líneas del comprobante (débitos y créditos) |
Respuesta:
{
"id": 2,
"date": "2024-01-16"
}
accounting__updateJournal
accounting__updateJournalActualiza un comprobante contable existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ | |
description | string |
Respuesta:
{
"id": 1
}
accounting__deleteJournal
accounting__deleteJournalElimina un comprobante contable por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
accounting__listCostCenters
accounting__listCostCentersLista todos los centros de costos registrados
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
limit | integer | Default: 30 | |
offset | integer | Default: 0 |
Respuesta:
{
"data": [
{
"id": 1,
"name": "Ventas",
"code": "CC-001"
}
]
}
accounting__getCostCenter
accounting__getCostCenterObtiene un centro de costos específico por su ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"id": 1,
"name": "Ventas",
"code": "CC-001"
}
accounting__createCostCenter
accounting__createCostCenterCrea un nuevo centro de costos
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
name | string | ✓ | Nombre del centro de costos |
code | string | Código del centro de costos |
Respuesta:
{
"id": 2,
"name": "Administración",
"code": "CC-002"
}
accounting__updateCostCenter
accounting__updateCostCenterActualiza un centro de costos existente
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ | |
name | string | ||
code | string |
Respuesta:
{
"id": 1,
"name": "Ventas Directas"
}
accounting__deleteCostCenter
accounting__deleteCostCenterElimina un centro de costos por ID
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
id | integer | ✓ |
Respuesta:
{
"success": true
}
🔧 Support Center
Gestión de tickets de soporte y base de conocimientos
supportCenter__createTicket— supportCenter__createTicketsupportCenter__retrieveTicketHistory— supportCenter__retrieveTicketHistorysupportCenter__searchHelpers— supportCenter__searchHelpers
supportCenter__createTicket
supportCenter__createTicketCrea un ticket de soporte en HubSpot vía la API del Centro de Soporte Alegra
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
subject | string | ✓ | Asunto del ticket |
description | string | ✓ | Descripción detallada del problema o consulta |
alegra_product | string | ✓ | Producto Alegra relacionado con el ticket |
type | string | Tipo de ticket. Valores: General | Payment |
Respuesta:
{
"id": "TKT-001",
"subject": "Error al emitir factura",
"status": "open",
"createdAt": "2024-01-15T10:30:00Z"
}
supportCenter__retrieveTicketHistory
supportCenter__retrieveTicketHistoryObtiene el historial de tickets de soporte del usuario vía la API Alegra
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
status | string | Filtrar por estado del ticket. Valores: open | pending | closed | |
search | string | Término de búsqueda para filtrar tickets | |
dateStart | string | Fecha inicial del rango de búsqueda (ISO 8601) | |
dateEnd | string | Fecha final del rango de búsqueda (ISO 8601, requerido si dateStart está definido) | |
limit | string | Número máximo de resultados a retornar. Default: 10 | |
after | string | Cursor de paginación para obtener la siguiente página de resultados |
Respuesta:
[
{
"id": "TKT-001",
"subject": "Error al emitir factura",
"status": "closed",
"createdAt": "2024-01-10T08:00:00Z"
},
{
"id": "TKT-002",
"subject": "Consulta sobre impuestos",
"status": "open",
"createdAt": "2024-01-14T14:20:00Z"
}
]
supportCenter__searchHelpers
supportCenter__searchHelpersBusca artículos, guías y documentación en la base de conocimientos vía la API de soporte Alegra
| Argumento | Tipo | Req | Descripción |
|---|---|---|---|
question | string | ✓ | Texto de búsqueda para encontrar artículos relevantes en la base de conocimientos |
Respuesta:
[
{
"id": "KB-123",
"title": "Cómo emitir tu primera factura electrónica",
"url": "https://help.alegra.com/factura-electronica",
"snippet": "Pasos para emitir facturas electrónicas en Alegra..."
},
{
"id": "KB-124",
"title": "Requisitos para facturación electrónica",
"url": "https://help.alegra.com/requisitos-fe",
"snippet": "Conoce los requisitos previos para habilitar la facturación..."
}
]
API HTTP
| Método | Path | Descripción |
|---|---|---|
POST | /mcp | Enviar comandos JSON-RPC |
GET | /mcp | Abrir conexión SSE |
DELETE | /mcp | Cerrar sesión MCP |
GET | /health | Health check |
Headers:
| Header | Descripción |
|---|---|
Authorization | Basic <token-base64> — requerido |
mcp-session-id | ID de sesión MCP (opcional para POST, requerido para GET/DELETE). |
mcp-groups | Grupos de herramientas a habilitar separados por comas. |
Métodos JSON-RPC:
tools/list
tools/listListar herramientas disponibles
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}
tools/call
tools/callEjecutar herramienta
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "items__getItems",
"arguments": {
"limit": 10,
"offset": 0
}
}
}
Health check
GET /health
{ "success": true, "message": "OK" }
Códigos de error
| Código JSON-RPC | Descripción |
|---|---|
−32600 | Request inválido |
−32601 | No autorizado |
| HTTP | Descripción |
|---|---|
400 | Solicitud inválida |
401 | No autorizado — revisa las credenciales BasicAuth |
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32600,
"message": "Invalid Request"
}
}
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32601,
"message": "Unauthorized"
}
}
Licencia MIT.
Updated 1 day ago
