Debitura

com.debituraPublished by debitura.comOfficial publisherv1.0.0Updated Oct 24, 2026

Cross-border debt collection: submit and track cases handled by local partners in 183 countries.

VerifiedStreamable HTTPWeb executableFinanceBusiness & Commerce

Overview

AI-generated overview

Debitura's hosted MCP server lets an assistant review, price and submit cross-border debt collection cases handled by local partners in 183 countries.

What you can do
  • Check the connection and see which creditor account the API key belongs to
  • List, filter and open collection cases, with timeline, payments, contract status and attached documents
  • Read partner chat threads and send messages attributed to a named team member
  • Review open action items across the account or per case, and see case counts per lifecycle stage
  • Dry-run a case for eligibility, assigned partner and success-fee pricing, then submit it
  • Upload documents to a case and list team members for message senders or case owners
When to use it
Useful for creditors already on Debitura who want to track international B2B or B2C claims, follow partner conversations and outstanding tasks, or price and file new collection cases from an assistant instead of the portal.
Requirements
Remote streamable HTTP endpoint at mcp.debitura.com/mcp; no local package. A Debitura account and API key sent in the XApiKey header (or as a bearer token). The key is created in the Debitura app. Network access to the hosted endpoint.
Before you install
The XApiKey header is the tenant boundary, so anyone holding it can act on the account. create_case is a legal and financial action: a partner starts recovery and success fees apply, and the server only asks the assistant to preview and confirm first, so client-side confirmation depends on your settings. send_case_message notifies the partner by email, upload_case_file sends documents to Debitura, and file download links are time-limited.

Installation

In SourceWeft

  1. Open Debitura in the dashboard and add it to a workspace.
  2. Connect XApiKey credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.debitura%2Fmcp-server/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "debitura": {
      "type": "http",
      "url": "https://mcp.debitura.com/mcp",
      "headers": {
        "XApiKey": "<YOUR_API_KEY>"
      }
    }
  }
}

README

Debitura MCP Server

[License: MIT] [Model Context Protocol] [Node] [Docs]

The MCP server for cross-border debt collection. Connect Claude, Cursor, VS Code, or any MCP-compatible agent to Debitura and manage international debt recovery from your AI assistant: check case status, read partner conversations, get pricing, and submit new collection cases — handled by vetted local collection partners in 183 countries on a no-cure-no-pay basis.

Tools

Read

ToolWhat it does
pingTest the connection — "✓ Connected as {your company}"
list_casesList your collection cases (paging, status filter, sorting)
get_caseFetch one case by ID, your own reference, or Debitura case reference
get_case_activityCase timeline — what has happened so far (returns { items, currentEngagementPhase })
get_case_messagesRead the chat with the collection partner
get_case_paymentsMoney recovered on a case
get_case_contract_statusWhich contracts are signed / blocking a case
get_case_tasksOpen tasks (action-items) for one case
list_case_filesList documents attached to a case, with time-limited download URLs
get_account_summaryCase counts per lifecycle stage — a quick portfolio overview
list_tasksEvery open task (action-item) across your account, with solutionUrl + resolving action
preview_casePricing + eligibility dry-run before submitting (nothing persisted)
list_team_membersYour team — used to attribute messages and assign case owners

Write

ToolWhat it does
create_caseSubmit a collection case. Instructs the assistant to preview first and get explicit user confirmation, then submits idempotently (auto Idempotency-Key, safe retries, no duplicate cases)
upload_case_fileAttach documents to a case (invoice copies, contracts — max 25 MB)
send_case_messageMessage the collection partner on a case, attributed to a named team member

Every tool carries MCP annotations (readOnlyHint / destructiveHint); the write tools are marked destructive. create_case is a legal/financial action: its tool description tells the assistant to run preview_case and get the user's explicit confirmation before submitting. Whether your MCP client also asks before running a tool depends on the client and its settings.

Distribution

Debitura runs this MCP server as a hosted service at https://mcp.debitura.com/mcp. That is the only supported way to use it — point any MCP client at the endpoint and authenticate with your Debitura API key (see Install below). There is no published npm package: the @debitura/mcp-server package is private ("private": true) and is not distributed on the npm registry. The source is published so you can audit it and, if you wish, run your own copy (see Self-hosting / development) — but normal usage is the hosted endpoint.

Install

Claude (web / desktop)

Settings → Connectors → Add custom connector → URL https://mcp.debitura.com/mcp.

Anthropic is rolling out a Request headers option in that same dialog that lets you authenticate without OAuth — but it's a gated beta (Anthropic: "contact us for early access"), so most accounts won't see it yet. If you do see it, add header x-api-key with your Debitura API key as the value. If you don't, use Claude Code or the Claude Desktop config-file method below instead — both work today regardless of beta access.

Claude Code

bash
claude mcp add --transport http debitura https://mcp.debitura.com/mcp --header "XApiKey: YOUR_API_KEY"

Claude Desktop (no beta access to Request headers)

Bypass the Connectors UI entirely by editing claude_desktop_config.json directly — a separate mechanism from the web-synced Connectors UI, no OAuth involved — using the mcp-remote bridge:

json
{  "mcpServers": {    "debitura": {      "command": "npx",      "args": ["mcp-remote", "https://mcp.debitura.com/mcp", "--header", "XApiKey:${DEBITURA_KEY}"],      "env": { "DEBITURA_KEY": "YOUR_API_KEY" }    }  }}

File location: macOS ~/Library/Application Support/Claude/claude_desktop_config.json, Windows %APPDATA%\Claude\claude_desktop_config.json. Restart Claude Desktop after saving — the server appears under Settings → Connectors → Manage connectors, even though you never touched "Add custom connector".

Cursor

Add to ~/.cursor/mcp.json:

json
{  "mcpServers": {    "debitura": {      "url": "https://mcp.debitura.com/mcp",      "headers": { "XApiKey": "YOUR_API_KEY" }    }  }}

VS Code (GitHub Copilot)

bash
code --add-mcp '{"name":"debitura","type":"http","url":"https://mcp.debitura.com/mcp","headers":{"XApiKey":"YOUR_API_KEY"}}'

Verify

Ask your assistant: "Ping Debitura" → you should see ✓ Connected as {your company}.

Example prompts

  • "What's the status of my Debitura cases? Anything that needs my attention?"
  • "What would it cost to collect a €12,000 B2B debt in Germany?"
  • "Any new messages from collection partners this week?"
  • "Submit a collection case against Acme GmbH in Berlin for invoice 2026-014, €8,400, due 1 March."

Security

  • Authentication & tenancy. The XApiKey header IS the tenant boundary. The server is stateless — each request creates a fresh MCP server bound to the caller's API key, which is passed straight through to the Debitura Customer API. No keys or case data are stored.
  • Transport. The hosted endpoint is served over HTTPS through Cloudflare.
  • Rate limits. Tool calls are forwarded to the Debitura Customer API, so the Customer API's rate limits apply to your API key. Some tools make several Customer API calls per invocation (e.g. get_account_summary queries one count per lifecycle stage), and each call counts.
  • Vulnerability reports: see SECURITY.md.

Self-hosting / development

The supported way to use Debitura's MCP is the hosted endpoint above. The steps below are for local development / auditing of this repository only.

bash
npm installnpm run dev          # starts on :3000, POST /mcp
Env varDefaultPurpose
PORT3000Listen port
DEBITURA_API_BASE_URLhttps://customer-api.debitura.comPoint at https://testcustomer-api.debitura.com for the test environment

See .env.example for a starter env file.

bash
npm run build && npm start        # production-style local rundocker build -t debitura-mcp . && docker run -p 3000:3000 debitura-mcp

Deployment note: the hosted service deploys the built app as a zip to Azure App Service (see .github/workflows/deploy.yml) — it does not run the Docker image in production. The Dockerfile is provided for local/self-hosted use.

E2E tests

Runs every tool against the test environment (creates only tagged isTest cases and deletes them):

bash
DEBITURA_API_BASE_URL=https://testcustomer-api.debitura.com npm run dev   # terminal 1DEBITURA_TEST_API_KEY=<test key> MCP_URL=http://localhost:3000/mcp npx tsx scripts/e2e.ts

Regenerating API types

Types and the HTTP client are generated from the Customer API's OpenAPI spec (openapi/customer-api.json) via openapi-typescript — the curated 16-tool layer on top is hand-written:

bash
npm run fetch:spec   # pull latest spec + regenerate src/generated/customer-api.d.ts

Releasing a new version

The version lives in package.json (config.ts and client.ts derive from it). When bumping it, also update server.json — its version field is independent and must match the published registry listing. (smithery.yaml has no version field; Smithery picks up the package version automatically.)

When adding or removing a tool, also update the tool catalog above and the tools/list assertion in scripts/e2e.ts (it asserts the exact registered tool set).

About Debitura

Debitura is a global debt collection platform covering 183 countries. Creditors submit overdue B2B and B2C claims; vetted local collection partners in the debtor's jurisdiction recover them, typically no-cure-no-pay. Learn more at debitura.com · API docs at docs.debitura.com.

Source: README.md at commit aeaf316

Tools

16

ping

Test Connection

Verify the connection to Debitura and show which creditor account the API key belongs to. Call this first to confirm the integration is set up correctly.

Takes no parameters.

list_cases

List Cases

List the creditor's debt collection cases with pagination, status filtering, and sorting. Returns compact case summaries: reference, debtor name + country, amounts, lifecycle, partner, key dates. Use get_case for full detail on a specific case. Lifecycle values (statuses filter and output): `PendingContractSigning` · `PendingVerificationInternal` · `PendingVerification` · `NeedsAdditionalDetails` · `Leads` · `LeadsQuoteGiven` · `Active` · `Paused` · `Closed` · `Merged` Sortable fields: `DateCreated` · `DateUpdated` · `DateFinished` · `DateCollectionStarted` · `DueDate` · `Date` · `GrossAmount` · `Remainder` · `InterestFees` · `CollectionFees` Sort format: `Field:asc` or `Field:desc`, e.g. `GrossAmount:desc` Note: results include the creditor's own test cases; the `isTestCase` flag on each case marks them.

ParameterspagesortpageSizestatuses

get_case

Get Case

Fetch one collection case in full detail. Look it up by Debitura case ID (GUID), by your own creditor reference (e.g. invoice number), or by the Debitura case reference shown in the portal. Provide exactly one of the three identifiers.

ParametersidcaseReferencecreditorReference

get_case_activity

Get Case Activity

Fetch the chronological timeline of a case — what has happened so far: status changes, partner actions, communications, and payments. Returns an envelope `{ items, currentEngagementPhase }`: `items` is the chronological event list, and `currentEngagementPhase` is the case's current engagement phase ("Pre-legal", "Legal", or "Enforcement"; null when no active engagement exists).

ParameterscaseIdrequired

get_case_messages

Get Case Messages

Read the chat conversation on a case between you and the collection partner handling it. Each message includes: senderName, role (Creditor / Partner / Managed by partner), sentAt (UTC), message. See the debitura://glossary/chat-roles resource for what each role means.

ParameterscaseIdrequired

get_case_payments

Get Case Payments

List every payment recorded on a case — money recovered so far.

ParameterscaseIdrequired

get_case_contract_status

Get Case Contract Status

Check which contracts (e.g. debt collection agreement, power of attorney) are signed or still blocking a case, including signing URLs for any outstanding documents.

ParameterscaseIdrequired

preview_case

Preview Case (Pricing & Eligibility)

Dry-run a collection case BEFORE creating it: returns eligibility, the assigned collection partner, pricing (success fee), and any contracts that would need signing. Nothing is persisted. ALWAYS call this before create_case and show the user the pricing and requirements.

ParametersdueDateclaimLinesdebtorTyperequiredcurrencyCoderequiredamountToRecoverdebtorStateAlpha2debtorCountryAlpha2requiredamountToRecoverOver6MonthsamountToRecoverOver12MonthsamountToRecoverOver24Months

list_team_members

List Team Members

List the team members on the creditor's Debitura account. Use this to resolve a valid sender (userId or email) before calling send_case_message, or a case owner for create_case.

ParameterspagepageSize

list_case_files

List Case Files

List all documents attached to a case: file name, document type, description, upload date, and a time-limited SAS download URL. Each file also carries downloadUrlExpiresAt (UTC) — when the download URL stops working, so a cached URL can be refreshed in time. Use upload_case_file to attach new documents.

ParameterscaseIdrequired

get_account_summary

Get Account Summary

Return a count of cases per lifecycle stage for the creditor's account. Useful for a quick portfolio overview without listing all cases. Stages: PendingContractSigning, PendingVerificationInternal, PendingVerification, NeedsAdditionalDetails, Leads, LeadsQuoteGiven, Active, Paused, Closed, Merged. Note: these counts include the creditor's own test cases; list_cases exposes the `isTestCase` flag that marks them.

Takes no parameters.

list_tasks

List Tasks

List every open task (action-item) across your whole account — things the platform needs you to do before a case (or your account) can proceed: reply to a chat, sign a contract, assign a bank account, and so on. Use get_case_tasks instead to scope this to one case. Tasks auto-resolve once the underlying condition clears — e.g. replying to a case's chat makes its ReplyToChat task disappear on its own. Treat this as a live work queue, not a log: a task seen on one call may no longer be open on the next. Every task carries a solutionUrl — an absolute link a human can open to resolve it in one click, whatever the type. Some types (today: ReplyToChat, ClientInputRequired, MoreInfoNeeded) additionally carry a non-null `action` pointing at the exact API call that resolves them — for those, call send_case_message with the task's caseId instead of sending a human to solutionUrl. Tasks without an action rely on solutionUrl alone. Task types: Generic, ReplyToChat, SelectQuoteWinner, ReviewPartner, ClientInputRequired, SignContract, MoreInfoNeeded, AssignBankAccount, CaseValidationNeedsInfo.

ParameterspagetypestatuspageSize

get_case_tasks

Get Case Tasks

List the open tasks (action-items) attached to one specific case — same data as list_tasks, scoped to a single case. Use this when you're already working a specific case and want just its outstanding tasks. Note: account-level tasks that aren't tied to any one case (e.g. SignContract, AssignBankAccount — these block the whole account, not one case) never appear here; use list_tasks to see those. See list_tasks for the full task model (auto-resolve, solutionUrl, action).

ParameterstypecaseIdrequiredstatus

create_case

Create Collection Case

Submit a debt collection case to Debitura. This is a LEGAL AND FINANCIAL ACTION: a collection partner starts recovery against the debtor, and contractual fees apply on success. Required workflow — never skip it: 1. Call preview_case first and show the user the pricing, assigned partner, and any contracts that need signing. 2. Ask the user to explicitly confirm submission. 3. Only then call this tool. NEVER call it without the user's explicit confirmation in this conversation. Submission is idempotent: the server sends a unique Idempotency-Key and safely retries transient network failures without risk of duplicate cases. A 422 response is a business rejection — read its payload (it may contain signing URLs for required contracts, or duplicate-reference details).

ParameterstagdaterequireddebtorrequiredisTestdueDatecommentsclaimLinescurrencyCoderequiredamountToRecoverclaimDescriptionassignedUserEmailcreditorReference+4 more

upload_case_file

Upload Case File

Attach a document to a case (invoice copy, contract, correspondence, proof of delivery). Max 25 MB. Allowed extensions: .pdf, .xls, .xlsx, .csv, .txt, .jpg, .jpeg, .png, .gif. Provide the file content base64-encoded.

ParameterscaseIdrequiredfileNamerequiredcontentTypedescriptiondocumentTypecontentBase64required

send_case_message

Send Case Message

Send a chat message on a case to the collection partner handling it. The partner is notified by email. The message is attributed to a named team member, so a sender is REQUIRED: pass the sender's userId or email from list_team_members. Ask the user who the message should be sent as if it is not obvious.

ParameterscaseIdrequiredmessagerequiredsenderEmailsenderUserId

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts