papercheck

Arnés de auditoría para artículos matemáticos en LaTeX: escáner determinista, hallazgos validados por esquema con verificación de citas, y una puerta por etapas que los agentes no pueden saltar. CLI + servidor MCP.

Documentación

papercheck

Un arnés de auditoría reproducible para artículos matemáticos en LaTeX.

papercheck extrae la estructura de un artículo, registra hallazgos en libros de contabilidad validados por esquema que se verifican contra el texto fuente exacto, y ejecuta una compuerta final que informa si el artículo está listo. Funciona como herramienta de línea de comandos o como servidor MCP que un agente (Claude Code, Codex, Cursor o similar) maneja mientras tú aportas el juicio matemático.

El punto es la disciplina. En lugar de pedirle a un modelo que "revise el artículo", papercheck segmenta el manuscrito, inventaría las afirmaciones, ejecuta auditorías hostiles específicas, verifica cada hallazgo contra la fuente, adjudica, corrige solo lo aceptado y aplica compuertas. Las compuertas se aplican en el código: un agente no puede corregir antes de la adjudicación, y un hallazgo cuya cita no aparece en la fuente nunca entra en el libro de contabilidad.

El pipeline por etapas — segmentar, presupuestar, revisión especializada, sintetizar, adjudicar — sigue el enfoque descrito en la Herramienta de Asistente de Artículos (PAT) de Google Research [1], adaptado a un arnés pequeño, abierto y agnóstico al modelo que no ejecuta modelos propios.

Qué es

Un núcleo Python determinista con dos interfaces — una CLI y un servidor MCP. papercheck nunca llama a un modelo; el razonamiento vive en el agente o en tus manos en la CLI. Lo que proporciona el núcleo:

  • Extracción de estructura LaTeX-AST (teoremas, etiquetas, referencias, citas, ecuaciones, marcadores de borrador) en structure.json.
  • Libros de contabilidad de problemas validados por esquema, cada hallazgo vinculado a un archivo y una línea.
  • Verificación de citas al ingreso: si el texto citado de un hallazgo no está en la fuente, se rechaza como REJECTED_SOURCE_TARGET_INVALID antes de llegar al libro de contabilidad propuesto.
  • Una máquina de estados con compuertas por etapa (INIT → SCANNED → … → ADJUDICATED → … → GATED) que rechaza operaciones fuera de orden.
  • Una CLI, un servidor MCP (29 herramientas) y una interfaz web local.

Por qué

Un único mensaje de "revisa mi artículo" tiende a fallar de tres maneras. papercheck maneja cada una en código, no en indicaciones:

Modo de falloLo que suele pasarCómo lo maneja papercheck
Hallazgos alucinadosel modelo inventa un problema que no está en el textosubmit_issue compara el texto citado con la fuente; sin coincidencia, el hallazgo se rechaza antes de entrar en el libro de contabilidad
Corrección antes de la pruebael modelo reescribe antes de que nadie sepa qué es reallas correcciones se rechazan a menos que el estado esté en ADJUDICATED y el problema esté en ACCEPTED
Compuerta omitida"me parece bien" sin rastro de auditoríala compuerta final se calcula a partir de señales mecánicas y bloqueadores aceptados, y devuelve uno de un conjunto fijo de veredictos

Inicio rápido

pipx install papercheck        # or: pip install papercheck

papercheck scan     path/to/paper     # extract structure.json
papercheck segments path/to/paper     # propose audit segments and budgets
papercheck gate     path/to/paper --mechanical-only
papercheck report   path/to/paper     # self-contained HTML report
papercheck serve    path/to/paper     # local web UI

Ejecútalo en el ejemplo incluido (imprime ==== READY ====):

papercheck gate examples/toy_clean_paper --mechanical-only

Manejarlo desde un agente (MCP)

papercheck incluye un servidor FastMCP que expone 29 herramientas más el paquete de indicaciones de auditoría. Regístralo una vez:

claude mcp add papercheck -- papercheck-mcp

Luego pide al agente que audite un artículo. Recorre el flujo de trabajo a través de las herramientas MCP — init_audit, run_scan, propose_segments, submit_issue, adjudicate_issue, run_gate — bajo las mismas compuertas aplicadas en código que la CLI.

Generación de un paquete de dominio específico del artículo

papercheck no llama a un modelo, por lo que adaptar la auditoría al campo de un artículo es una división en dos pasos: el agente lee el artículo y redacta el paquete, papercheck lo valida y lo almacena.

papercheck packs scaffold --paper-root ./paper            # deterministic draft from the scan
papercheck packs create draft.json --paper-root ./paper   # validated -> Paper_Audit/domain_pack.json

Lo mismo está disponible a través de las herramientas MCP scaffold_domain_pack y create_domain_pack. Se incluyen paquetes genéricos para análisis estocástico, EDP, análisis numérico, optimización, teoría de aprendizaje automático y un respaldo general.

Cómo funciona

flowchart LR
    A[INIT] --> B[SCANNED] --> C[SEGMENTED] --> D[INVENTORIED] --> E[AUDITING]
    E --> F[SYNTHESIZED] --> G[ADJUDICATED] --> H[PATCH_PLANNED]
    H --> I[PATCHING] --> J[REGRESSED] --> K[GATED]

    E -. submit_issue .-> V{quote and label verified?}
    V -- no --> X[REJECTED_SOURCE_TARGET_INVALID]
    V -- yes --> L[PROPOSED ledger]
    style X fill:#7f1d1d,stroke:#ef4444,color:#fff
    style K fill:#14532d,stroke:#22c55e,color:#fff

Un núcleo determinista, dos interfaces, sin llamadas a LLM dentro del arnés. papercheck se mantiene estrictamente como servidor MCP y CLI — sin adaptadores de proveedores, sin auto-orquestación — por lo que funciona con cualquier modelo y no hace llamadas de red propias.

Comandos

ComandoQué hace
papercheck initcrea el espacio de trabajo Paper_Audit/ y el archivo de estado
papercheck scanextracción de estructura LaTeX-AST en structure.json
papercheck segmentspropuesta heurística de segmentación y presupuesto
papercheck gate [--mechanical-only]calcula el veredicto final (salida 0 = LISTO)
papercheck verify-quoteverifica una cita contra un archivo fuente
papercheck reportinforme de auditoría HTML autocontenido
papercheck serveinterfaz web local (filtra problemas, haz clic para ir a la fuente)
papercheck compare old/ new/diff estructural de dos versiones del artículo
papercheck profile list|showpipelines de auditoría de asesoría (quick, arxiv, full, …)
papercheck packs …lista, crea plantillas o crea paquetes de dominio
papercheck prompts list|showel paquete de indicaciones de auditoría incluido
papercheck mcpejecuta el servidor MCP (stdio)

Para un repositorio de artículos, docs/ci.md describe una acción de GitHub mecánica y sin LLM que ejecuta scan y gate --mechanical-only en cada solicitud de extracción y no envía nada a ningún proveedor de modelos.

Limitaciones

Consulta docs/limitations.md para la versión completa.

  • papercheck no es un demostrador de teoremas ni un reemplazo de la revisión por pares.
  • Detectar un error semántico depende completamente del modelo que lo maneja. papercheck mantiene el proceso disciplinado y trazable, pero los hallazgos de IA deben verificarse de forma independiente.
  • papercheck no hace llamadas de red. El agente con el que lo manejas puede transmitir tu manuscrito a su proveedor de modelos, así que revisa los términos de datos relevantes antes de auditar trabajo no publicado (docs/privacy.md).

Acerca de

Creado por Christian Garry.

Contribuciones

Las contribuciones son bienvenidas — consulta CONTRIBUTING.md. La arquitectura está fija para la línea 0.x: estrictamente MCP y CLI, JSON como fuente de verdad, compuertas aplicadas en código. Los cambios en las indicaciones están protegidos por los fixtures de evaluación descritos en docs/agent_eval.md.

Referencias

  1. Rajesh Jayaram, Drew Tyler, David Woodruff, Corinna Cortes, Yossi Matias, Vahab Mirrokni y Vincent Cohen-Addad. Towards Automating Scientific Review with Google's Paper Assistant Tool. arXiv:2606.28277, 2026. https://arxiv.org/abs/2606.28277

El BibTeX de lo anterior está en docs/references.bib.

Licencia

MIT — consulta LICENSE. Si papercheck es útil en tu trabajo, cítalo mediante CITATION.cff.