Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for io.github.PromptPartner/bexio-mcp-server

Pod holds 15 of 15 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to io.github.PromptPartner/bexio-mcp-server.

Most discussed

create_iban_payment produces a standalone payment with no bill link (silently breaks bill reconciliation)

Summary

create_iban_payment creates a standalone banking payment that is not linked to any bill (bill_id is always null). When an agent or user reaches for it to pay a supplier bill — the obvious-sounding choice for "an IBAN payment" — the result silently breaks the normal accounting workflow: the bill stays in status "Offen", its Zahlungen section stays empty, and automatic bank reconciliation can never match the payment to the bill. Nothing in the tool description warn

Read the thread · 2026-06-19 · closed · external user · 1 comment

Orphaned server processes busy-loop at ~100% CPU after client disconnect (stdio)

Summary

When the MCP client disconnects (window close / session restart) without a graceful shutdown, the bexio-mcp-server process does not exit. Instead it appears to busy-loop and pins a full CPU core at ~100%. Orphaned instances accumulate over a work session, each spinning — three were running simultaneously here (~300% CPU total) while completely idle (no requests).

Environment

  • @promptpartner/bexio-mcp-server 2.4.0 (latest on npm)
  • Launched via npx over stdio by

Read the thread · 2026-06-19 · closed · external user · 2 comments

download_file returns entire file as inline base64, overflowing client context

Summary

download_file returns the entire file as an inline base64 string inside the JSON tool result. For anything but tiny files this overflows the MCP client's context window. A 226 KB PDF produced a ~308,000-character result that the client refused to load.

Environment

  • v2.3.0 (unchanged in v2.4.0)

Root cause

src/bexio-client.ts:

async downloadFile(fileId) {
  const response = await axios.get(`.../3.0/files/${fileId}/download`, { responseType: "arraybuffer", ... });

[Read the thread](https://github.com/PromptPartner/bexio-mcp-server/issues/10) · 2026-06-16 · closed · external user · 1 comment

### create_bill / create_outgoing_payment: misleading description and undocumented required fields

## Summary
`create_bill` and `create_outgoing_payment` accept an open `additionalProperties` object whose required structure is undocumented, and `create_bill`'s description is actively misleading. Creating a single bill + payment took ~10 trial-and-error round trips driven only by the API's validation errors.

## Environment
- **v2.3.0** (unchanged in v2.4.0)

## `create_bill`
Description says: *"Bill data including contact_id, title, positions, etc."*
Reality (v4 `purchase/bills`):
- `contact_

[Read the thread](https://github.com/PromptPartner/bexio-mcp-server/issues/9) · 2026-06-16 · closed · external user · 2 comments

### issue_bill and mark_bill_as_paid POST to non-existent v4 endpoints (404)

## Summary
`issue_bill` and `mark_bill_as_paid` always fail with **404 Not Found**. Both POST to action sub-paths that do not exist on the Bexio v4.0 `purchase/bills` API. Consequently a bill created via `create_bill` (which lands in `DRAFT`) **cannot be finalized or marked paid through the MCP at all** — and an outgoing payment cannot be created either, since that requires a non-DRAFT bill.

## Environment
- bexio-mcp-server **v2.3.0** (confirmed still present in v2.4.0 — `src/tools/purchase/` 

[Read the thread](https://github.com/PromptPartner/bexio-mcp-server/issues/6) · 2026-06-16 · closed · external user · 1 comment

### update_bill full-PUT silently nulls omitted fields (loses document_no, blocks finalization)

## Summary
`update_bill` issues a full-replace PUT with exactly the `bill_data` passed in. Any field omitted from `bill_data` is set to **null** server-side. In particular, omitting `document_no` wipes the bill's number — after which the bill can no longer be finalized (the UI's "Als offen markieren" is disabled because the now-empty, required "Nr." field fails validation).

## Environment
- **v2.3.0** (unchanged in v2.4.0)

## Reproduction
1. `create_bill(...)` → response has `document_no: "LR3

[Read the thread](https://github.com/PromptPartner/bexio-mcp-server/issues/7) · 2026-06-16 · closed · external user · 1 comment

### All write tool parameters received as `undefined` — write operations don't work

## Bug Report

All create/update/delete tools fail because the server receives every parameter as `undefined`, 
even when explicitly provided by the Claude client. Read-only tools with no required parameters 
(e.g. `list_invoices`) work fine.

## Steps to Reproduce

Call `create_contact` with the following parameters:
- `contact_type`: `"company"`
- `name_1`: `"Test GmbH"`

## Expected Behavior

Contact is created successfully in Bexio.

## Actual Behavior
```json
{
  "code": "VALIDATION_ERROR",

[Read the thread](https://github.com/PromptPartner/bexio-mcp-server/issues/2) · 2026-03-13 · closed · external user · 2 comments

### Bills (kb_bill) endpoints use v2.0 API instead of v4.0

## Problem

The purchase bill endpoints (`list_bills`, `get_bill`, `create_bill`, `search_bills`, etc.) all return **404 Not Found** because they use the v2.0 API base URL (`https://api.bexio.com/2.0/kb_bill`).

Bexio has moved the bills API to **v4.0** at `https://api.bexio.com/4.0/purchase/bills`.

## Affected code

In `bexio-client.js`, all bill methods use the v2.0 base URL:

```js
async listBills(params = {}) {
    return this.makeRequest("GET", "/kb_bill", params);  // 404 on v2.0
}

Read the thread · 2026-02-18 · closed · external user · 1 comment

Most recent

upload_file always fails with HTTP 415 — Bexio's POST /3.0/files requires a bare Accept: application/json header

Summary

upload_file fails for every input with INTERNAL_ERROR: Request failed with status code 415. It is not size- or content-related: a 4-byte file fails exactly like a 484 KB PDF.

Root cause: Bexio's POST /3.0/files validates the Accept header strictly and only accepts the exact value application/json. BexioClient.uploadFile() sets only the multipart headers from form-data plus Authorization, so axios' default Accept: application/json, text/plain, */* goes out — and Bex

Read the thread · 2026-07-28 · open · external user · 0 comments

edit_invoice always fails: PUT /kb_invoice/{id} is not a valid Bexio 2.0 route (edit is POST), and the merged payload includes fields the edit form rejects

Every call to the edit_invoice tool fails with:

Bexio API error: The form could not be saved due to the following errors:.

regardless of the payload. Three separate problems combine here — the first one is the blocker, the other two made it undiagnosable / will make it fail again once the first is fixed:

1. Wrong HTTP method (blocker)

editInvoice sends PUT /kb_invoice/{id}, but the Bexio 2.0 API has no PUT route for kb_invoice — the edit operation is `POST /2.0/kb_inv

Read the thread · 2026-07-18 · open · external user · 0 comments

#11 regression: EPIPE feedback loop in global uncaughtException handler — orphaned stdio server spins at 100% CPU again (v2.4.1)

Summary

The #11 fix (exit on stdin end/close) works for a clean disconnect, but the global uncaughtException handler added in v2.4.0 (index.ts, "log, do NOT exit") re-introduces the 100%-CPU orphan through a different path: once stderr's pipe/socket peer is gone, every logger.error() call throws EPIPE, which lands in the uncaughtException handler, which logs it via logger.error() to the same dead stderr → next EPIPE → self-sustaining loop (~1000 exceptions/sec, one CPU core pin

Read the thread · 2026-07-08 · open · external user · 0 comments

create_contact / bulk_create_contacts: advertised address field is rejected by Bexio (empty 422) — writable fields are street_name / house_number

Observed (2026-07-03, live company, latest npx build)

Creating a contact with the address field the tool schema advertises (src/tools/contacts/definitions.ts:186, and :252 in the bulk variant — address: { type: "string", description: "Street address" }) is rejected by Bexio with a 422 whose error list is empty, which makes the failure very hard to diagnose from the tool result. It cost our agent three failed calls before it found the working shape.

What Bexio actually accepts fo

Read the thread · 2026-07-03 · open · external user · 0 comments

upload_file: accept a local file path (symmetric to download_file's output_path)

Context

We drive this server from an agent (Claude Code) that registers receipt PDFs as purchase-bill attachments. Real-world PDFs are hundreds of KB to several MB.

Problem

upload_file accepts file content only as inline base64 (src/tools/files/handlers.ts:45-47 — params go straight to client.uploadFile). Through an LLM tool call that is impractical and corruption-prone: the base64 blob has to pass through the model's context (token cost, hard size ceiling, and any re-tokenization

Read the thread · 2026-07-03 · open · external user · 0 comments

Optional receipt-gating for irreversible writes (payments / issue·cancel·send invoice / deletes) — one file, zero deps, off by default

Hi — really nice project; the planning docs, tests, and the standalone-payment warning on create_iban_payment show you take the dangerous surface seriously. That's exactly why I'm raising this.

A handful of your tools take irreversible, money-touching actions that an agent can trigger with no record that an accountable human approved that specific action:

  • create_iban_payment, create_qr_payment, create_outgoing_payment — move real money
  • issue_invoice, cancel_invoice, `send

Read the thread · 2026-06-30 · open · external user · 0 comments

update_outgoing_payment always returns 405 (endpoint does not accept PUT)

Summary

update_outgoing_payment always fails with 405 Method Not Allowed: the v4 purchase/outgoing-payments/{id} endpoint does not accept PUT. The tool is therefore non-functional as advertised.

Environment

  • v2.3.0 (unchanged in v2.4.0)

Reproduction

  1. create_outgoing_payment(...) → payment created (status: "PENDING").
  2. update_outgoing_payment({ payment_id, payment_data })

Actual:

Bexio API error: Request method 'PUT' is not supported.
PUT https://api.bexio.c

[Read the thread](https://github.com/PromptPartner/bexio-mcp-server/issues/8) · 2026-06-16 · closed · external user · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/promptpartner/bexio-mcp-server/issues).