Flanj drift.flanj.io · daily contract watch

drift.flanj.io / servers / docimprint

Server sheet · api · anonymous

DocImprint docimprint

1 change event over 48 comparison days: 22 breaking, 12 warning and 0 info findings, each with the two contracts as served behind it.

watched since 2026-08-24 as of 2026-10-15 49 days observed 48 comparison days latest snapshot 2026-10-15

01 / the server

What the watch knows about it.

DocImprintoperator
apikind
anonymousauth posture
21tools listed
49days observed
2025-11-25MCP revision · floor, not ceiling
21 / 21outputSchema declared

Anonymous: the same call the watch makes, minus initialize. A server that answers “session required” insists on initialize first and is alive.

probe
curl -sS 'https://api.docimprint.com/mcp' -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -H 'mcp-protocol-version: 2025-06-18' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | sed -n 's/^data: //p; t; /^{/p' | jq '.result.tools[].name'

02 / event timeline — every event, expanded

1 change event, newest first.

2026-09-29 → 2026-09-30 22 breaking 12 warning 34 tools
12 description-changed12 operation-renamed10 operation-removedas served: 2026-09-29 → 2026-09-30on the index
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
account.quota
their contract · 2026-09-29
"account.quota"
their contract · 2026-09-30
absent
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
bundle.get
their contract · 2026-09-29
"bundle.get"
their contract · 2026-09-30
absent
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
bundle.notarize
their contract · 2026-09-29
"bundle.notarize"
their contract · 2026-09-30
"notarize_bundle"
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
bundle.verify
their contract · 2026-09-29
"bundle.verify"
their contract · 2026-09-30
"verify_bundle"
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
collection.add_document
their contract · 2026-09-29
"collection.add_document"
their contract · 2026-09-30
absent
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
collection.ask
their contract · 2026-09-29
"collection.ask"
their contract · 2026-09-30
absent
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
collection.create
their contract · 2026-09-29
"collection.create"
their contract · 2026-09-30
"create_collection"
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
collection.list
their contract · 2026-09-29
"collection.list"
their contract · 2026-09-30
"list_collections"
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
collection.search
their contract · 2026-09-29
"collection.search"
their contract · 2026-09-30
absent
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
create_collection description
[…] you want to group related evidence bundles for unified search (collection.search) (search_collection) or question answering (collection.ask). (ask_collection). NOTE: Collections start empty. Add evidence bundles with collection.add_document. add_document_to_collection. Indexing is async — once complete, use collection.search search_collection or collection.ask. ask_collection. Returns: { collection_id: string (col_...), name: string } Example prompts: […]
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
document.check_claims
their contract · 2026-09-29
"document.check_claims"
their contract · 2026-09-30
absent
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
document.extract_structured
their contract · 2026-09-29
"document.extract_structured"
their contract · 2026-09-30
absent
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
document.extract_tables
their contract · 2026-09-29
"document.extract_tables"
their contract · 2026-09-30
"extract_tables"
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
document.extract_text
their contract · 2026-09-29
"document.extract_text"
their contract · 2026-09-30
"extract_text"
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
document.parse_invoice
their contract · 2026-09-29
"document.parse_invoice"
their contract · 2026-09-30
"parse_invoice"
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
document.summarize
their contract · 2026-09-29
"document.summarize"
their contract · 2026-09-30
absent
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
extract_tables description
[…] statements, data sheets, or forms. For plain prose documents, use document.extract_text extract_text instead. Returns: { pages: number, text: string } — text […]
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
extract_text description
[…] checking, structured extraction). For documents at a public URL, use url.extract extract_url instead (no base64 encoding needed). Returns: { pages: number, text: […]
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
extract_url description
[…] raw text extraction from web pages and online documents. Use url.summarize summarize_url for summaries, url.qa qa_url for Q&A, url.translate translate_url for translation, document.extract_text extract_text for base64 file uploads. Returns: { url, title, word_count, text, […]
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
job.status
their contract · 2026-09-29
"job.status"
their contract · 2026-09-30
absent
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
list_collections description
[…] your API key. Free — no credits consumed. Use before collection.search search_collection or collection.ask ask_collection when you need the collection ID. Supports pagination with limit […]
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
notarize_bundle description
[…] in time. For quick integrity checks without on-chain cost, use bundle.verify verify_bundle 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 get_bundle first. NOTE: Costs gas (ETH). The on-chain record is permanent […] { bundle_id, attestation: { tx_hash, network, attested_at, key_id, eas_uid?, schema_uid? }, receipt: ActionReceipt|null } } Example prompts: - "Notarize bundle ev_550e8400 on-chain so I […]
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
parse_invoice description
[…] merchant info from financial documents. For general document text, use document.extract_text extract_text instead. Returns: { invoice: { merchant, date (YYYY-MM-DD), line_items[], subtotal, […]
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
qa_url description
[…] question about a web page. For a broad summary, use url.summarize. summarize_url. For multi-document Q&A, use collection.ask ask_collection instead. Returns: { url, answer, answer_cited: { value, confidence, citations[] […]
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-removed Every call to that tool now fails; an agent that learned it yesterday has nothing to call today. #
receipt.list
their contract · 2026-09-29
"receipt.list"
their contract · 2026-09-30
absent
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
receipt.verify
their contract · 2026-09-29
"receipt.verify"
their contract · 2026-09-30
"verify_action_receipt"
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
summarize_url description
[…] condensed understanding of a web page. For raw text, use url.extract. extract_url. For asking a specific question about a page, use url.qa. qa_url. Returns: { url, summary, key_points: string[], truncated: boolean, word_count } […]
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
translate_url description
[…] in a different language. For extracting raw untranslated text, use url.extract extract_url instead. Returns: { url, translated_text, target_lang, truncated } Example prompts: […]
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
url.extract
their contract · 2026-09-29
"url.extract"
their contract · 2026-09-30
"extract_url"
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
url.qa
their contract · 2026-09-29
"url.qa"
their contract · 2026-09-30
"qa_url"
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
url.summarize
their contract · 2026-09-29
"url.summarize"
their contract · 2026-09-30
"summarize_url"
as served: 2026-09-29 → 2026-09-30
breaking catalog operation-renamed Callers using the old name fail until they are updated; the capability itself is still there. #
url.translate
their contract · 2026-09-29
"url.translate"
their contract · 2026-09-30
"translate_url"
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
verify_action_receipt description
Independently verify a signed action receipt (rcpt_...) returned by bundle.get, bundle.verify, bundle.notarize, collection.add_document, get_bundle, verify_bundle, notarize_bundle, or listed via receipt.list. add_document_to_collection. Free — no credits consumed. Proves both that the receipt […]
as served: 2026-09-29 → 2026-09-30
warning wording description-changed The wording an agent reads to choose and call the tool changed; its behaviour may or may not have. #
verify_bundle description
[…] with. For quick metadata lookups (without full crypto verification), use bundle.get get_bundle 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, […] }, tampered: string[], signer_address: string|null, attestation_tx: string|null, url: string, captured_at: string, receipt: ActionReceipt|null string } Example prompts: - "Verify the cryptographic integrity of bundle […]
as served: 2026-09-29 → 2026-09-30

03 / tool inventory · as served on 2026-10-15

21 tools in the latest contract.

From the snapshot as served; descriptions shortened to their first sentence. “Changes” counts this server’s findings on the tool.

Tools in the latest snapshot with their input property counts, outputSchema declaration and finding counts
ToolDescriptionInputsRequiredoutputSchemaAnnotationsChanges
add_document_to_collection Add an evidence bundle to a collection and trigger async vector indexing. 3 2 declared idempotent 0
ask_collection Answer a question using RAG over a document collection. 3 2 declared readOnly · idempotent 0
check_claims Verify a list of factual claims against document text. 3 2 declared readOnly · idempotent 0
create_collection Create a named document collection for cross-document semantic search and RAG-based Q&A. 1 1 declared 1
extract_structured Extract typed fields from document text using a caller-defined schema. 3 2 declared readOnly · idempotent 0
extract_tables Extract tables and forms as Markdown from a PDF or image (base64-encoded). 2 2 declared readOnly · idempotent 1
extract_text Extract plain text from a PDF or image (base64-encoded). 2 2 declared readOnly · idempotent 1
extract_url Fetch a public HTTPS URL and return extracted text and page metadata. 1 1 declared readOnly · openWorld 1
get_bundle Retrieve metadata for an evidence bundle (ev_...) owned by your API key. 1 1 declared readOnly · idempotent 0
get_job_status Poll the status of an async job (extract, indexing, batch). 1 1 declared readOnly · idempotent 0
get_quota Get current credit balance and plan details for your API key. 0 0 declared readOnly · idempotent 0
list_collections List all document collections owned by your API key. 2 0 declared readOnly · idempotent 1
notarize_bundle Notarize an evidence bundle on-chain by writing its manifest SHA-256 to the blockchain (Base/EVM). 1 1 declared idempotent 1
parse_invoice Parse a receipt or invoice document into structured fields. 2 2 declared readOnly · idempotent 1
qa_url Fetch a public HTTPS URL and answer a specific question about its content. 3 2 declared readOnly · openWorld 1
search_collection Semantic (vector) search across documents in a collection. 3 2 declared readOnly · idempotent 0
summarize_document Summarize document text into a prose summary and key points with citations. 2 1 declared readOnly · idempotent 0
summarize_url Fetch a public HTTPS URL and return a prose summary with key points. 2 1 declared readOnly · openWorld 1
translate_url Fetch a public HTTPS URL and return its content translated into a target language. 3 2 declared readOnly · openWorld 1
verify_action_receipt Independently verify a signed action receipt (rcpt_...) returned by get_bundle, verify_bundle, notarize_bundle, or add_document_to_collection. 1 1 declared readOnly · idempotent 1
verify_bundle Verify the cryptographic integrity of an evidence bundle (ev_...) owned by your API key. 1 1 declared readOnly · idempotent 1