Capture invoices, receipts, IDs and bank statements with Doxis AI.dp; split, render, convert files. Hosted by usefulapi — connect from Claude, Cursor, or any MCP client.
Team and Enterprise: an Owner adds the connector for the organization first.
Run this command, then run /mcp in Claude Code to log in:
Add to Cursor or add this to ~/.cursor/mcp.json:
{
"mcpServers": {
"klippa-dochorizon": {
"url": "https://klippa-dochorizon.usefulapi.io/mcp"
}
}
}Add to VS Code or add this to .vscode/mcp.json:
{
"servers": {
"klippa-dochorizon": {
"type": "http",
"url": "https://klippa-dochorizon.usefulapi.io/mcp"
}
}
}Other MCP clients (Windsurf, Cline, Zed and more): add the URL as a remote MCP server (Streamable HTTP). The client then opens the login page in your browser. Do not add an Authorization header: see Before you connect.
The login page asks for your Doxis AI.dp API key and Hosting region.
Find the key in the Doxis AI.dp platform (dochorizon.klippa.com) under Settings → Project → API → Credentials. A new account gets EUR 25 of free credit. Keys belong to one project; if you restricted the credential to certain IP addresses, remove that restriction (this server calls from shared Cloudflare addresses). Choose Germany only if your project was created in the Germany region. Identity, bank statement and salary slip captures return personal data to your AI client; documents are processed by Doxis AI.dp under your project's data-retention settings. Your key is used only to call the Doxis AI.dp API on your behalf; it is never shown to anyone.
Add only the URL. Do not add an Authorization header or an API key to the client config. The server signs you in with OAuth: the login page asks for your Doxis AI.dp API key and Hosting region. If the config has such a header, remove it: some clients then send that header instead of the login token, and every call fails with 401.
| Tool | Type | What it does |
|---|---|---|
dochorizon_get_key_info | read | Get API key info Check the connected Doxis AI.dp (Klippa DocHorizon) API key: organization, project, credential id, and the services enabled for it. Does not process a document and costs nothing. GET /auth/v1/info. |
dochorizon_list_models | read | List enabled capturing models List the document capturing models enabled for this project (financial, identity, bank statement, salary slip, generic, e-invoice, ...). Does not process a document; normally not billed. GET /document_capturing/v1/enabled_models. |
dochorizon_list_configurations | read | List capturing configurations List the capturing configurations of a model (name, slug and the enabled components). Pass a slug as configuration_slug to a capture tool to choose which fields are extracted. Does not process a document; normally not billed. GET /document_capturing/v1/{model}/configurations. |
dochorizon_get_model_schema | read | Get a model's JSON schema The JSON schema of what a capturing model returns (every field it can extract), optionally for one configuration. Does not process a document; normally not billed. GET /document_capturing/v1/{model}/schema or /{model}/configurations/{slug}/schema. |
dochorizon_list_prompt_configurations | read | List Prompt Builder configurations List the Prompt Builder (LLM extraction) configurations of the project: name and slug. Does not process a document; normally not billed. GET /document_capturing/v1/prompt_builder/configurations. |
dochorizon_get_prompt_schema | read | Get a Prompt Builder JSON schema The JSON schema of the output of one Prompt Builder configuration. Does not process a document; normally not billed. GET /document_capturing/v1/prompt_builder/configurations/{slug}/schema. |
dochorizon_capture_financial | write | Capture an invoice or receipt SPENDS CREDITS: extract structured data from an invoice, receipt or other financial document with the Financial model: merchant and customer, dates, totals, VAT, line items, payment details, currency, and more (as the chosen configuration enables). Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). Synchronous; for long documents use dochorizon_submit_async_capture. POST /document_capturing/v1/financial. |
dochorizon_capture_identity | write | Capture an identity document SPENDS CREDITS: read an identity document (passport, ID card, driver's licence, visa) with the Identity model: name, date of birth, nationality, document number, expiry, MRZ, validity and fraud checks. WARNING: the result contains personal data of the people on the document; handle it accordingly. It is returned to you only; this server never stores or logs it. Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). Images up to 4096 px per side. POST /document_capturing/v1/identity. |
dochorizon_capture_bank_statement | write | Capture a bank statement SPENDS CREDITS: extract a bank statement: bank, account holder, period, opening and closing balance and every transaction. WARNING: the result contains personal data of the people on the document; handle it accordingly. It is returned to you only; this server never stores or logs it. Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). POST /document_capturing/v1/bank_statement. |
dochorizon_capture_salary_slip | write | Capture a salary slip SPENDS CREDITS: extract a salary slip (payslip): employer, employee, period, gross and net pay, deductions. WARNING: the result contains personal data of the people on the document; handle it accordingly. It is returned to you only; this server never stores or logs it. Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). POST /document_capturing/v1/salary_slip. |
dochorizon_capture_generic | write | Capture any document as key-values and tables SPENDS CREDITS: turn any document into generic structured data: key-value pairs and tables, as JSON. Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). POST /document_capturing/v1/generic. |
dochorizon_capture_einvoice | write | Capture a document as an e-invoice SPENDS CREDITS: read an invoice with the financial model and return it in the Universal Invoice structure used for e-invoicing (parties, lines, tax subtotals, totals, payment means). Does not send anything to a network. Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). POST /document_capturing/v1/einvoice. |
dochorizon_capture_with_prompt | write | Capture with a Prompt Builder configuration SPENDS CREDITS: extract data from a document with a Prompt Builder configuration (an LLM extraction prompt you defined in the platform). Output follows that configuration's schema (see dochorizon_get_prompt_schema). The result may contain whatever personal data the document holds. Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). POST /document_capturing/v1/prompt_builder/configurations/{slug}. |
dochorizon_submit_async_capture | write | Submit a document for asynchronous capture SPENDS CREDITS: queue one document for capturing and return a job_id right away; poll dochorizon_get_async_job, then read dochorizon_get_async_job_result. Use it for long documents and bursts (async jobs are not subject to the concurrent-request limit). No webhook or human review is configured. For identity, salary_slip and bank_statement the result holds personal data. Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). POST /document_capturing/v1/{model}/async. |
dochorizon_list_async_jobs | read | List asynchronous capture jobs List the project's async capture jobs (newest first as returned): job_id, status, created time, with paging. Does not process a document; normally not billed. GET /document_capturing/v1/async. |
dochorizon_get_async_job | read | Get asynchronous job status The status of one async capture job (in_queue, processing, hitl, done, error, closed, rejected). Does not process a document; normally not billed. GET /document_capturing/v1/async/{job_id}. |
dochorizon_get_async_job_result | read | Get asynchronous job result The captured data of a finished async job (status done). The result may contain personal data (identity, salary slip, bank statement). Does not process a document; normally not billed. GET /document_capturing/v1/async/{job_id}/result. |
dochorizon_get_async_job_logs | read | Get asynchronous job logs Status changes and error messages of an async job, to debug a failed one. Does not process a document; normally not billed. GET /document_capturing/v1/async/{job_id}/logs. |
dochorizon_delete_async_job | write | Delete an asynchronous job WRITE: permanently delete an async job, its result and the stored documents from Doxis AI.dp's servers; a job still waiting in the queue is cancelled. Use it to remove personal data you no longer need. Cannot be undone. DELETE /document_capturing/v1/async/{job_id}. |
dochorizon_document_info | write | Get document info SPENDS CREDITS: page count, page sizes, content type, metadata and permissions of a PDF or TIFF. Useful to check the page count before capturing. Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). POST /document_toolkit/v1/info. |
dochorizon_document_split | write | Split a PDF SPENDS CREDITS: split a PDF into several PDFs by page ranges (one output file per range, for example ['1-3','4-6']). Output files are stored in Doxis AI.dp storage and returned as file ids you can pass to any other tool as file_id. Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). POST /document_toolkit/v1/split. |
dochorizon_document_render | write | Render PDF pages as images SPENDS CREDITS: render pages of a PDF as images, optionally limited in width/height. Each render config gives page_ranges and optional width and height in pixels. Images are stored in Doxis AI.dp storage and returned as file ids (use dochorizon_download_file for small ones). Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Give the document as exactly one of url (public https), data_base64 (small files) or file_id (a stored file). POST /document_toolkit/v1/render. |
dochorizon_document_merge | write | Merge PDFs SPENDS CREDITS: merge two or more PDFs into one, in the order given, optionally taking only some pages of each. The merged file is stored in Doxis AI.dp storage and returned as a file id. Uses your own Doxis AI.dp (Klippa) credits: billed per request or per page depending on the service (extra components in a configuration can add cost), at your project's price (Billing → Pricing in the platform); a new account starts with EUR 25 of free credit. Each document is one of url (public https), data_base64 or file_id. POST /document_toolkit/v1/merge. |
dochorizon_upload_file | write | Upload a file to Doxis AI.dp storage WRITE: store a file in your Doxis AI.dp storage and get a file_id to reuse in other tools (capture the same file several times without sending it again). Give a public https url or small base64 data. The file stays in your project's storage until it expires per your data-retention setting. May use credits per your pricing. POST /storage/v1/files. |
dochorizon_download_file | read | Download a stored file (small files only) Fetch a stored file by file_id and return it as base64. Only files up to 30 KB are returned inline; for larger files use the file_id in other tools instead. Does not process a document; normally not billed. GET /storage/v1/files/{file_id}. |
dochorizon_validate_einvoice | write | Validate an e-invoice Validate an e-invoice (XML or hybrid PDF) against its standard (EN 16931, XRechnung, Peppol BIS, ...): returns the detected type, valid yes/no, a summary and each broken rule with its XPath location. Nothing is sent to anyone. May use credits per your pricing. POST /einvoicing/v1/tools/validate. |
dochorizon_convert_einvoice | write | Convert an e-invoice to Universal Invoice JSON Convert an e-invoice (XML or hybrid PDF) to the Universal Invoice JSON structure (parties, lines, taxes, totals). Nothing is sent to anyone. May use credits per your pricing. POST /einvoicing/v1/tools/convert/einvoice. |
dochorizon_list_einvoice_types | read | List e-invoice types The e-invoice types Doxis AI.dp understands (ids to pass as einvoice_type). Does not process a document; normally not billed. GET /einvoicing/v1/tools/einvoice-types. |
dochorizon_search_peppol_directory | read | Search the Peppol directory Search the public Peppol business directory by company name, identifier or other text: participant identifiers, countries, contacts, websites and the document types each can receive. Public business data; costs nothing. GET /einvoicing/v1/peppol/environments/{environment}/directory. |
dochorizon_lookup_peppol_participant | read | Look up a Peppol participant Look up one Peppol participant by identifier (for example iso6523-actorid-upis::0106:64111512) in the Peppol network (SML): the document types it can receive. Does not process a document; normally not billed. GET /einvoicing/v1/peppol/environments/{environment}/participants/{participant_identifier}. |
dochorizon_usage_status | Usage status (free-tier meter) Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter. | |
dochorizon_request_feature | Request a missing feature Tell usefulapi that the user needs something the Doxis AI.dp (Klippa DocHorizon) tools cannot do yet (a missing tool, field or filter). Call it only when the user asks for something none of the tools can do, and tell the user that you send the request. Do not call it for errors or for normal requests. Do not include personal data, credentials or customer records. Stored with the product name and the client type (for example Claude or Cursor), without the user's account. At most 5 requests per day. Does not count against the meter. | |
dochorizon_upgrade | Upgrade to Pro (unlimited) Subscribe to the Pro plan for UNLIMITED Doxis AI.dp (Klippa DocHorizon) tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Does not count against the meter. | |
dochorizon_cancel_subscription | Cancel the Pro subscription Cancel the caller's Doxis AI.dp (Klippa DocHorizon) Pro subscription at the end of the paid period (no refund for the current period; unlimited calls continue until then, then the free tier applies). Requires confirm: true. Run dochorizon_upgrade later to undo the cancel before the period ends. Does not count against the meter. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Proper project | $9/mo · $90/yr | Unlimited |
Pro covers this Doxis AI.dp (Klippa DocHorizon) server only. Subscribe with dochorizon_upgrade (it returns a Stripe Checkout link). Cancel any time with dochorizon_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running dochorizon_upgrade before then undoes the cancel. Or write to [email protected].
No. usefulapi is an independent service. It is not affiliated with or endorsed by Doxis AI.dp (Klippa DocHorizon). The server calls the Doxis AI.dp (Klippa DocHorizon) API with your own Doxis AI.dp (Klippa DocHorizon) access, so it sees only the data that your account can see.
The login page asks for your Doxis AI.dp API key and Hosting region. See Before you connect for where to find them.
No. Add only the URL. Do not add an Authorization header or an API key to the client config. The server signs you in with OAuth: the login page asks for your Doxis AI.dp API key and Hosting region. If the config has such a header, remove it: some clients then send that header instead of the login token, and every call fails with 401.
The login stores them encrypted in the authorization grant of your connection. The server uses them to call the Doxis AI.dp (Klippa DocHorizon) API for you and to derive a private account id for usage metering. usefulapi does not show them on any page or in any reply. To stop all access, remove the connector and change or delete these credentials in Doxis AI.dp (Klippa DocHorizon).
Yes, if you approve it. 16 of the 30 Doxis AI.dp (Klippa DocHorizon) tools can create or change data. The other 14 are marked read-only. Most MCP clients ask you to approve a tool call before it runs.
The Free plan gives 100 tool calls / month. Pro costs $9/mo or $90/yr, with unlimited tool calls, for this Doxis AI.dp (Klippa DocHorizon) server only. Run dochorizon_usage_status to see how many calls you used.
Ask the AI to run dochorizon_upgrade: it returns a Stripe Checkout link. To cancel, run dochorizon_cancel_subscription. Pro continues to the end of the paid period.
Tell the AI what you wanted to do. It can send the request with dochorizon_request_feature. We store the text with the server name, the type of AI client and the tool you tried, not with your account, and read every request when we plan new tools. You can send up to 5 requests per day.
Any client that supports remote MCP servers (Streamable HTTP) with OAuth login: Claude (web and desktop), Claude Code, Cursor, VS Code, Windsurf and others.
This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.