VerifikaDocs
MCP

Herramientas

Todas las herramientas del servidor, una por una, y qué permiso exige cada cosa.

Hay una herramienta por cada operación de la API, con el mismo nombre en snake_case y exactamente el mismo permiso. No hay herramientas «de alto nivel» que junten varias consultas: si existiera un resumen_del_mes con su propia forma de sumar, tarde o temprano el asistente diría 4,2 millones y el panel diría 4,1, y nadie sabría cuál tiene razón.

Lo que tu llave no puede hacer, no aparece

El catálogo se arma con los permisos de tu llave. Con una de solo lectura, el asistente ni siquiera sabe que create_expense existe: no es que se le niegue al intentarlo, es que no está en la lista. Un modelo que ve una herramienta asume que puede usarla, y media conversación se va en intentarlo, fallar y explicar un permiso que nunca tuvo.

🪪 Identidad

HerramientaPermisoQué hace
whoami—Alias de la llave, permisos, negocios a los que entra y plan. La primera que conviene llamar.
get_planplan.readPlan, funciones incluidas, límites y cuánto cupo de verificaciones queda este mes.

✅ Verificación

HerramientaPermisoQué hace
verify_receiptverifications.writeRegistra un comprobante con sus datos (monto, referencia, teléfono de alguien del equipo) y devuelve el veredicto: REGISTERED o DUPLICATE. Consume cupo si se registra. Verificar mandando solo la imagen es de la API (POST /v1/verifications, ver guía).

💵 Ingresos

HerramientaPermisoQué hace
list_incomesincomes.readPagos por fecha, estado, origen, sucursal, monto, cuenta o texto libre. Responde «¿cuánto entró ayer?».
get_incomeincomes.readEl detalle de un pago, con sus comprobantes y por qué canal lo respaldó el banco.
get_income_receiptincomes.readMuestra el comprobante como imagen, dentro del propio chat. Si el pago tiene varios, enumera el resto.
declare_incomeincomes.writeAnota un pago en el libro. Nace DECLARED y no consume cupo.
update_incomeincomes.writeCorrige un pago declarado a mano. Los demás son inmutables.
delete_incomeincomes.deleteBorra un pago declarado a mano.

El comprobante viaja como imagen, no como enlace

get_income_receipt devuelve la foto ya reducida y el asistente la pinta en la conversación. No se firma ninguna URL de descarga: una dirección así serviría a cualquiera que la tuviera, desde cualquier máquina, hasta que venciera. Aquí el permiso se comprueba en cada llamada y, si quitas la conexión desde el panel, deja de funcionar en la siguiente.

Dos consecuencias prácticas: un comprobante en PDF no se puede pintar (te responde con los datos del archivo y dónde abrirlo), y la imagen queda dentro de la conversación — trátala como lo que es, el comprobante en el chat.

🧾 Egresos

HerramientaPermisoQué hace
list_expensesexpenses.readGastos por fecha, categoría, sucursal, monto, forma de pago o beneficiario.
get_expenseexpenses.readEl detalle de un gasto.
create_expenseexpenses.writeRegistra un gasto. Pide categoryId, así que suele ir después de list_expense_categories.
update_expenseexpenses.writeCorrige un gasto.
delete_expenseexpenses.deleteBorra un gasto.
list_expense_categoriescategories.readLas categorías del negocio, con su emoji y si están activas.
create_expense_categorycategories.writeCrea una categoría propia. Nombre y emoji obligatorios; descripción opcional.
update_expense_categorycategories.writeRenombra, cambia el emoji o desactiva una categoría.
delete_expense_categorycategories.writeBorra una categoría. Falla si ya tiene gastos: en ese caso se desactiva.

🏪 Negocio

HerramientaPermisoQué hace
get_companycompanies.readNombre, categoría (con etiqueta legible), ciudad y cuántas sucursales tiene.
list_branchesbranches.readLas sucursales, con cuál es la principal.
list_business_categoriescompanies.readEl catálogo de «a qué se dedica un negocio».
list_payment_accountspayment_accounts.readCuentas de recaudo, por alias y últimos cuatro. Nunca el número completo.

👥 Equipo

HerramientaPermisoQué hace
list_team_membersteam.readQuién trabaja aquí, con qué rol y en qué sucursal, más el cupo de usuarios del plan. Sin correos.
list_rolesteam.readLos roles que se pueden asignar.

🚨 Pagos sospechosos

HerramientaPermisoQué hace
list_suspicious_attemptssuspicious.readComprobantes repetidos (DUPLICATE) y comprobantes que el banco nunca respaldó (NOT_FOUND).
get_suspicious_attemptsuspicious.readEl detalle de un intento.

🏦 Bancos y reportes

HerramientaPermisoQué hace
get_connectionsconnections.readSi los avisos del banco siguen entrando. Responde «¿se cayó algo?».
get_metricsmetrics.readTotales del periodo y del anterior, serie por día, perfil por hora y ranking por persona y por cuenta. Acepta turnos.

📒 Cuentas por cobrar

El cuaderno de fiados (guía). Mismas reglas que la API: montos en pesos con hasta 2 decimales, el saldo se recalcula solo y lo que escribe el asistente queda firmado como API.

HerramientaPermisoQué hace
list_receivablesreceivables.readLos clientes que deben, con saldo, etapa y si están vencidos. Por defecto, quien más debe primero; busca por nombre o teléfono sin importar tildes.
get_receivables_summaryreceivables.readCuánto le deben al negocio en total, cuánto está vencido, lo fiado y abonado en el mes y los cinco que más deben. Sumado en la base, no en la página.
get_receivablereceivables.readLa ficha de un cliente con sus últimos 50 movimientos.
list_receivable_entriesreceivables.readEl historial completo de un cliente, paginado, filtrable por tipo.
create_receivablereceivables.writeAbre la cuenta de un cliente con lo que debe y lo que ya abonó. Busca antes que no exista.
update_receivablereceivables.writeCambia datos, fecha acordada o la etapa del tablero. No sirve para dar una cuenta por pagada.
record_receivable_chargereceivables.writeAnota un fiado. Si la cuenta estaba saldada, la reabre.
record_receivable_paymentreceivables.writeAnota un abono. Si pasa del saldo, responde RECEIVABLE_OVERPAYMENT y el asistente te pregunta en vez de ajustar el monto.
settle_receivable_balancereceivables.write«Pagó todo»: un abono por el saldo exacto, leído en el momento.
archive_receivablereceivables.writeSaca a un cliente del tablero y de los totales, sin perdonarle nada.
restore_receivablereceivables.writeDevuelve un archivado al tablero, tal como estaba.
write_off_receivable_balancereceivables.write_offCondona. Con amount, esa parte; sin amount, todo el saldo. Queda como condonación, no como pago.
void_receivable_entryreceivables.voidAnula un movimiento mal registrado: queda en el historial y el saldo se recalcula sin él.

Así se le pregunta:

«¿Quién me debe más?»

«¿Quiénes están vencidos?»

«Gloria Restrepo abonó 50 mil.»

«Anota que Hernán se llevó 120 mil en materiales, y que paga el 15.»

«¿Cuánto me abonaron este mes y cuánto me siguen debiendo?»

Perdonar una deuda pide su propio permiso

La API decide el permiso de «registrar un movimiento» según el tipo; aquí cada cosa es una herramienta aparte con un permiso. Por eso, con una llave sin receivables.write_off, el asistente ni siquiera ve una forma de condonar — no una que falla a medias. Y aunque la tenga, write_off_receivable_balance y void_receivable_entry están marcadas como destructivas: los clientes que lo respetan te piden confirmar antes de ejecutarlas.

🧮 Conciliación bancaria

Las mismas operaciones de /v1/bank-statements, para conciliar el mes conversando: «sube el extracto de septiembre», «¿qué entradas faltan en Verifika?», «registra todas las que faltan».

HerramientaPermisoQué hace
upload_bank_statementreconciliation.writeSube un extracto por URL o base64. Espera hasta 20 s; si no alcanza, vuelve con status: processing.
list_bank_statementsreconciliation.readLos extractos leídos, con su avance.
get_bank_statementreconciliation.readEl resumen: cuadre con el banco, % resuelto, lo que falta y lo que solo está en Verifika.
list_bank_statement_linesreconciliation.readLas filas, con los mismos filtros de la tabla del panel.
get_bank_statement_linereconciliation.readUna fila.
match_bank_statement_linereconciliation.writeConcilia una fila con un ingreso o egreso que ya está en el libro.
register_bank_statement_linereconciliation.writeRegistra una fila en el libro (una salida pide además expenses.write).
ignore_bank_statement_line · reset_bank_statement_linereconciliation.write«No va en el libro» / deshacer.
bulk_bank_statement_linesreconciliation.writeLa misma acción sobre muchas filas, por ids o por filtro, con remaining.
rematch_bank_statementreconciliation.writeVuelve a cruzar el extracto.
delete_bank_statementreconciliation.deleteBorra el extracto (lo registrado en el libro se queda).

Y para los gastos con la foto de la factura (guía):

HerramientaPermisoQué hace
scan_expense_receiptexpenses.scanLee una factura y devuelve el borrador del gasto y los parecidos que ya existen. No crea nada.
get_expense_scanexpenses.scanUna lectura, con los duplicados al día.
create_expense_from_scanexpenses.writeCrea el gasto con la factura adjunta.

🪝 Webhooks

HerramientaPermisoQué hace
list_webhook_event_typeswebhooks.readLos eventos a los que se puede suscribir, y cuáles permite el plan.
list_webhook_endpointswebhooks.readLos webhooks configurados y su salud reciente.
list_webhook_deliverieswebhooks.readEl historial: qué se mandó y qué respondió tu servidor. Depurar sin abrir logs.
create_webhook_endpointwebhooks.writeDa de alta una URL y devuelve el secreto de firma.
update_webhook_endpointwebhooks.writeCambia URL, eventos o descripción; lo apaga y lo enciende.
delete_webhook_endpointwebhooks.writeLo borra, con todo su historial.
rotate_webhook_secretwebhooks.writeSecreto nuevo, con ventana de gracia en la que firmamos con los dos.
test_webhook_endpointwebhooks.writeDispara un webhook.test para comprobar que responde.
retry_webhook_deliverywebhooks.writeReencola una entrega fallida sin esperar al reintento automático.

🎬 Guiones listos

Además de las herramientas, el servidor trae prompts: tareas de varios pasos ya escritas. En Claude Desktop salen como comandos con /; en otros clientes, en un menú aparte.

GuionQué hace
cierre-de-cajaTotales del día, pagos que quedaron pendientes, gastos y sospechosos. Acepta una fecha.
revisar-sospechososSepara los repetidos de los que el banco nunca respaldó — y comprueba antes que el canal del banco no se hubiera caído, porque si se cayó, esos «falsos» pueden ser pagos buenos.
diagnosticar-webhookPor qué no llegan los eventos, y de qué lado está el problema.

🚫 Cosas que ninguna herramienta puede hacer

No es que estén restringidas: no existen, por las mismas razones que en la API.

  • Marcar un pago como verificado. Solo el cruce con el aviso real del banco cambia ese estado. Si un asistente pudiera decir «esto está verificado», el dato dejaría de significar algo — y ese dato es el producto.
  • Editar un pago que nació de un comprobante o de un aviso del banco. Su fuente de verdad está fuera del libro.
  • Crear, rotar o revocar API keys. Eso exige una sesión de una persona en el panel: una llave que puede emitir llaves convierte cualquier fuga en una fuga total.
  • Borrar una categoría con gastos. Se desactiva; el histórico se conserva.
  • Invitar gente al equipo o cambiarle el rol a nadie. Se lee el equipo, no se administra.
  • Borrar un cliente o un movimiento del cuaderno de fiados. Un movimiento se anula y un cliente se archiva; en los dos casos el historial se conserva.

Las llaves de prueba no entran al MCP

Una llave vk_test_ se rechaza con 403 TEST_MODE_UNAVAILABLE: las herramientas escriben en el libro real, y el modo de prueba solo existe en la API. Mejor un «no» claro que un asistente registrando pagos reales con una llave que el dueño cree inofensiva.

En esta página