DocImprint Document Intelligence

Inteligencia documental verificable para agentes de IA.

Documentación

DocImprint

Los agentes de memoria documental pueden demostrarlo.
PDFs y URLs → respuestas citadas · paquetes de evidencia · atestación en cadena

npm version npm downloads PyPI version PyPI downloads smithery badge Glama MCP OpenAPI docs MIT license GitHub stars


Tabla de contenidos


De un vistazo

DocImprint convierte cualquier PDF o URL en un paquete de evidencia a prueba de manipulación: datos estructurados, respuestas citadas por IA y una prueba criptográfica que tus agentes pueden verificar de forma independiente.

EntradaPDF o URL
Salidaev_... paquete de evidencia: respuestas citadas, hashes de artefactos, firma EIP-191
Verificarclient.verify(): gratuito, sin autenticación; notarización opcional en Base L2 mediante EAS

Elige tu integración

RutaIdeal paraEmpieza aquí
SDK de TypeScriptAgentes Node, aplicaciones tipadasInicio rápido
SDK de PythonCrewAI, scriptsInicio rápido · CrewAI
Servidor MCPClaude, CursorServidor MCP
x402 USDCAgentes autónomos, sin cuentaPagos x402 USDC

Mira lo que obtienes

Cada respuesta incluye un ID de paquete verificable, hash de manifiesto y respuestas citadas vinculadas a citas exactas de la fuente.

{
  "bundle_id": "ev_01jqv8k3m2x",
  "manifest_sha256": "a3f2c1d8e9b0476f8a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f",
  "signature": {
    "signature": "0x8f4e2a1b9c3d5e7f0a2b4c6d8e0f1a3b5c7d9e1f3a5b7c9d1e3f5a7b9c1d3e5f71c",
    "signer_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0EbE",
    "algorithm": "secp256k1-eip191"
  },
  "answer_cited": {
    "value": "Section 4.2 does not permit unilateral termination without 90 days written notice.",
    "citations": [
      {
        "quote": "Neither party may terminate this Agreement unilaterally except upon ninety (90) days prior written notice to the other party.",
        "paragraphs": [42],
        "page": 4,
        "confidence": "high"
      }
    ]
  },
  "artifacts": {
    "markdown": { "sha256": "b4e5f6a79876543210fedcba9876543210fedcba9876543210fedcba9876543210ab" },
    "manifest": { "sha256": "a3f2c1d8e9b0476f8a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f" }
  }
}

API response with provenance and citations

Evidence bundle manifest anatomy


Cómo funciona

flowchart LR
  source[PDF or URL] --> extract[extract / qa / checkClaims]
  extract --> bundle[Evidence bundle ev_...]
  bundle --> artifacts[Artifacts + manifest SHA-256]
  bundle --> citations[Cited answers with quotes]
  artifacts --> verify[verify - free]
  verify --> notarize[notarize on Base L2 - optional]

Merkle citation proof flow


¿Por qué no un simple OCR o RAG?

OCR simpleRAG vectorialDocImprint
Citas exactas de la fuenteNoAproximadoSí, con referencias a párrafos
Evidencia de manipulaciónNoNoManifiesto SHA-256 + firma EIP-191
Verificación independienteNoNoverify() sin clave de API
Atestación en cadenaNoNoEAS en Base L2
Rastro de auditoría del agenteNoNoProcedencia + transferencia (Python)

Casos de uso

EscenarioMétodoResultado
Preguntas sobre contratosclient.qa()Respuesta citada con puntuación de confianza
Verificación de reclamacionesclient.checkClaims()Veredicto por reclamación: supported / contradicted / not_found
Procesamiento de facturasclient.extract({ mode: 'invoice' })Comerciante estructurado, líneas de artículos, totales: todo citado
Archivo de cumplimientolegal_hold: true + notarize()Registro inmutable en cadena, bloqueo de eliminación

Instalación

npm install docimprint           # TypeScript / Node.js
pip install docimprint           # Python REST client
pip install "docimprint[crewai]" # + 10 CrewAI tools & ProvenanceTracker

El código fuente de Python está en python/. PyPI: docimprint.


Inicio rápido

Obtén una clave de API en docimprint.com: plan gratuito disponible, sin necesidad de tarjeta de crédito.

TypeScript

import { DocImprintClient } from 'docimprint'

const client = new DocImprintClient({ apiKey: 'dr_live_...' })

const result = await client.extract({
  source: 'https://example.com/contract.pdf',
  include: ['markdown', 'summary'],
})

console.log(result.bundle_id)        // ev_01j...
console.log(result.summary)          // AI-generated summary
console.log(result.manifest_sha256)  // tamper-evident hash
console.log(result.key_points_cited[0].citations[0].quote)

Python

from docimprint import DocImprintClient

client = DocImprintClient(api_key="dr_live_...")

result = client.extract(
    url="https://example.com/contract.pdf",
    include=["markdown", "summary"],
)
print(result["bundle_id"])         # ev_01j...
print(result["summary"])           # AI-generated summary
print(result["manifest_sha256"])   # tamper-evident hash

API REST (cURL)

curl -X POST https://api.docimprint.com/v1/extract \
  -H "Authorization: Bearer dr_live_..." \
  -H "Content-Type: application/json" \
  -d '{"source": "https://example.com/contract.pdf", "include": ["markdown", "summary"]}'

Ejemplos

Demostraciones ejecutables que muestran la historia completa de la prueba: verificación de reclamaciones con citas, un paquete de evidencia almacenado y un recibo de acción firmado:

# Python
cd examples/python
pip install -e .
cp .env.example .env   # set DOCIMPRINT_API_KEY
python -m docimprint_examples.prove_what_agent_read

# TypeScript
cd examples/typescript
npm install
cp .env.example .env   # set DOCIMPRINT_API_KEY
npm run prove

Consulta examples/README.md para ambos lenguajes y qué demuestra cada artefacto.


Características

CapacidadMétodo / ModoDescripción
Extraerextract()Paquete de evidencia completo: markdown, resumen, puntos clave citados, artefactos, manifiesto SHA-256
Análisis de facturasmode: 'invoice'InvoiceResult estructurado: comerciante, fecha, líneas de artículos, subtotal, impuestos, total: todo con citas
Comparación de documentosmode: 'compare'Compara dos documentos; proporciona previous_bundle_id para rastrear cambios
Extracción estructuradamode: 'extract-structured'Extrae campos tipados usando un esquema JSON definido por el llamador
Resumirsummarize()Resumen en prosa + puntos clave, cada uno con referencias citadas a párrafos
Preguntas y respuestasqa()Respuesta a una sola pregunta con citas en línea y puntuación de confianza
Verificación de reclamacionescheckClaims()Veredicto por reclamación: supported / contradicted / not_found con citas de evidencia
Traducirtranslate()Traducción con citas de fuente a cualquier idioma
Describirdescribe()Descripción por IA del contenido de una imagen o página PDF
ColeccionescreateCollection() + searchCollection() + askCollection()Búsqueda semántica + preguntas y respuestas RAG entre documentos en múltiples paquetes
Verificarverify()Verificación de integridad criptográfica: hash de manifiesto, firma EIP-191, hashes de artefactos. Gratuito, sin autenticación
Notarizarnotarize()Escribe el SHA-256 del manifiesto en Base L2 mediante EAS: atestación permanente e inmutable
Servidor MCP20 herramientas · 2 indicacionesMCP nativo para Claude, Cursor y cualquier cliente compatible con MCP
x402Cabecera REST X-PaymentPaga por llamada en USDC: sin necesidad de cuenta

¿Por qué DocImprint?

  • 🔏 Procedencia criptográfica: cada paquete está firmado con EIP-191 en su creación; opcionalmente notarizado en Base L2 mediante EAS para un rastro de auditoría inmutable en cadena
  • 🤖 Nativo para agentes por diseño: trabajos asíncronos, webhooks, claves de idempotencia y retención legal integrados en cada solicitud, no añadidos después
  • 📎 Más allá del OCR: las citas incluyen citas exactas, índices de párrafos y puntuaciones de confianza (high/medium/low), no solo texto sin procesar
  • 🛠️ 10 herramientas de CrewAI listas para usar: research_tools(), legal_tools(), collection_tools() preagrupadas para flujos de trabajo comunes de agentes
  • ⚖️ Listo para cumplimiento: legal_hold, registro de procedencia, seguimiento de transferencias entre agentes y notarización en cadena diseñados para industrias legales y reguladas
  • 💳 Pago flexible: planes de crédito mensuales o pago por llamada en USDC mediante x402, sin necesidad de cuenta

Características nativas para agentes

DocImprint está diseñado para flujos de trabajo de agentes autónomos, no solo para llamadas API síncronas.

// Fire-and-forget async extraction — returns job_id immediately
const job = await client.extract({
  source: 'https://example.com/large-report.pdf',
  async: true,
  webhook: 'https://your-agent.io/callback',
  idempotency_key: 'report-2025-q4',
  legal_hold: true,
})

const status = await client.getJob(job.job_id)
// { status: 'complete', bundle_id: 'ev_...', progress_pct: 100 }

// Monitor a URL for changes — get notified on diff
await client.extract({
  source: 'https://example.com/terms.html',
  monitor: { webhook: 'https://your-agent.io/changes', mode: 'diff' },
})

Python: procedencia y seguimiento de transferencias entre agentes

client.log_provenance(bundle_id="ev_...", agent_id="agent-research", action="extracted")
client.handoff(bundle_id="ev_...", from_agent="agent-research", to_agent="agent-legal", note="ready for claim check")

Integración con CrewAI

10 herramientas específicas para agentes de CrewAI, organizadas en grupos predefinidos.

from docimprint.crewai import DocImprintToolkit

toolkit = DocImprintToolkit(
    api_key="dr_live_...",
    collection_id="col_...",  # required for collection tools
)

toolkit.research_tools()      # extract, summarize, qa, check_claims
toolkit.legal_tools()         # check_claims, verify, notarize
toolkit.collection_tools()    # search, ask, add_to_collection
toolkit.all_tools()           # all 10 tools
HerramientaQué hace
ExtractEvidenceToolPaquete de evidencia completo con citas y hash de manifiesto
SummarizeToolPuntos clave con referencias citadas a párrafos
QAToolRespuesta citada con puntuación de confianza
CheckClaimsToolVeredicto por reclamación: supported / contradicted / not_found
TranslateToolTraducción con citas de fuente
VerifyBundleToolVerificación de integridad criptográfica: manifiesto, hash, firma
NotarizeToolAtestación EAS en cadena en Base L2
SearchCollectionToolBúsqueda vectorial semántica en la colección de documentos
AskCollectionToolPreguntas y respuestas RAG entre documentos con fuentes citadas
AddToCollectionToolAñade paquete a la colección y activa indexación asíncrona

ProvenanceTracker envuelve todas las herramientas para registrar automáticamente las acciones del agente y las transferencias de paquetes.

from docimprint.crewai import DocImprintToolkit, ProvenanceTracker

tracker = ProvenanceTracker(client=toolkit.client)
trackable = toolkit.trackable_tools()

DocImprintKnowledgeSource se integra con el sistema de conocimiento de CrewAI para agentes con recuperación aumentada.


Servidor MCP

DocImprint expone un servidor MCP nativo para usar con Claude, Cursor y cualquier cliente compatible con MCP.

Instalación mediante Smithery (un solo comando):

npx @smithery/cli install docimprint --client claude

Configuración manual:

{
  "mcpServers": {
    "docimprint": {
      "type": "streamable-http",
      "url": "https://api.docimprint.com/mcp",
      "headers": {
        "Authorization": "Bearer dr_live_..."
      }
    }
  }
}

Transporte: streamable-http · Autenticación: token Bearer · Listado en Smithery · Listado en Glama

smithery badge

Herramientas MCP

Herramientas de URL: modo ligero, sin almacenamiento de paquete:

HerramientaDescripción
extract_urlObtener URL → texto + metadatos
summarize_urlObtener URL → resumen en prosa + puntos clave
qa_urlObtener URL → respuesta citada a una pregunta específica
translate_urlObtener URL → contenido traducido

Herramientas de documentos: acepta PDF en base64 o imagen:

HerramientaDescripción
extract_textOCR de texto plano desde PDF / imagen
extract_tablesOCR de tablas como Markdown desde PDF / imagen
parse_invoiceCampos estructurados de factura: comerciante, líneas de artículos, totales + citas
summarize_documentResumen en prosa + puntos clave citados
check_claimsVeredicto por reclamación con citas de evidencia
extract_structuredExtrae campos tipados usando un esquema definido por el llamador

Paquetes y colecciones:

HerramientaDescripción
verify_bundleVerificación de integridad criptográfica (devuelve recibo de acción firmado)
get_bundleMetadatos del paquete y estado de notarización (devuelve recibo)
notarize_bundleAtestación EAS en cadena en Base L2 (devuelve recibo)
list_receiptsLista recibos de acción firmados para un paquete
verify_action_receiptVerifica firma de recibo + vinculación de manifiesto
create_collectionCrea una colección de documentos con nombre
list_collectionsLista tus colecciones
add_document_to_collectionAñade paquete + activa indexación asíncrona (devuelve recibo)
search_collectionBúsqueda vectorial semántica
ask_collectionPreguntas y respuestas RAG entre documentos
get_job_statusConsulta trabajo asíncrono (extracción, indexación, lote)
get_quotaConsulta saldo de créditos y estado del plan

Indicaciones guiadas: claim_check_workflow · invoice_intake

Recurso: bundle://{bundle_id}: lee metadatos del paquete directamente


Referencia de API

Referencia tipada completa: docimprint.com/docs · OpenAPI

CategoríaMétodos
Núcleoextract, verify, download, notarize, deleteBundle
Enfocadosummarize, qa, translate, checkClaims, describe
Modos de extraccióninvoice, extract-structured, compare, store: false (ligero)
ColeccionescreateCollection, listCollections, addToCollection, searchCollection, askCollection
TrabajosgetJob, listJobs, getQuota

Manejo de errores

import { DocImprintClient, DocImprintError } from 'docimprint'

try {
  const result = await client.extract({ source: 'https://example.com/doc.pdf' })
} catch (err) {
  if (err instanceof DocImprintError) {
    console.error(err.message)    // human-readable error
    console.error(err.status)     // HTTP status code
    console.error(err.requestId)  // x-request-id for support
  }
}

Autenticación

Clave de API

Créditos mensuales mediante Stripe: regístrate en docimprint.com, plan gratuito disponible:

const client = new DocImprintClient({ apiKey: 'dr_live_...' })

Pagos x402 USDC

DocImprint admite el estándar abierto x402: paga por llamada en USDC en Base, directamente desde cualquier billetera EVM. Sin cuenta. Sin registro. Sin clave de API. Tu agente puede llamar a la API de forma autónoma sin credenciales gestionadas por humanos.

La API es nativa de x402: devuelve una respuesta estándar 402 Payment Required con detalles de pago en cadena, tu cliente liquida en USDC y la solicitud se completa automáticamente. Desde $0.01 / llamada.

Con @x402/fetch (manejo automático de pagos):

import { wrapFetchWithPayment } from '@x402/fetch'
import { createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { base } from 'viem/chains'

const account = privateKeyToAccount('0x...')
const wallet = createWalletClient({ account, chain: base, transport: http() })

const fetchWithPayment = wrapFetchWithPayment(fetch, wallet)

const res = await fetchWithPayment('https://api.docimprint.com/v1/summarize', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ source: 'https://example.com/report.pdf' }),
})
const data = await res.json()

Identidad en rutas de propietario: Para operaciones GET/DELETE que requieren propiedad (por ejemplo, obtener tu bundle), pasa el encabezado payment-signature de una respuesta de pago anterior para que la API pueda verificar tu dirección de wallet sin un inicio de sesión separado.


TypeScript

Todos los tipos de solicitud y respuesta se exportan:

import type {
  ExtractRequest,
  ExtractResponse,
  Citation,
  CitedField,
  InvoiceResult,
  Job,
  Collection,
  SearchResult,
} from 'docimprint'

Precios

Nivel gratuito disponible: no se requiere tarjeta de crédito. Planes de crédito mensuales a través de Stripe, o pago por llamada en USDC mediante x402. Ver precios →


Comunidad

Preguntas, integraciones y anuncios: Debates de GitHub.


Enlaces