{"name":"io.github.javalenciacai/mcp-reportia","slug":"javalenciacai-mcp-reportia","title":null,"description":"Reportia HTTP API as 66 curated MCP tools (accounting, mappings, SIIGO).","url":"https://mcp.market/server/javalenciacai-mcp-reportia","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"finance","tags":["finance"],"presence":{"score":29,"stars":0,"forks":0,"downloads_week":704,"last_push_at":"2026-09-12T15:59:38.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/javalenciacai/mcp-reportia.git","website":null,"version":"0.3.2","remotes":[],"packages":[{"registryType":"npm","identifier":"@james.valencia/mcp-reportia","version":"0.3.2","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Base URL of the Reportia API (without trailing slash). Example: https://reportia.example.com","isRequired":true,"name":"REPORTIA_BASE_URL"},{"description":"Bearer token for M2M authentication. Mutually exclusive with REPORTIA_COOKIE; either can be paired with REPORTIA_EMAIL+REPORTIA_PASSWORD (session login) for cookie fallback.","isSecret":true,"name":"REPORTIA_TOKEN"},{"description":"Pre-issued Reportia session cookie (e.g. connect.sid=s%3A...). For upstream callers that already hold the resolved user's session and want the child to authenticate as that user without re-login. Mutually exclusive with REPORTIA_TOKEN. Skips /api/auth/login and /api/auth/logout.","isSecret":true,"name":"REPORTIA_COOKIE"},{"description":"Email for cookie-session authentication.","name":"REPORTIA_EMAIL"},{"description":"Password for cookie-session authentication.","isSecret":true,"name":"REPORTIA_PASSWORD"},{"description":"Default companyId used when a tool accepts it as optional.","name":"REPORTIA_COMPANY_ID"},{"description":"HTTP request timeout in milliseconds (default 30000).","name":"REPORTIA_TIMEOUT_MS"},{"description":"Directory where downloaded Excel/PDF exports are saved (default ./downloads).","name":"REPORTIA_DOWNLOAD_DIR"},{"description":"Custom User-Agent header (default mcp-reportia/0.1.0).","name":"REPORTIA_USER_AGENT"},{"description":"Maximum bytes for a single binary download (default 104857600 = 100MB).","name":"REPORTIA_MAX_DOWNLOAD_BYTES"}]}],"tools":[{"name":"reportia_account_codes_search","description":"Busca códigos de cuenta únicos por prefijo dentro de los movimientos contables de una empresa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_account_mapping_create","description":"Crea un nuevo mapeo de cuenta contable para una empresa.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_account_mapping_delete","description":"Elimina un mapeo de cuenta contable.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_account_mapping_update","description":"Actualiza un mapeo de cuenta contable existente.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_account_mappings_list","description":"Lista los mapeos de cuentas contables para una empresa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_commission_export_excel","description":"Exporta el reporte completo de comisiones a Excel con jerarquía de 3 niveles (Plan 37). Recibe los mismos filtros que la herramienta de listado.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_commission_list","description":"Lista el reporte de comisiones de una empresa con filtros opcionales (fecha, terceros, vendedores, estado de pago).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_companies_list","description":"Lista las empresas accesibles para el usuario autenticado (GET /api/companies).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_company_activate","description":"Activa una empresa (POST /api/companies/:id/activate). Requiere confirm=true.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_company_get","description":"Obtiene el detalle de una empresa (GET /api/companies/:id).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_company_settings_get","description":"Obtiene la configuracion de una empresa (GET /api/companies/:id/settings).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_company_settings_update","description":"Actualiza parcialmente la configuración de una empresa (PATCH /api/companies/:id/settings). DESTRUCTIVA: requiere { confirm: true }.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_mapping_create","description":"Crea un mapeo de centro de costo. Campos: centerCode, name (mín 1 car), subCenterCode opcional (default \"\").","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_mapping_delete","description":"Elimina un mapeo de centro de costo (DELETE). REQUIERE { confirm: true } — operación destructiva.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_mapping_update","description":"Actualiza un mapeo de centro de costo existente (PUT). Campos opcionales: centerCode, subCenterCode, name.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_mappings_list","description":"Lista los mapeos de centros de costo para una empresa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_mappings_suggestions","description":"Devuelve sugerencias de centros de costo desde los movimientos contables de la empresa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_report_create","description":"Crea un reporte configurable de centros de costo con sus líneas. chartType ∈ {bar, line, pie}; operaciones por línea ∈ {ADD, SUBTRACT, IGNORE}.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_report_delete","description":"Elimina un reporte de centros de costo y todas sus líneas (CASCADE). REQUIERE { confirm: true } — destructiva.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_report_duplicate","description":"Duplica un reporte existente con un nuevo nombre (3-255 caracteres). Crea un reporte nuevo en el backend. DESTRUCTIVA: requiere { confirm: true }.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_report_execute","description":"Ejecuta un reporte aplicando sus operaciones sobre los movimientos del rango [startDate, endDate] (YYYY-MM-DD). Puede ser costoso (consulta SQL sobre millones de filas). DESTRUCTIVA: requiere { confirm: true }.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_report_export_excel","description":"Ejecuta el reporte y descarga el resultado como .xlsx (descarga segura). Requiere startDate y endDate.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_report_export_pdf","description":"Ejecuta el reporte y descarga el resultado como .pdf (descarga segura). Requiere startDate y endDate.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_report_get","description":"Detalle de un reporte configurable de centros de costo con sus líneas.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_report_update","description":"Reemplaza un reporte y todas sus líneas (PUT). Mismo body que create.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_cost_center_reports_list","description":"Lista los reportes configurables de centros de costo para una empresa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_cost_centers_available","description":"Lista todos los centros de costo disponibles de la empresa (usado por el wizard de creación de reportes).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_health","description":"Devuelve el estado de salud de la API de Reportia y un diagnóstico del cliente MCP (modo auth, base URL, descarga dir). Útil como primera llamada para validar conectividad.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_health_queue_system","description":"Verifica la salud del sistema de colas (queue system health check, sin autenticacion de empresa). Util para diagnostico de BullMQ / Redis (GET /api/health/queue-system).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_health_workers","description":"Devuelve la salud de los workers de la cola y el lag actual, con un flag `isStuck` y timestamp de la verificacion (GET /api/queue/workers/health).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_invoice_email_send","description":"Envia UNA factura por email a un destinatario explicito. DESTRUCTIVA: requiere { confirm: true }. Envuelve POST /api/invoices/:invoiceId/email.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_invoice_settings_create","description":"Crea o reemplaza la configuracion de facturacion (POST). El body libre es un record<string, unknown> aceptado por la API. DESTRUCTIVA: requiere { confirm: true }.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_invoice_settings_get","description":"Obtiene la configuracion de facturacion (titulo, footer, proveedor de email, etc.) de una empresa.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_invoice_settings_update","description":"Actualiza parcialmente la configuracion de facturacion (PATCH). El body libre es un record<string, unknown> aceptado por la API. DESTRUCTIVA: requiere { confirm: true }.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_invoices_list","description":"Lista las facturas de una empresa con filtros opcionales: startDate, endDate, nit, numeroDocumento, tipoComprobante, codigoComprobante.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_invoices_send_multiple","description":"Envia VARIAS facturas por email usando la libreta de direcciones del cliente. DESTRUCTIVA: requiere { confirm: true }. Envuelve POST /api/invoices/send-multiple.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_line_group_description","description":"Devuelve la descripción asociada a un par (line, group) ya mapeado para la empresa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_line_group_mapping_create","description":"Crea un mapeo de línea/grupo para una empresa. Campos: line, group (mín 1 car), description opcional.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_line_group_mapping_delete","description":"Elimina un mapeo de línea/grupo (DELETE). REQUIERE { confirm: true } — operación destructiva.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_line_group_mapping_update","description":"Actualiza un mapeo de línea/grupo existente (PUT). Los campos son opcionales: line, group, description.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_line_group_mappings_list","description":"Lista los mapeos de líneas/grupos configurados para una empresa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_line_group_suggestions_by_type","description":"Devuelve sugerencias filtradas por tipo. type debe ser exactamente \"lines\" o \"groups\" (verificado en backend).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_line_group_suggestions_lines_groups","description":"Devuelve sugerencias de líneas y grupos derivadas de los movimientos contables de la empresa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_logout","description":"Cierra la sesión actual contra Reportia (POST /api/auth/logout). Invalida la sesión local del cliente MCP tras el logout.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_movements_delete_all","description":"Elimina todos los movimientos contables de una empresa después de confirmar explícitamente.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_movements_export_excel","description":"Exporta movimientos contables a un archivo Excel.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_movements_export_pdf","description":"Exporta movimientos contables a un archivo PDF.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_movements_list","description":"Lista movimientos contables crudos (raw rows) con filtros opcionales y paginación","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_salesperson_mapping_create","description":"Crea un nuevo mapeo de vendedor para una empresa. Body: salespersonId, salespersonName.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_salesperson_mapping_delete","description":"Elimina un mapeo de vendedor. DESTRUCTIVA: requiere { confirm: true }.","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_salesperson_mapping_update","description":"Actualiza parcialmente un mapeo de vendedor (PATCH /:mappingId).","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_salesperson_mappings_list","description":"Lista los mapeos de vendedores (salespersonId <-> salespersonName) de una empresa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_salesperson_options_list","description":"Lista las opciones de vendedores (dropdown) para una empresa: id, name, displayValue.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_siigo_clients_list","description":"Lista los clientes remotos disponibles en SIIGO para una empresa (proxy contra el servicio SIIGO; requiere token externo vigente) (GET /api/companies/:companyId/siigo/clients).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_siigo_history_get","description":"Obtiene el historial de comandos SIIGO de una empresa. ⚠️ ATENCION: si el servidor detecta comandos activos, dispara una sincronizacion on-demand antes de devolver el resultado. DESTRUCTIVA: requiere { confirm: true } para evitar sincronizaciones accidentales.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_siigo_run_trace_get","description":"Obtiene la trazabilidad completa (trace) de una corrida de sincronizacion SIIGO especifica (GET /api/companies/:companyId/siigo/sync/runs/:runId/trace).","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_siigo_schedules_list","description":"Lista las programaciones (schedules) de sincronizacion SIIGO configuradas para una empresa (GET /api/companies/:companyId/siigo/schedules).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_siigo_settings_get","description":"Obtiene la configuracion SIIGO Pyme de una empresa (GET /api/companies/:companyId/siigo-settings).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_siigo_sync_runs_list","description":"Lista las corridas de sincronizacion SIIGO de una empresa (GET /api/companies/:companyId/siigo/sync/runs). Parametro opcional `limit` (1-200, por defecto 50).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_third_parties_get_by_nit","description":"Obtiene un tercero por su NIT.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_third_parties_list","description":"Lista todos los terceros de una empresa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_third_parties_portfolio_balance","description":"Obtiene el balance de cartera de una empresa para los NITs dados.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_third_parties_search","description":"Busca terceros por NIT o nombre.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_upload_status_get","description":"Obtiene el estado actual de un upload especifico, incluyendo progreso visible y diagnostico de su job en cola (GET /api/upload/:uploadId/status).","write_action":true,"price_micros":0,"input_schema":null},{"name":"reportia_uploads_history_list","description":"Lista el historial de cargas (uploads) de una empresa, filtrado por el usuario autenticado y limitado a 20 entradas visibles (GET /api/companies/:companyId/upload-history).","write_action":false,"price_micros":0,"input_schema":null},{"name":"reportia_whoami","description":"Devuelve el perfil del usuario autenticado en Reportia (GET /api/auth/me). Útil para confirmar que la sesión está activa.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-19T20:15:28.522Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:15:28.510Z","components":{"code":{"score":25,"max":25,"notes":["32 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 7 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@james.valencia/mcp-reportia","version":"0.3.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-09-11T13:41:43.156Z","repositoryUrl":"git+https://github.com/javalenciacai/mcp-reportia.git","weeklyDownloads":704}],"repo":{"found":true,"owner":"javalenciacai","repo":"mcp-reportia","archived":false,"pushedAt":"2026-09-12T15:59:38Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/25663630?v=4","ownerCreatedAt":"2017-02-09T13:05:31Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/25663630?v=4&s=128","source":"registry"},"presence":{"stars":0,"forks":0,"downloadsWeek":704,"license":"MIT","lastPushAt":"2026-09-12T15:59:38.000Z","score":29}}}},"grade_history":[],"reviews":[]}