DocImprint Document Intelligence

Inteligência documental verificável para agentes de IA.

Documentação

DocImprint

Agentes de memória de documentos podem comprovar.
PDFs & URLs → respostas citadas · pacotes de evidências · atestação on-chain

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


Sumário


Visão geral

O DocImprint transforma qualquer PDF ou URL em um pacote de evidências à prova de adulteração — dados estruturados, respostas citadas por IA e uma prova criptográfica que seus agentes podem verificar de forma independente.

EntradaPDF ou URL
Saídaev_... pacote de evidências — respostas citadas, hashes de artefatos, assinatura EIP-191
Verificarclient.verify() — gratuito, sem autenticação; notarização opcional na Base L2 via EAS

Escolha sua integração

CaminhoMelhor paraComece aqui
SDK TypeScriptAgentes Node, aplicativos tipadosInício rápido
SDK PythonCrewAI, scriptsInício rápido · CrewAI
Servidor MCPClaude, CursorServidor MCP
x402 USDCAgentes autônomos, sem contaPagamentos x402 USDC

Veja o que você obtém

Toda resposta inclui um ID de pacote verificável, hash de manifesto e respostas citadas vinculadas a citações exatas da fonte.

{
  "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


Como 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 que não apenas OCR ou RAG?

OCR simplesRAG vetorialDocImprint
Citações exatas da fonteNãoAproximadoSim, com referências de parágrafo
Prova de adulteraçãoNãoNãoManifesto SHA-256 + assinatura EIP-191
Verificação independenteNãoNãoverify() sem chave de API
Atestação on-chainNãoNãoEAS na Base L2
Trilha de auditoria do agenteNãoNãoProveniência + transferência (Python)

Casos de uso

CenárioMétodoResultado
Perguntas e respostas sobre contratosclient.qa()Resposta citada com pontuação de confiança
Verificação de reivindicaçõesclient.checkClaims()Veredito por reivindicação: supported / contradicted / not_found
Processamento de faturasclient.extract({ mode: 'invoice' })Comerciante estruturado, itens de linha, totais — tudo citado
Arquivo de conformidadelegal_hold: true + notarize()Registro on-chain imutável, exclusão bloqueada

Instalação

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

O código-fonte Python está em python/. PyPI: docimprint.


Início rápido

Obtenha uma chave de API em docimprint.com — plano gratuito disponível, sem necessidade de cartão 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"]}'

Exemplos

Demos executáveis que mostram toda a história da prova — verificação de reivindicações com citações, um pacote de evidências armazenado e um recibo de ação assinado:

# 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

Consulte examples/README.md para ambas as linguagens e o que cada artefato comprova.


Recursos

CapacidadeMétodo / ModoDescrição
Extrairextract()Pacote completo de evidências — markdown, resumo, pontos-chave citados, artefatos, manifesto SHA-256
Análise de faturasmode: 'invoice'InvoiceResult estruturado: comerciante, data, itens de linha, subtotal, impostos, total — tudo com citações
Comparação de documentosmode: 'compare'Compare dois documentos; forneça previous_bundle_id para rastrear alterações
Extração estruturadamode: 'extract-structured'Extraia campos tipados usando um JSON Schema definido pelo chamador
Resumirsummarize()Resumo em prosa + pontos-chave, cada um com referências de parágrafo citadas
Perguntas e respostasqa()Resposta a uma única pergunta com citações inline e pontuação de confiança
Verificação de reivindicaçõescheckClaims()Veredito por reivindicação: supported / contradicted / not_found com citações de evidências
Traduzirtranslate()Tradução com citações da fonte para qualquer idioma
Descreverdescribe()Descrição por IA do conteúdo de imagens ou páginas de PDF
ColeçõescreateCollection() + searchCollection() + askCollection()Busca semântica + perguntas e respostas RAG entre documentos em vários pacotes
Verificarverify()Verificação de integridade criptográfica — hash do manifesto, assinatura EIP-191, hashes de artefatos. Gratuito, sem autenticação
Notarizarnotarize()Grava o SHA-256 do manifesto na Base L2 via EAS — atestação permanente e imutável
Servidor MCP20 ferramentas · 2 promptsMCP nativo para Claude, Cursor e qualquer cliente compatível com MCP
x402Cabeçalho REST X-PaymentPague por chamada em USDC — sem necessidade de conta

Por que DocImprint?

  • 🔏 Proveniência criptográfica — todo pacote é assinado com EIP-191 na criação; opcionalmente notarizado na Base L2 via EAS para uma trilha de auditoria on-chain imutável
  • 🤖 Nativo para agentes por design — trabalhos assíncronos, webhooks, chaves de idempotência e retenção legal integrados a cada solicitação, não adicionados posteriormente
  • 📎 Além do OCR — citações carregam citações exatas, índices de parágrafo e pontuações de confiança (high/medium/low), não apenas texto bruto
  • 🛠️ 10 ferramentas CrewAI prontas — research_tools(), legal_tools(), collection_tools() pré-agrupadas para fluxos de trabalho comuns de agentes
  • ⚖️ Pronto para conformidade — legal_hold, registro de proveniência, rastreamento de transferência multiagente e notarização on-chain projetados para indústrias reguladas e jurídicas
  • 💳 Pagamento flexível — planos mensais de crédito ou pagamento por chamada em USDC via x402, sem necessidade de conta

Recursos nativos para agentes

O DocImprint é projetado para fluxos de trabalho de agentes autônomos, não apenas chamadas síncronas de API.

// 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: proveniência e rastreamento de transferência multiagente

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")

Integração com CrewAI

10 ferramentas específicas para agentes CrewAI, organizadas em 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
FerramentaO que faz
ExtractEvidenceToolPacote completo de evidências com citações e hash de manifesto
SummarizeToolPontos-chave com referências de parágrafo citadas
QAToolResposta citada com pontuação de confiança
CheckClaimsToolVeredito por reivindicação: apoiada / contradita / não_encontrada
TranslateToolTradução com citações da fonte
VerifyBundleToolVerificação de integridade criptográfica — manifesto, hash, assinatura
NotarizeToolAtestação EAS on-chain na Base L2
SearchCollectionToolBusca vetorial semântica na coleção de documentos
AskCollectionToolPerguntas e respostas RAG entre documentos com fontes citadas
AddToCollectionToolAdiciona pacote à coleção e aciona indexação assíncrona

ProvenanceTracker envolve todas as ferramentas para registrar automaticamente ações de agentes e transferências de pacotes.

from docimprint.crewai import DocImprintToolkit, ProvenanceTracker

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

DocImprintKnowledgeSource integra-se ao sistema de conhecimento do CrewAI para agentes com recuperação aumentada.


Servidor MCP

O DocImprint expõe um servidor MCP nativo para uso com Claude, Cursor e qualquer cliente compatível com MCP.

Instalação via Smithery (um comando):

npx @smithery/cli install docimprint --client claude

Configuração manual:

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

Transporte: streamable-http · Autenticação: token Bearer · Listado no Smithery · Listado no Glama

smithery badge

Ferramentas MCP

Ferramentas de URL — modo enxuto, sem armazenamento de pacote:

FerramentaDescrição
extract_urlBuscar URL → texto + metadados
summarize_urlBuscar URL → resumo em prosa + pontos-chave
qa_urlBuscar URL → resposta citada a uma pergunta específica
translate_urlBuscar URL → conteúdo traduzido

Ferramentas de documento — aceita PDF em base64 ou imagem:

FerramentaDescrição
extract_textOCR de texto simples de PDF / imagem
extract_tablesOCR de tabelas como Markdown de PDF / imagem
parse_invoiceCampos estruturados de fatura: comerciante, itens de linha, totais + citações
summarize_documentResumo em prosa + pontos-chave citados
check_claimsVeredito por reivindicação com citações de evidências
extract_structuredExtrai campos tipados usando um esquema definido pelo chamador

Pacotes e coleções:

FerramentaDescrição
verify_bundleVerificação de integridade criptográfica (retorna recibo de ação assinado)
get_bundleMetadados do pacote e status de notarização (retorna recibo)
notarize_bundleAtestação EAS on-chain na Base L2 (retorna recibo)
list_receiptsLista recibos de ação assinados para um pacote
verify_action_receiptVerifica assinatura do recibo + vínculo com o manifesto
create_collectionCria uma coleção de documentos nomeada
list_collectionsLista suas coleções
add_document_to_collectionAdiciona pacote + aciona indexação assíncrona (retorna recibo)
search_collectionBusca vetorial semântica
ask_collectionPerguntas e respostas RAG entre documentos
get_job_statusConsulta trabalho assíncrono (extração, indexação, lote)
get_quotaVerifica saldo de créditos e status do plano

Prompts guiados: claim_check_workflow · invoice_intake

Recurso: bundle://{bundle_id} — lê metadados do pacote diretamente


Referência da API

Referência tipada completa: docimprint.com/docs · OpenAPI

CategoriaMétodos
Núcleoextract, verify, download, notarize, deleteBundle
Focadosummarize, qa, translate, checkClaims, describe
Modos de extraçãoinvoice, extract-structured, compare, store: false (enxuto)
ColeçõescreateCollection, listCollections, addToCollection, searchCollection, askCollection
TrabalhosgetJob, listJobs, getQuota

Tratamento de erros

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
  }
}

Autenticação

Chave de API

Créditos mensais via Stripe — cadastre-se em docimprint.com, plano gratuito disponível:

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

Pagamentos x402 USDC

O DocImprint suporta o padrão aberto x402 — pague por chamada em USDC na Base, diretamente de qualquer carteira EVM. Sem conta. Sem cadastro. Sem chave de API. Seu agente pode chamar a API autonomamente sem credenciais gerenciadas por humanos.

A API é nativa x402: retorna uma resposta padrão 402 Payment Required com detalhes de pagamento on-chain, seu cliente liquida em USDC e a solicitação é concluída automaticamente. A partir de $0,01 / chamada.

Com @x402/fetch (tratamento automático de pagamento):

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()

Identidade em rotas de proprietário: Para operações GET/DELETE que exigem propriedade (por exemplo, recuperar seu pacote), envie o cabeçalho payment-signature de uma resposta de pagamento anterior para que a API possa verificar seu endereço de carteira sem um login separado.


TypeScript

Todos os tipos de requisição e resposta são exportados:

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

Preços

Camada gratuita disponível — sem necessidade de cartão de crédito. Planos de crédito mensais via Stripe, ou pague por chamada em USDC via x402. Ver preços →


Comunidade

Perguntas, integrações e anúncios: Discussões no GitHub.


Links