mcp
Server Details
Passport, ID and MRZ recognition through the doc.cheap API — $0.01 per document
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool addresses a clearly separate concern: checking credit usage, scanning an identity document, and searching API documentation. There is no overlap or ambiguity between them.
All three names follow a verb_noun pattern: check_balance, scan_document, search_docs. The only minor inconsistency is 'document' versus the abbreviated 'docs', but the pattern is otherwise uniform and predictable.
Three tools is small but well-scoped for this server's purpose: perform a scan, check account balance, and search documentation. Each tool earns its place and there is no bloat.
The tool surface covers the full intended workflow for the domain: scanning identity documents, verifying available credits before/during batch work, and looking up API details to handle errors and fields. There are no obvious dead ends or missing lifecycle operations.
Available Tools
3 toolscheck_balanceCheck remaining creditsARead-onlyInspect
Return how many credits are left on the account and what the current period has used: the balance, 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. One recognised document draws one credit, at $0.01; scans that recognised nothing are counted and never charged. Needs a real API key — under the public sandbox key there is no account behind the call, and the answer says so instead of reporting zeros that read like a balance. Use it before working through a batch of documents, or when a scan is refused for lack of credit.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and openWorldHint=true, and the description adds meaningful behavior beyond that: it calls GET /v1/usage, takes no arguments, and crucially explains that under the sandbox key the answer explicitly says there is no account rather than returning misleading zeros. It also explains the credit pricing model, which helps interpret the returned counters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than strictly necessary, but every sentence adds value: return fields, endpoint, credit economics, sandbox caveat, and usage timing. It is front-loaded with the main answer and ends with practical guidance. The density is justified by the behavioral nuance around sandbox mode.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains what the tool returns (balance, credits spent, scan counters by status) and the edge case of the sandbox key. It also provides pricing context and when to use the tool. An agent has enough information to select and invoke this tool correctly without external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so no parameter documentation is required. The description explicitly states 'Takes no arguments', which reinforces the empty schema and removes any ambiguity about implicit inputs. This meets the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Return how many credits are left on the account and what the current period has used', followed by the exact data points returned. It is clearly distinct from sibling tools scan_document and search_docs, which handle document scanning and searching rather than account usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use it before working through a batch of documents, or when a scan is refused for lack of credit.' It also warns about the public sandbox key, telling the agent when the tool will not behave as a real balance readout. This is actionable guidance, though it does not name alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_documentRecognise a passport or ID documentAIdempotentInspect
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 are left), holder (given names, surname, date of birth, sex, nationality), fields (every field read off the printed page, each with its own confidence), mrz (whether the machine-readable zone checks out, why not when it does not, and its lines exactly as read), images, quality and authenticity — plus a one-line summary of the same result. Calls POST /v1/scans. Cost: it bills one credit ($0.01) only when a document is recognised; an unreadable image, an empty frame or an unsupported type costs nothing, and meta.billed says which happened. The public sandbox key gives 10 free recognitions. Use it whenever someone hands over an identity document and wants it read, transcribed, or checked against what they claim — a name, a document number, a date of birth or an expiry date.
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | No | https: URL of an image on a public internet address, which the server fetches (25 MB maximum). | |
| reference | No | Your own correlation string, echoed back in the result. | |
| image_base64 | No | The document image as base64 (a data: URL is also accepted). | |
| retain_hours | No | Hours the result stays readable via GET /v1/scans/{id} (0 = store nothing). Omit it to use the account's own history-retention setting. | |
| expect_country | No | ISO 3166-1 alpha-3 country you expect, or omit for any. | |
| idempotency_key | No | Makes a retried scan return the first result instead of charging again. | |
| return_portrait | No | Whether to include the holder photograph crop, images.main_photo (default true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: it calls POST /v1/scans, bills one credit only on successful recognition, charges nothing for unreadable images, returns meta.billed to indicate what happened, exposes a sandbox key with 10 free recognitions, and explains idempotency semantics. These add real value beyond the idempotentHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place: it covers inputs, outputs, endpoint, billing, sandbox credits, and use cases in a structured, front-loaded way. It could be tightened slightly, but nothing feels redundant or redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully elaborates the returned Scan object by enumerating meta, document, holder, fields, mrz, images, quality, authenticity, and the one-line summary. Combined with endpoint, cost model and sandbox details, nothing critical is missing for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter already has detailed documentation. The description summarizes the parameter names and adds helpful context like image_url requiring a public https address, but does not add substantial meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: '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.' It names exactly the accepted inputs and the classes of documents covered, and it clearly distinguishes itself from the unrelated sibling tools by scoping it to identity documents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use it whenever someone hands over an identity document and wants it read, transcribed, or checked against what they claim.' It does not need to name alternatives since the sibling tools are unrelated, though it stops short of saying when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsSearch the doc.cheap API documentationARead-onlyInspect
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 option — what it returns is the published contract rather than a recollection of it.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (default 5). | |
| query | Yes | What to search the documentation for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true annotation, the description discloses a meaningful behavioral trait: it searches a local copy of the documentation, makes no network call, and works offline. It also explains the result shape (title, snippet, link), which is valuable since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: purpose and coverage in the first, parameter and result specifics in the second, offline behavior in the third, and actionable usage guidance in the fourth. The key facts are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with only two simple parameters, the description fully covers what the tool searches, how to call it, what it returns, and when to use it. The absence of an output schema is compensated by the explicit mention of title, snippet, and link in the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in the schema. The description restates the limit range (1 to 20, default 5) and the query's role, but adds no genuinely new semantic meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Full-text search over the doc.cheap API documentation.' It further scopes the content (endpoints, fields, error codes, MRZ rules, pricing), clearly distinguishing this search tool from the sibling operational tools check_balance and scan_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Use it before guessing at a field name, an error code or a scan option.' It also clarifies that results are the published contract, reinforcing reliability. It does not explicitly name alternatives or state when not to use it, but the sibling tools make the distinction obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
check_balance - First observed
scan_document - First observed
search_docs
Related MCP Connectors
ImagePay MCP: 40 x402 paid API tools (OCR, PDF, image, QR, tabular, web). Pay per call on Base.
Extract, search and tag any document: invoices, receipts, contracts, templates. OAuth or API key.
Turn PDFs and images into typed fields — invoices, receipts, IDs and custom models — via Mindee OCR.
- DatanemOAuthcom.datanem
Turn PDFs, scans and photos into a queryable database. Invoices, CVs, receipts, in bulk.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to recognize passports, national ID cards, and driver's licenses from images and return the printed fields, MRZ data, and authenticity results as structured JSON.MIT

DocumentPro MCPofficial
AlicenseNot gradedqualityCmaintenanceExtract structured, schema-typed data from invoices, purchase orders, receipts, and tax forms, and classify documents into custom label sets — via a hosted MCP server. Free tier included.MIT- AlicenseNot gradedqualityBmaintenanceTag, rename, and enrich any PDF or image. One MCP call. Free tier: 1,500 tags/month, no credit card.1MIT
- AlicenseAqualityCmaintenanceMCP server for document intelligence via x402 micropayments. 6 tools: document analysis, invoice extraction, screenshot data, alt text, PII detection, sentiment analysis. Pay-per-use with USDC on Base — no API keys needed.61 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.