# Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi (remote · klippa-dochorizon.usefulapi.io)

Capture invoices, receipts, IDs and bank statements with Doxis AI.dp; split, render, convert files.

- Trust score: 64/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-17

## Components

- remote · `klippa-dochorizon.usefulapi.io`: 64/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-klippa-dochorizon/klippa-dochorizon.md), [page](https://verifymcp.io/servers/io-usefulapi-klippa-dochorizon/klippa-dochorizon)

## Channel facts

- Endpoint: `https://klippa-dochorizon.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-17.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 78/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 6041 tokens (~201/item across 30 items; 30 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 31 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi server?

Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi is a hosted endpoint at https://klippa-dochorizon.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-klippa-dochorizon 'https://klippa-dochorizon.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-klippa-dochorizon": {
      "url": "https://klippa-dochorizon.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-klippa-dochorizon": {
      "type": "http",
      "url": "https://klippa-dochorizon.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-klippa-dochorizon]
url = "https://klippa-dochorizon.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-klippa-dochorizon": {
      "type": "remote",
      "url": "https://klippa-dochorizon.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-klippa-dochorizon --url 'https://klippa-dochorizon.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-klippa-dochorizon:
    url: "https://klippa-dochorizon.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-klippa-dochorizon": {
      "Transport": "http",
      "Url": "https://klippa-dochorizon.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-klippa-dochorizon -t streamable-http -u 'https://klippa-dochorizon.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-klippa-dochorizon": {
      "type": "http",
      "url": "https://klippa-dochorizon.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-17 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-14 (score 63, +3)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] The server now declares the “prompts” capability
- [functional] First check of Schema quality: 100
- [functional] New prompt “getting_started”
- [functional] Server version: 1.0.0 → 1.1.0

### 2026-10-13 (score 60, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-12 (score 59)

First indexed and scored.

## MCP tools (30)

### `dochorizon_get_key_info` (~59 tokens)

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` (~60 tokens)

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` (~78 tokens)

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.

Input parameters:

- `model` (string, required): The capturing model.

### `dochorizon_get_model_schema` (~93 tokens)

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.

Input parameters:

- `configuration_slug` (string): Schema for this configuration (not for einvoice).
- `model` (string, required): The capturing model.

### `dochorizon_list_prompt_configurations` (~54 tokens)

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` (~62 tokens)

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.

Input parameters:

- `slug` (string, required): Prompt Builder configuration slug.

### `dochorizon_capture_financial` (~385 tokens)

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.

Input parameters:

- `configuration_slug` (string): Slug of a capturing configuration made in the platform (see dochorizon_list_configurations). Optional: the model's defaults apply without it.
- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `page_ranges` (string): Pages to process, for example '1-3, 5', '2-last', 'first-last' (default: all pages; documents over 50 pages time out).
- `password` (string): Password of a protected PDF. Only used for this request.
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_capture_identity` (~411 tokens)

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.

Input parameters:

- `configuration_slug` (string): Slug of a capturing configuration made in the platform (see dochorizon_list_configurations). Optional: the model's defaults apply without it.
- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `page_ranges` (string): Pages to process, for example '1-3, 5', '2-last', 'first-last' (default: all pages; documents over 50 pages time out).
- `password` (string): Password of a protected PDF. Only used for this request.
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_capture_bank_statement` (~382 tokens)

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.

Input parameters:

- `configuration_slug` (string): Slug of a capturing configuration made in the platform (see dochorizon_list_configurations). Optional: the model's defaults apply without it.
- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `page_ranges` (string): Pages to process, for example '1-3, 5', '2-last', 'first-last' (default: all pages; documents over 50 pages time out).
- `password` (string): Password of a protected PDF. Only used for this request.
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_capture_salary_slip` (~386 tokens)

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.

Input parameters:

- `configuration_slug` (string): Slug of a capturing configuration made in the platform (see dochorizon_list_configurations). Optional: the model's defaults apply without it.
- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `page_ranges` (string): Pages to process, for example '1-3, 5', '2-last', 'first-last' (default: all pages; documents over 50 pages time out).
- `password` (string): Password of a protected PDF. Only used for this request.
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_capture_generic` (~309 tokens)

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.

Input parameters:

- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `page_ranges` (string): Pages to process, for example '1-3, 5', '2-last', 'first-last' (default: all pages; documents over 50 pages time out).
- `password` (string): Password of a protected PDF. Only used for this request.
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_capture_einvoice` (~338 tokens)

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.

Input parameters:

- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `page_ranges` (string): Pages to process, for example '1-3, 5', '2-last', 'first-last' (default: all pages; documents over 50 pages time out).
- `password` (string): Password of a protected PDF. Only used for this request.
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_capture_with_prompt` (~364 tokens)

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}.

Input parameters:

- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `page_ranges` (string): Pages to process, for example '1-3, 5', '2-last', 'first-last' (default: all pages; documents over 50 pages time out).
- `password` (string): Password of a protected PDF. Only used for this request.
- `slug` (string, required): Prompt Builder configuration slug (see dochorizon_list_prompt_configurations).
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_submit_async_capture` (~411 tokens)

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.

Input parameters:

- `configuration_slug` (string): Slug of a capturing configuration made in the platform (see dochorizon_list_configurations). Optional: the model's defaults apply without it.
- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `model` (string, required): The capturing model.
- `page_ranges` (string): Pages to process, for example '1-3, 5', '2-last', 'first-last' (default: all pages; documents over 50 pages time out).
- `password` (string): Password of a protected PDF. Only used for this request.
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_list_async_jobs` (~101 tokens)

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.

Input parameters:

- `limit` (integer): Jobs per page (default 25).
- `offset` (integer): Skip this many jobs (use the previous reply's paging_data).
- `status` (array): Only jobs in these states.

### `dochorizon_get_async_job` (~76 tokens)

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}.

Input parameters:

- `job_id` (string, required): The job_id returned when the document was submitted.

### `dochorizon_get_async_job_result` (~82 tokens)

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.

Input parameters:

- `job_id` (string, required): The job_id returned when the document was submitted.

### `dochorizon_get_async_job_logs` (~96 tokens)

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.

Input parameters:

- `job_id` (string, required): The job_id returned when the document was submitted.
- `limit` (integer): Entries per page (default 25).
- `offset` (integer): Skip this many entries.

### `dochorizon_delete_async_job` (~90 tokens)

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}.

Input parameters:

- `job_id` (string, required): The job_id returned when the document was submitted.

### `dochorizon_document_info` (~274 tokens)

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.

Input parameters:

- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `password` (string): Password of a protected PDF. Only used for this request.
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_document_split` (~332 tokens)

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.

Input parameters:

- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `page_ranges` (array, required): One entry per output file, e.g. ['1-3', '4-6', '7'].
- `password` (string): Password of a protected PDF. Only used for this request.
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_document_render` (~311 tokens)

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.

Input parameters:

- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `file_id` (string): A Doxis AI.dp storage file id (from dochorizon_upload_file or a toolkit result).
- `filename` (string): A name for the file (helps content-type detection).
- `password` (string): Password of a protected PDF. Only used for this request.
- `renders` (array, required): The render configurations.
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_document_merge` (~160 tokens)

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.

Input parameters:

- `documents` (array, required): The PDFs to merge, in order (2 to 10).

### `dochorizon_upload_file` (~179 tokens)

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.

Input parameters:

- `content_type` (string): MIME type, if it cannot be detected.
- `data_base64` (string): The document as base64 (at most about 1.5 MB of file). Prefer url or file_id for anything bigger.
- `filename` (string): A name for the file (helps content-type detection).
- `url` (string): Public https URL of the document. Klippa downloads it (must complete within 30 seconds).

### `dochorizon_download_file` (~79 tokens)

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}.

Input parameters:

- `file_id` (string, required): A storage file id.

### `dochorizon_validate_einvoice` (~172 tokens)

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.

Input parameters:

- `data_base64` (string): The e-invoice file as base64 (XML, or a hybrid PDF such as ZUGFeRD / Factur-X).
- `einvoice_type` (string): The e-invoice type, if it should not be auto-detected (see dochorizon_list_einvoice_types).
- `xml` (string): The e-invoice as XML text (UBL, CII, ...).

### `dochorizon_convert_einvoice` (~188 tokens)

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.

Input parameters:

- `data_base64` (string): The e-invoice file as base64 (XML, or a hybrid PDF such as ZUGFeRD / Factur-X).
- `einvoice_type` (string): The e-invoice type, if it should not be auto-detected (see dochorizon_list_einvoice_types).
- `include_unmapped_fields` (boolean): Also return fields of the original that have no place in the universal format.
- `validate` (boolean): Validate the e-invoice during conversion.
- `xml` (string): The e-invoice as XML text (UBL, CII, ...).

### `dochorizon_list_einvoice_types` (~54 tokens)

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` (~106 tokens)

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.

Input parameters:

- `environment` (string): Peppol environment: production (live network) or acceptance (test).
- `query` (string, required): Name, identifier or other identifying text.

### `dochorizon_lookup_peppol_participant` (~125 tokens)

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}.

Input parameters:

- `environment` (string): Peppol environment: production (live network) or acceptance (test).
- `participant_identifier` (string, required): The Peppol participant identifier.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-klippa-dochorizon/klippa-dochorizon#diagnostics

## Score history

- 2026-10-17: 64
- 2026-10-16: 63
- 2026-10-15: 63
- 2026-10-14: 63
- 2026-10-13: 60
- 2026-10-12: 59

## Common questions

### What is the Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi server?

Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi is listed in the public MCP registry as io.usefulapi/klippa-dochorizon. Capture invoices, receipts, IDs and bank statements with Doxis AI.dp; split, render, convert files. This page covers its hosted endpoint (https://klippa-dochorizon.usefulapi.io/mcp).

### Is the Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi server safe to use?

Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi scores 64 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi server expose?

Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi exposes 30 tools: dochorizon_get_key_info, dochorizon_list_models, dochorizon_list_configurations, dochorizon_get_model_schema, dochorizon_list_prompt_configurations, and 25 more. Their descriptions and schemas cost roughly 5,817 tokens of context every time the server is loaded.

### Does the Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi server require authentication?

Yes. Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi server still maintained?

Doxis AI.dp (Klippa DocHorizon) MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://klippa-dochorizon.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/klippa-dochorizon/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-klippa-dochorizon/klippa-dochorizon.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-klippa-dochorizon/klippa-dochorizon.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-klippa-dochorizon/klippa-dochorizon
