{"apiVersion":"v1","directorySlug":"doc-cheap-mcp","title":"doc.cheap – passport and ID OCR","description":"Read passports, national ID cards and driver's licences into structured JSON from any MCP client. Six tools: scan_document (an image as base64 or a public https URL in; the holder, the document, every field with a confidence band and the MRZ with its check-digit verdict out), check_balance, search_docs, and list_scans, get_scan and delete_scan to find, read back and delete stored results, plus four prompts and the full API docs as resources. Works without a key on the public sandbox allowance; with your own doc.cheap key: Free – 100 documents every month, then $0.01 per recognised document, and a failed scan costs nothing. Source (MIT): https://gitlab.com/doccheap/ocr-mcp","pageUrl":"https://www.mcpbundles.com/skills/doc-cheap-mcp","connectPath":"managed","connectAction":"connect_now","catalogListing":true,"bundleSlug":"doc-cheap-mcp","listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.doc.cheap/mcp","hostedMcpUrl":"https://mcp.mcpbundles.com/bundle/doc-cheap-mcp","toolCount":6,"toolInventoryStatus":"observed","refreshedAt":"2026-11-10T18:04:08.356504+00:00","registryName":"com.mcpbundles/doc-cheap-mcp","registryVersion":"2026.11.10","registryEligible":true,"tools":[{"name":"scan_document","description":"Recognise a passport, national ID card or driver's licence from a photo or scan and return what is printed on it as structured JSON. Inputs: the image as image_base64 or image_url (https, on a public address); plus the optional expect_country, return_portrait, retain_hours, reference and idempotency_key. Output: a Scan object – meta (id, status, billed, confidence, timing), document (kind, issuing country, number, series, date of issue, date of expiry, whether it has expired and how many days ar","inputSchema":{"type":"object","properties":{}},"title":"Recognise a passport or ID document","logicalName":"scan_document","displayName":"Recognise a passport or ID document","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"check_balance","description":"Return how many credits are left on the account and what 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 down by status (recognized, unreadable, no document found, unsupported document, rejected). Takes no arguments and calls GET /v1/usage; under the public sandbox key it answers without calling anything. One recognised document draws one credit, at $0.01; scans tha","inputSchema":{"type":"object","properties":{}},"title":"Check remaining credits","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"check_balance","displayName":"Check remaining credits"},{"name":"search_docs","description":"Full-text search over the doc.cheap API documentation – endpoints, request options, every response field, the error codes and what to do about each, MRZ rules, retention and pricing. Takes a query and an optional limit (1 to 20, default 5), and answers with the matching sections: title, a snippet, and a link to the page. It reads a copy of the documentation shipped beside this server, so it makes no network call and works offline. Use it before guessing at a field name, an error code or a scan o","inputSchema":{"type":"object","properties":{}},"title":"Search the doc.cheap API documentation","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"search_docs","displayName":"Search the doc.cheap API documentation"},{"name":"list_scans","description":"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 g","inputSchema":{"type":"object","properties":{}},"title":"List stored scans","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_scans","displayName":"List stored scans"},{"name":"get_scan","description":"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","inputSchema":{"type":"object","properties":{}},"title":"Fetch a stored scan","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_scan","displayName":"Fetch a stored scan"},{"name":"delete_scan","description":"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","inputSchema":{"type":"object","properties":{}},"title":"Delete a stored scan","logicalName":"delete_scan","displayName":"Delete a stored scan","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=doc-cheap-passport-and-ID-OCR&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AubWNwYnVuZGxlcy5jb20vYnVuZGxlL2RvYy1jaGVhcC1tY3AifQ%3D%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22doc-cheap-passport-and-ID-OCR%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.mcpbundles.com%2Fbundle%2Fdoc-cheap-mcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22doc-cheap-passport-and-ID-OCR%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.mcpbundles.com%2Fbundle%2Fdoc-cheap-mcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=doc.cheap+%E2%80%93+passport+and+ID+OCR&connectorUrl=https%3A%2F%2Fmcp.mcpbundles.com%2Fbundle%2Fdoc-cheap-mcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"doc-cheap-passport-and-ID-OCR\" --url \"https://mcp.mcpbundles.com/bundle/doc-cheap-mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/doc-cheap-mcp","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/doc-cheap-mcp/tools/{tool}","mcpServerUrl":"https://mcp.mcpbundles.com/bundle/doc-cheap-mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/doc-cheap-mcp?live=1"}