Skip to main content
Glama
nuncaeslupus

Invoice numberer

numerador-facturas

numerador-facturas MCP server – quality and maintenance score on Glama

Numera facturas PDF en lote desde el navegador. Estampa un número correlativo (F-0001, F-0002…) en todas las páginas de cada factura y te devuelve un ZIP listo para entregar. Todo ocurre del lado del cliente: los PDFs nunca salen de tu equipo.

Resuelve el trámite de foliar o numerar un lote de facturas sin subir documentos sensibles a ningún servicio y sin software de escritorio.

Web: https://nuncaeslupus.github.io/numerador-facturas/

Inicio rápido

make sync     # npm install
make dev      # servidor local

Abre el navegador, arrastra tus PDFs, define la plantilla de numeración y descarga el ZIP.

Related MCP server: invovate-mcp-server

Ejemplo

Plantilla F-{n:4} sobre tres archivos empezando en el número 1:

plantilla "F-{n:4}", número 7  -> F-0007
rango de 3 archivos, inicio 1  -> del 1 al 3

factura-1.pdf  ->  F-0001_factura-1.pdf
factura-2.pdf  ->  F-0002_factura-2.pdf
factura-3.pdf  ->  F-0003_factura-3.pdf

El número se estampa en cada página; la salida es un ZIP con un PDF por factura y/o un único PDF con todas unidas.

Uso

  1. Archivos — elige o arrastra los PDFs. Se ordenan por nombre (orden natural: 2 antes que 10) o por fecha de modificación; luego puedes reordenarlos arrastrando o con ↑ ↓.

  2. Numeración — plantilla con un marcador: {n:4} rellena con ceros (0007), {n} sin ceros. Indica el número inicial o el final; el otro se calcula según el número de archivos. Si das ambos y no cuadran, avisa.

  3. Posición y aspecto — haz clic en la vista previa o escribe la distancia en mm desde la izquierda/derecha y desde arriba/abajo (por defecto, 10 mm de la esquina superior derecha). Así funciona igual en A4 y en recibos más bajos. Fuente, tamaño y color del número, y un recuadro opcional detrás con su color y margen.

  4. Resultado — un ZIP con un PDF por factura (F-0001_original.pdf) y/o un único PDF con todas juntas.

Los PDFs protegidos se abren: si piden contraseña, la página la pregunta (no se guarda). La copia numerada sale sin protección. Los archivos que no se pueden leer se avisan arriba de la lista y no se numeran.

Disponible en español, inglés, francés, italiano, alemán y chino (según el idioma del navegador, o el que elijas arriba). La configuración se recuerda en el navegador (localStorage).

Privacidad

Sitio estático sin backend. La página lleva una Content-Security-Policy que solo permite cargar recursos del propio sitio, y un test comprueba que el código no hace peticiones de red (fetch, XHR, WebSocket…).

Usar desde una IA (MCP)

La web no tiene API: lo que usa un LLM es mcp/, un servidor MCP sin UI que reutiliza el código de src/ y se ejecuta en tu equipo, sin red. La propia web explica cómo instalarlo y sirve el .mcpb para Claude Desktop y un llms.txt para los LLM.

Desarrollo

Vite + TypeScript, @cantoo/pdf-lib (pdf-lib con soporte de cifrado) para estampar y unir, pdf.js para la vista previa y fflate para el ZIP.

make sync     # npm install
make dev      # servidor local
make check    # formato, lint, tipos, build y tests

Los tests usan PDFs sintéticos. Cada push a main se publica en GitHub Pages (.github/workflows/deploy.yml).

Este repo sigue el flujo spec → diseño → ejecución de claude-arsenal: ver status/specification.md y status/plan.md.

Proyectos relacionados

  • claude-arsenal — flujo spec-driven para Claude Code y cola de tareas con gates.

  • drawspec — spec declarativo de diagramas → SVG/PNG/texto limpio, escribible por LLMs; incluye servidor MCP.

  • doc-control — permite a agentes de IA editar documentos Word como cambios con control de versiones.

  • literary-critic — análisis de manuscritos con LLM como lo haría un editor profesional.

  • integral-job-search — búsqueda de empleo centrada en el candidato, dentro de Claude Code.

Licencia

MIT — ver LICENSE.

Available Tools

1 tool
number_invoicesNumerar facturasA

Stamps a correlative number (F-0001, F-0002…) on every page of each PDF invoice in a batch and writes numbered copies to a new folder. Numera facturas PDF en lote. Runs locally and offline: the PDFs stay on this computer and the originals are not modified.

NameRequiredDescriptionDefault
endNoLast number. Given alone, the first is worked out from the file count
zipNoAlso write a ZIP of the numbered PDFs
fontNoHelvetica
x_mmNoDistance from that edge, in mm
y_mmNoDistance from that edge, in mm
colorNoNumber color, #rrggbb#000000
mergeNoAlso write one PDF with every invoice joined
pathsYesAbsolute paths of PDF files, or folders whose PDFs are all taken (not recursive)
startNoFirst number. Defaults to 1
from_xNoHorizontal reference edgeright
from_yNoVertical reference edgetop
dry_runNoReport which number each file would get, writing nothing
size_ptNoFont size in points
sort_byNoname: natural order (2 before 10). date: oldest modified first. given: as listedname
passwordNoPassword of protected PDFs. It passes through the chat: ask only if the tool reports locked files. Numbered copies come out unprotected
templateNoNumber format with one marker: {n:4} pads to 4 digits (0007), {n} does not padF-{n:4}
box_colorNoBox color, #rrggbb#ffffff
backgroundNoDraw a box behind the number
box_pad_mmNoMargin between number and box edge
output_dirNoAbsolute folder for the results. Defaults to 'numeradas' beside the first file

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false; the description reinforces this by explaining the write goes to copies in a new folder while originals are untouched, and that everything runs locally and offline. It stops short of describing failure modes (locked PDFs, bad paths) or what the tool reports back.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and the output destination. The Spanish restatement 'Numera facturas PDF en lote' largely duplicates the title 'Numerar facturas' and is the only wasted line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 20-parameter tool with no output schema, the description covers the core behavior and the non-destructive local guarantee but says nothing about what the call returns (e.g., which numbers were assigned, where files landed) or how dry_run output differs. An agent can call it, but not predict the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 95%, so the 20 parameters are already well documented in the schema. The description only adds the numbering-format illustration (F-0001), without explaining start/end ranges, sort order, dry_run, or password handling. Baseline 3 applies when the schema carries the weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (stamps a correlative number) with a concrete example format (F-0001, F-0002…), names the resource (PDF invoices in a batch), and states the outcome (numbered copies written to a new folder). There is no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope (batch of PDF invoices) is clear and there are no sibling tools to disambiguate against, but the description never states when to reach for it versus alternatives, nor any exclusions or prerequisites. Usage must be inferred from the scenario rather than being spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.0
    • First observednumber_invoices

TDQS

A3.9/5.0

Scored across 1 tool

Disambiguation5/5

There is only one tool, so there is no possibility of misselection between competing tools. Its purpose (batch-numbering PDF invoices) is stated clearly and unambiguously.

Naming Consistency5/5

The single name 'number_invoices' follows a clean verb_noun snake_case pattern. No competing conventions exist to create inconsistency.

Tool Count4/5

The server has a deliberately narrow, single-purpose scope, so one tool is defensible rather than an oversight. It is on the thin side (no separate preview/configure operations), which keeps it just below a perfect score.

Completeness3/5

Core behavior (stamp sequential numbers, write to a new folder, leave originals untouched) is covered, but obvious adjacent operations are absent: choosing a prefix or starting number, dry-run/preview, resuming numbering across batches, or undoing a run. Agents can work around these only by post-processing output themselves.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables the generation of professional PDF invoices and their distribution via email using customizable templates. It allows users to create, manage, and send invoices with standard business fields like tax rates and line items through natural language.
    3
    19 npm
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Create invoices from any MCP client via the Invovate API — compute totals and generate PDF, JSON, or UBL invoices in 11 languages. Exposes four tools: calculate_invoice_totals (no API key needed), generate_invoice_pdf, generate_invoice_ubl, and get_invoice_capabilities.
    4
    125 npm
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to inspect and work with PDF files entirely on the local machine, covering page counts, metadata, layout, encryption permissions, scan-vs-text detection, and page rendering. Generated results land in a temporary workspace as short artifact ids that can be chained between tools and exported to real folders on request.
    12
    51 PyPI
    1
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Turns invoice details from an MCP client conversation into calculated totals and formatted Excel workbooks in JPY, USD, or EUR, using integer minor-unit arithmetic and grouped tax rounding. Supports mixed tax rates, Excel formulas with cached totals, and A4 print-ready layouts, writing files locally with no network access or API key.
    2
    441 npm
    MIT