DocImprint Document Intelligence
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DOCIMPRINT_API_KEY | Yes | Your DocImprint API key. Get one at https://docimprint.com |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| document.extract_textA | Extract plain text from a PDF or image (base64-encoded). Use when you need raw text for downstream AI analysis (summarization, claim checking, structured extraction). For documents at a public URL, use url.extract instead (no base64 encoding needed). Returns: { pages: number, text: string } Example prompts:
|
| document.extract_tablesA | Extract tables and forms as Markdown from a PDF or image (base64-encoded). Use when the document contains structured tabular data such as financial statements, data sheets, or forms. For plain prose documents, use document.extract_text instead. Returns: { pages: number, text: string } — text contains Markdown-formatted tables. Example prompts:
|
| document.parse_invoiceA | Parse a receipt or invoice document into structured fields. Uses a quality AI model for accuracy. Use when you need to extract line items, totals, and merchant info from financial documents. For general document text, use document.extract_text instead. Returns: { invoice: { merchant, date (YYYY-MM-DD), line_items[], subtotal, tax, total }, cited: { : { value, confidence: "high"|"medium"|"low", citations: [{ quote, paragraphs[] }] } } } Example prompts:
|
| document.check_claimsA | Verify a list of factual claims against document text. Uses a quality AI model with citation-level evidence. Use after document.extract_text or url.extract when you need to validate specific factual assertions. For open-ended questions about a document, use url.qa instead. For multi-document investigation, use collection.ask. Typical workflow: document.extract_text/url.extract → document.check_claims. Returns: { claims: [{ claim, status: "supported"|"contradicted"|"not_found", evidence: { quote, paragraphs[] }, confidence: "high"|"medium"|"low" }], truncated: boolean } Example prompts:
|
| document.extract_structuredA | Extract typed fields from document text using a caller-defined schema. Uses a quality AI model with retry logic. Use when you need specific data points from a document rather than full text. For invoices with known fields, document.parse_invoice (prebuilt schema) may be simpler. For general summarization, use document.summarize instead. Schema format: { "field_name": "type hint or description" } — e.g. { "contract_date": "ISO date", "party_a": "string", "penalty_usd": "number" }. Returns: { data: { : value }, data_cited: { : { value, confidence: "high"|"medium"|"low", citations: [{ quote, paragraphs[] }] } } } Example prompts:
|
| document.summarizeA | Summarize document text into a prose summary and key points with citations. Use after document.extract_text or url.extract when you need a condensed understanding of a long document. For single-sentence Q&A, use url.qa instead. For extracting specific fields, use document.extract_structured. Typical workflow: document.extract_text/url.extract → document.summarize. Returns: { summary: string, key_points: string[], summary_cited: { value, confidence, citations[] }, key_points_cited: [{ text, citations[] }], truncated: boolean, strategy: "full"|"truncated"|"chunked" } Example prompts:
|
| bundle.verifyA | Verify the cryptographic integrity of an evidence bundle (ev_...) owned by your API key. Checks manifest hash, EIP-191 signature, and R2 artifact hashes. Free — no credits consumed. Use when you need to confirm a bundle has not been tampered with. For quick metadata lookups (without full crypto verification), use bundle.get instead. Also returns a signed action receipt (rcpt_...) binding this verify call to the bundle manifest — list with receipt.list, verify with receipt.verify. Returns: { valid: boolean, bundle_id, manifest_sha256, checks: { status, manifest_hash, signature, artifacts: [{ name, ok }] }, tampered: string[], signer_address: string|null, attestation_tx: string|null, url: string, captured_at: string, receipt: ActionReceipt|null } Example prompts:
|
| collection.createA | Create a named document collection for cross-document semantic search and RAG-based Q&A. Free — no credits consumed. Use when you want to group related evidence bundles for unified search (collection.search) or question answering (collection.ask). NOTE: Collections start empty. Add evidence bundles with collection.add_document. Indexing is async — once complete, use collection.search or collection.ask. Returns: { collection_id: string (col_...), name: string } Example prompts:
|
| collection.searchA | Semantic (vector) search across documents in a collection. Returns ranked text chunks with relevance scores. Free — no credits consumed. Use when you need raw matching chunks from a collection. For a synthesized cited answer from the same context, use collection.ask instead. PREREQUISITE: Collection must be populated via collection.add_document and async indexing must complete (poll job.status) before results appear. Returns: { results: [{ bundle_id, chunk_id, text, score: number (0–1), title? }] } Example prompts:
|
| collection.askA | Answer a question using RAG over a document collection. Retrieves relevant chunks then synthesizes a cited answer with source attribution. Use when you need a direct answer grounded in your collection documents. For raw matching chunks (without synthesis), use collection.search instead. For single-document Q&A, use url.qa instead. PREREQUISITE: Collection must be populated via collection.add_document and indexed before results appear. Returns: { answer: string, sources: [{ bundle_id, chunk_id }], retrieval: [{ bundle_id, chunk_id, text, score }] } Example prompts:
|
| url.extractA | Fetch a public HTTPS URL and return extracted text and page metadata. Lean mode — no evidence bundle stored, no bundle_id returned. Use for raw text extraction from web pages and online documents. Use url.summarize for summaries, url.qa for Q&A, url.translate for translation, document.extract_text for base64 file uploads. Returns: { url, title, word_count, text, final_url (after redirects) } Example prompts:
|
| url.summarizeA | Fetch a public HTTPS URL and return a prose summary with key points. Lean mode — no bundle stored. Use when you need a condensed understanding of a web page. For raw text, use url.extract. For asking a specific question about a page, use url.qa. Returns: { url, summary, key_points: string[], truncated: boolean, word_count } Example prompts:
|
| url.qaA | Fetch a public HTTPS URL and answer a specific question about its content. Lean mode — no bundle stored. Use when you have a precise question about a web page. For a broad summary, use url.summarize. For multi-document Q&A, use collection.ask instead. Returns: { url, answer, answer_cited: { value, confidence, citations[] }, confidence: "high"|"medium"|"low", truncated } Example prompts:
|
| url.translateA | Fetch a public HTTPS URL and return its content translated into a target language. Lean mode — no bundle stored. Use when you need to understand web content in a different language. For extracting raw untranslated text, use url.extract instead. Returns: { url, translated_text, target_lang, truncated } Example prompts:
|
| bundle.getA | Retrieve metadata for an evidence bundle (ev_...) owned by your API key. Free — no credits consumed. Use for quick status/metadata lookups such as checking if a bundle is complete, finding its notarization status, or viewing retention/legal hold info. For deep cryptographic integrity verification (hash + signature + artifact checks), use bundle.verify instead. Also returns a signed action receipt (rcpt_...) binding this lookup to the bundle manifest — list with receipt.list, verify with receipt.verify. Returns: { bundle_id, source_url, mode, status: "pending"|"complete"|"failed", manifest_sha256, manifest_signature, signer_address, attestation_tx, attestation_at, eas_uid, parent_bundle_id, superseded_by, legal_hold: boolean, retention_until, created_at, receipt: ActionReceipt|null } Example prompts:
|
| bundle.notarizeA | Notarize an evidence bundle on-chain by writing its manifest SHA-256 to the blockchain (Base/EVM). Creates a permanent, tamper-evident on-chain record of the document fingerprint. If the bundle is already notarized, returns the existing attestation immediately (idempotent). Use when you need an immutable on-chain timestamp proving a document existed at a point in time. For quick integrity checks without on-chain cost, use bundle.verify instead. Also returns a signed action receipt (rcpt_...) binding this notarize call to the bundle manifest — list with receipt.list, verify with receipt.verify. PREREQUISITE: Bundle status must be "complete". Check status with bundle.get first. NOTE: Costs gas (ETH). The on-chain record is permanent and cannot be deleted even if the bundle is later purged. Returns: { bundle_id, attestation: { tx_hash, network, attested_at, key_id, eas_uid?, schema_uid? }, receipt: ActionReceipt|null } Example prompts:
|
| receipt.verifyA | Independently verify a signed action receipt (rcpt_...) returned by bundle.get, bundle.verify, bundle.notarize, collection.add_document, or listed via receipt.list. Free — no credits consumed. Proves both that the receipt signature is authentic AND that the manifest_sha256 it was bound to still matches the bundle's current manifest — i.e. that the action was not performed against a stale or since-superseded document. Use for third-party audit of an agent's prior actions. Returns: { receipt_id, valid: boolean, signature_valid: boolean, manifest_matches_current: boolean, bundle_id, agent_id, action, manifest_sha256, signer_address, signed_at, tampered: string[] } Example prompts:
|
| receipt.listA | List signed action receipts (rcpt_...) for an evidence bundle owned by your API key. Free — no credits consumed. Use after bundle.get, bundle.verify, bundle.notarize, or collection.add_document to audit which agent actions were bound to which manifest hash. Pass a receipt_id from the results to receipt.verify for independent signature + manifest-binding verification. Returns: { bundle_id, receipts: [{ receipt_id, bundle_id, agent_id, action, manifest_sha256, signed_at, signature, signer_address, key_id, algorithm }], limit, offset } Example prompts:
|
| job.statusA | Poll the status of an async job (extract, indexing, batch). Free — no credits consumed. Use after collection.add_document or async extract to check when processing completes. Poll this endpoint in a loop until status is "complete" or "failed". Completed jobs include the bundle_id or result_json in the response. Jobs are created when you POST /v1/extract with a webhook, or when collection.add_document triggers async indexing. Returns: { id, type: "extract"|"extract_batch"|"index_collection", status: "queued"|"processing"|"complete"|"failed"|"cancelled", progress_pct: number (0–100), progress_message, bundle_id (when complete), result_json (when complete), error (when failed), created_at, completed_at } Example prompts:
|
| collection.listA | List all document collections owned by your API key. Free — no credits consumed. Use before collection.search or collection.ask when you need the collection ID. Supports pagination with limit and offset. Returns: { collections: [{ id, name, created_at }] } Example prompts:
|
| collection.add_documentA | Add an evidence bundle to a collection and trigger async vector indexing. Use after collection.create to populate a collection with documents. Once indexed, documents become searchable via collection.search and collection.ask. Indexing is async — poll job.status with the returned job_id until status is "complete". Also returns a signed action receipt (rcpt_...) binding this add call to the bundle manifest — list with receipt.list, verify with receipt.verify. PREREQUISITE: Bundle must have status "complete" (check with bundle.get). Collection must be owned by your API key. Returns: { collection_id, bundle_id, job_id (poll for indexing completion), receipt: ActionReceipt|null } Example prompts:
|
| account.quotaA | Get current credit balance and plan details for your API key. Free — no credits consumed. Check this before running credit-consuming operations (extract, summarize, etc.) to avoid QUOTA_EXCEEDED errors. Returns plan tier, billing period, and usage breakdown. Returns: { plan_id, billing_period (YYYY-MM), credits_used, credits_limit, credits_remaining, status: "active"|"suspended" } Example prompts:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| claim_check_workflow | Workflow: extract URL text, then verify claims with citations. |
| invoice_intake | Workflow: parse an invoice document and extract structured fields. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sawftware-apps/docimprint-sdk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server