Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "get_scan" and "scan_document"
⟨787 unchanged words⟩ language this reading was made in, e.g.`Greek`;`Greek`.nullThefordefault Latin-script reading – theneutral,document'stransliteratedown Latinreading.page and the machine-readable zone, `id` suffix `@0` – is `English`. Null only on `days_to_expire`, a number computed from the expiry date rather than text read in any language.","example":"Greek","type":[" ⟨17 unchanged words⟩ value of this reading: the national-script spellingwhenon`language`anamesnational-scriptonereading, the transliterated Latin valueotherwise.on the default reading (the one whose `id` carries the identifier `0`). Null when the field is empty.","type ⟨1371 unchanged words⟩
⟨787 unchanged words⟩ language this reading was made in, e.g.`Greek`;`Greek`.nullThefordefault Latin-script reading – theneutral,document'stransliteratedown Latinreading.page and the machine-readable zone, `id` suffix `@0` – is `English`. Null only on `days_to_expire`, a number computed from the expiry date rather than text read in any language.","example":"Greek","type":[" ⟨17 unchanged words⟩ value of this reading: the national-script spellingwhenon`language`anamesnational-scriptonereading
Added "delete_scan", "get_scan" and "list_scans" (3 tools before, 6 now)
Delete a stored scan — Permanently delete one stored scan now, before its retention window would end. This cannot be undone: the stored result, its history row and its thumbnail are removed, and the scan can no longer be listed, fetched or replayed through its idempotency_key. The credit it drew is not refunded, and this period's usage counters still count it. Input: scan_id – meta.id of a scan_document result, or id of a list_scans row. Output: { id, deleted: true }. Calls DELETE /v1/scans/{id}. Only scans made with a live key under a non-zero retention window are stored, and only until that window ends (retain_ho…
Fetch a stored scan — Fetch the full result of one stored scan by its id, as it was returned when the document was recognised. Input: scan_id – meta.id of a scan_document result, or id of a list_scans row. Output: the same Scan object scan_document returns (meta, document, holder, fields, mrz and the rest) plus a one-line summary, with two differences: the image crops are never stored, so every images slot is null, and quality reads not_checked. Calls GET /v1/scans/{id}; it never re-runs recognition and never charges a credit. Only scans made with a live key under a non-zero retention window are stored, and only u…
List stored scans — List the account's stored scans, most recent first, one page at a time. Inputs: the optional limit (1 to 100 rows, default 20) and cursor (the next_cursor of the previous page; omit it for the first page). Output: scans – one row per scan with id, status (recognized, unreadable, no_document_found, unsupported_document or rejected), billed, duration_ms, reference (your own string from the scan) and created_at – and next_cursor, which is null on the last page. A row holds no extracted data; call get_scan with its id for the full result. Calls GET /v1/scans; it never charges a credit. Only scans…
Changed the definition of "check_balance" and "scan_document"
⟨11 unchanged words⟩ the current period has used: the balance, split into this month's free credits (100 every month, drawn first) and the paid credits, the credits spent, and the scan counters broken ⟨97 unchanged words⟩
⟨16 unchanged words⟩ ,"description":"Credits currently available to theaccount;account: this month's free credits plus the paid credits; null forkeysawithoutkeyawith
Certificate recorded, valid to 2026-12-10
Authorization not required
Changed the definition of "check_balance"
⟨38 unchanged words⟩ "minimum":0,"type":"integer"},"credits_spent_by_kind":{"additionalProperties":false,"description":"Credits charged within the period, by the kind that paid.","properties":{"free":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paid":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["free","paid"],"type":"object"},"free_allowance":{"anyOf":[{"additionalProperties":false,"properties":{"monthly_credits":{"description":"Free credits the account receives each UTC calendar month.","maximum":9007199254740991,"minimum":0,"type":"integer"},"remaining_credits":{"description":"Free credits left this month.","maximum":9007199254740991,"minimum":0,"type":"integer"},"resets_at":{"anyOf":[{"format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$","type":"string"},{"type":"null"}],"description":"When the free credits are next set back to the monthly amount (00:00 UTC on the first of the next month); null when there is no next monthly amount."}},"required":["monthly_credits","remaining_credits","resets_at"],"type":"object"},{"type":"null"}],"description":"This month's free credits, drawn before paid credits; null when the key's account has no free credits this month."},"paid_balance_credits":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Credits bought or granted to the account, which never reset; null when the account's credits are not split into free and paid."},"period":{"additionalProperties":false,"description":"
Unknown → Live
First tool surface recorded: 3 tools (server version 0.3.5)
https://mcp.doc.cheap/mcp (mcp_streamable_http) — from mcp_registry
npm:@doc-cheap/mcp (package_npm) — from mcp_registry, with the record
Showing the latest 10 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨191 unchanged words⟩ an hour, whatever their answer. Registering gives20100 freecredits.documents every month. Use it whenever someone hands over an identity ⟨26 unchanged words⟩