Skip to content

sevdesk MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.4 · published by io.usefulapi

Look up contacts, invoices, vouchers, orders, bank transactions and parts, and create drafts.

Deletes · 4

20 tools: 4 can delete or cancel things and 16 only read.

Scanned Oct 22, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http sevdesk https://sevdesk.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

20 tools

Deletes or cancels 4Claude Code: deny
  • sevdesk_add_communication_wayAttach an email address, phone/mobile number or website to a contact.No findings

    Why it is in this group

    • The name "sevdesk_add_communication_way" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Attach an email address, phone/mobile number or website to a contact. key_id labels it (2 Arbeit/work is a good default; see sevdesk_list_communication_way_keys). sevdesk: POST /CommunicationWay.

    Annotations the server declares

    • title: Add an email, phone or website to a contact
    • destructiveHint: true
  • sevdesk_create_contactCreate a contact.No findings

    Why it is in this group

    • The name "sevdesk_create_contact" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create a contact. Give `name` for an organisation, or `surename`/`familyname` for a person. Addresses and emails are separate (use sevdesk_add_communication_way). sevdesk: POST /Contact.

    Annotations the server declares

    • title: Create a contact
    • destructiveHint: true
  • sevdesk_create_draft_invoiceCreate a normal invoice (type RE) with its line items, ALWAYS saved as a DRAFT (status 100): it is not sent, not booked and stays editable in sevdesk.No findings

    Why it is in this group

    • The name "sevdesk_create_draft_invoice" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Create a normal invoice (type RE) with its line items, ALWAYS saved as a DRAFT (status 100): it is not sent, not booked and stays editable in sevdesk. contact_person_id is the sevdesk USER responsible for it — copy contactPerson.id from any existing invoice (sevdesk_get_invoice). Bookkeeping 2.0 accounts use tax_rule_id (1 = taxable sales in Germany, the usual choice); 1.0 accounts pass tax_type instead (check sevdesk_get_bookkeeping_system_version). sevdesk: POST /Invoice/Factory/saveInvoice.

    Annotations the server declares

    • title: Create a draft invoice
    • destructiveHint: true
  • sevdesk_update_contactUpdate fields on an existing contact; only the fields you pass are sent.No findings

    Why it is in this group

    • The name "sevdesk_update_contact" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Update fields on an existing contact; only the fields you pass are sent. sevdesk: PUT /Contact/{contactId}.

    Annotations the server declares

    • title: Update a contact
    • destructiveHint: true
Only reads 16Claude Code: allow
  • sevdesk_get_bookkeeping_system_versionReturn whether the account runs sevdesk bookkeeping 1.0 or 2.0 (2.0 uses taxRule instead of taxType on invoices).No findings

    Why it is in this group

    • The name "sevdesk_get_bookkeeping_system_version" says "get": a word for reading.
    Description, as the server wrote it
    Return whether the account runs sevdesk bookkeeping 1.0 or 2.0 (2.0 uses taxRule instead of taxType on invoices). Also a cheap way to confirm the API token works. sevdesk: GET /Tools/bookkeepingSystemVersion.

    Annotations the server declares

    • title: Get the bookkeeping system version
    • readOnlyHint: true
  • sevdesk_get_check_account_balanceBalance of one check account as the sum of every transaction sevdesk knows up to and including the given date.No findings

    Why it is in this group

    • The name "sevdesk_get_check_account_balance" says "get": a word for reading.
    Description, as the server wrote it
    Balance of one check account as the sum of every transaction sevdesk knows up to and including the given date. May differ from the real bank balance if older transactions were never imported. sevdesk: GET /CheckAccount/{checkAccountId}/getBalanceAtDate.

    Annotations the server declares

    • title: Get a payment account's balance at a date
    • readOnlyHint: true
  • sevdesk_get_contactFetch a single contact by id.Reads private dataNo findings

    Why it is in this group

    • The name "sevdesk_get_contact" says "get": a word for reading.

    What it can reach

    • private-dataThe name "sevdesk_get_contact" says "get" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "fetch" and "contact": it reads contacts.
    Description, as the server wrote it
    Fetch a single contact by id. sevdesk: GET /Contact/{contactId}.

    Annotations the server declares

    • title: Get one contact
    • readOnlyHint: true
  • sevdesk_get_invoiceFetch a single invoice by id — totals, status, dates, contact and contact person.Reads private dataNo findings

    Why it is in this group

    • The name "sevdesk_get_invoice" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "fetch" and "contact": it reads contacts.
    Description, as the server wrote it
    Fetch a single invoice by id — totals, status, dates, contact and contact person. sevdesk: GET /Invoice/{invoiceId}.

    Annotations the server declares

    • title: Get one invoice
    • readOnlyHint: true
  • sevdesk_get_invoice_positionsList the positions (line items) of one invoice: name, quantity, price, tax rate, sums.No findings

    Why it is in this group

    • The name "sevdesk_get_invoice_positions" says "get": a word for reading.
    Description, as the server wrote it
    List the positions (line items) of one invoice: name, quantity, price, tax rate, sums. sevdesk: GET /Invoice/{invoiceId}/getPositions.

    Annotations the server declares

    • title: Get an invoice's line items
    • readOnlyHint: true
  • sevdesk_get_voucherFetch a single voucher (receipt) by id.No findings

    Why it is in this group

    • The name "sevdesk_get_voucher" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a single voucher (receipt) by id. sevdesk: GET /Voucher/{voucherId}.

    Annotations the server declares

    • title: Get one voucher
    • readOnlyHint: true
  • sevdesk_list_check_accountsList check accounts — the bank accounts, cash registers and clearing accounts sevdesk tracks payments on, with IBAN, type and sync status.No findings

    Why it is in this group

    • The name "sevdesk_list_check_accounts" says "list": a word for reading.
    Description, as the server wrote it
    List check accounts — the bank accounts, cash registers and clearing accounts sevdesk tracks payments on, with IBAN, type and sync status. sevdesk: GET /CheckAccount.

    Annotations the server declares

    • title: List payment accounts
    • readOnlyHint: true
  • sevdesk_list_communication_way_keysList the labels a communication way can carry (1 Privat, 2 Arbeit, 3 Fax, 4 Mobil, 6 Autobox, 7 Newsletter, 8 Rechnungsadresse).No findings

    Why it is in this group

    • The name "sevdesk_list_communication_way_keys" says "list": a word for reading.
    Description, as the server wrote it
    List the labels a communication way can carry (1 Privat, 2 Arbeit, 3 Fax, 4 Mobil, 6 Autobox, 7 Newsletter, 8 Rechnungsadresse). Needed for sevdesk_add_communication_way. sevdesk: GET /CommunicationWayKey.

    Annotations the server declares

    • title: List communication way keys
    • readOnlyHint: true
  • sevdesk_list_communication_waysList communication ways (email addresses, phone and mobile numbers, websites), optionally for one contact.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "sevdesk_list_communication_ways" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "email": it reads mail.
    • untrusted-inputThe description's first sentence says "list" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    List communication ways (email addresses, phone and mobile numbers, websites), optionally for one contact. sevdesk: GET /CommunicationWay.

    Annotations the server declares

    • title: List contact emails, phones and websites
    • readOnlyHint: true
  • sevdesk_list_contactsList contacts (customers, suppliers, partners, prospects).Reads private dataNo findings

    Why it is in this group

    • The name "sevdesk_list_contacts" says "list": a word for reading.

    What it can reach

    • private-dataThe name "sevdesk_list_contacts" says "list" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "list" and "contact": it reads contacts.
    Description, as the server wrote it
    List contacts (customers, suppliers, partners, prospects). By default sevdesk returns only organisations; set include_persons to also get individual persons. sevdesk: GET /Contact.

    Annotations the server declares

    • title: List contacts
    • readOnlyHint: true
  • sevdesk_list_credit_notesList credit notes (Gutschriften), filterable by status, number, date range and contact.Reads private dataNo findings

    Why it is in this group

    • The name "sevdesk_list_credit_notes" says "list": a word for reading.

    What it can reach

    • private-dataThe name "sevdesk_list_credit_notes" says "list" and "note": it reads notes.
    • private-dataThe description's first sentence says "list" and "note": it reads notes.
    Description, as the server wrote it
    List credit notes (Gutschriften), filterable by status, number, date range and contact. Status: 100 draft, 200 open/delivered, 750 partially paid, 1000 paid. sevdesk: GET /CreditNote.

    Annotations the server declares

    • title: List credit notes
    • readOnlyHint: true
  • sevdesk_list_invoicesList invoices, filterable by status, number, date range and contact.Reads private dataNo findings

    Why it is in this group

    • The name "sevdesk_list_invoices" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "contact": it reads contacts.
    Description, as the server wrote it
    List invoices, filterable by status, number, date range and contact. Status: 50 deactivated recurring, 100 draft, 200 open/due, 750 partially paid, 1000 paid. sevdesk: GET /Invoice.

    Annotations the server declares

    • title: List invoices
    • readOnlyHint: true
  • sevdesk_list_ordersList orders — quotes (Angebote), order confirmations and delivery notes — filterable by status, number, date range and contact.Reads private dataNo findings

    Why it is in this group

    • The name "sevdesk_list_orders" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "note": it reads notes.
    Description, as the server wrote it
    List orders — quotes (Angebote), order confirmations and delivery notes — filterable by status, number, date range and contact. Status: 100 draft, 200 delivered, 300 rejected, 500 accepted, 750 partially calculated, 1000 calculated. sevdesk: GET /Order.

    Annotations the server declares

    • title: List orders and quotes
    • readOnlyHint: true
  • sevdesk_list_partsList parts — the products and services in the sevdesk inventory, with prices, tax rate and stock.No findings

    Why it is in this group

    • The name "sevdesk_list_parts" says "list": a word for reading.
    Description, as the server wrote it
    List parts — the products and services in the sevdesk inventory, with prices, tax rate and stock. sevdesk: GET /Part.

    Annotations the server declares

    • title: List parts (products)
    • readOnlyHint: true
  • sevdesk_list_transactionsList check-account transactions (bank payments in and out), filterable by account, booking state, date range, payee/payer and purpose.No findings

    Why it is in this group

    • The name "sevdesk_list_transactions" says "list": a word for reading.
    Description, as the server wrote it
    List check-account transactions (bank payments in and out), filterable by account, booking state, date range, payee/payer and purpose. sevdesk: GET /CheckAccountTransaction.

    Annotations the server declares

    • title: List bank transactions
    • readOnlyHint: true
  • sevdesk_list_vouchersList vouchers — receipts and incoming/outgoing bills.No findings

    Why it is in this group

    • The name "sevdesk_list_vouchers" says "list": a word for reading.
    Description, as the server wrote it
    List vouchers — receipts and incoming/outgoing bills. Status: 50 draft, 100 unpaid/due, 1000 paid. credit_debit C = credit (revenue), D = debit (expense). sevdesk: GET /Voucher.

    Annotations the server declares

    • title: List vouchers (receipts)
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads text others write1
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Looked at Oct 22, 2026, 15:30 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
200
tools/list served without credentials
yes
Tools that change things, listed without credentials
4
Protocol version
2025-06-18
WWW-Authenticate on 401
not observed
resource_metadata in WWW-Authenticate
none
RFC 9728 protected resource metadata
https://sevdesk.usefulapi.io/.well-known/oauth-protected-resource/mcp
Authorization servers
https://sevdesk.usefulapi.io
Legacy HTTP+SSE transport
no
Dynamic client registration
yes
Client ID metadata documents
no
  • HighThe whole server

    The endpoint served tools/list without credentials, and the list has 4 tools that change things (4 destructive). Whether a call also works without credentials was not tested: tools are never called.

    Matched text

    https://sevdesk.usefulapi.io/mcp: tools/list returned 20 tools to an anonymous client, including sevdesk_create_contact (destructive), sevdesk_update_contact (destructive), sevdesk_add_communication_way (destructive), sevdesk_create_draft_invoice (destructive)

    What this check looks for

Install

Pinned to version 1.16.4. Values in angle brackets are yours to fill in.

claude mcp add --transport http sevdesk https://sevdesk.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__sevdesk__sevdesk_get_bookkeeping_system_version",
      "mcp__sevdesk__sevdesk_list_contacts",
      "mcp__sevdesk__sevdesk_get_contact",
      "mcp__sevdesk__sevdesk_list_communication_ways",
      "mcp__sevdesk__sevdesk_list_communication_way_keys",
      "mcp__sevdesk__sevdesk_list_invoices",
      "mcp__sevdesk__sevdesk_get_invoice",
      "mcp__sevdesk__sevdesk_get_invoice_positions",
      "mcp__sevdesk__sevdesk_list_vouchers",
      "mcp__sevdesk__sevdesk_get_voucher",
      "mcp__sevdesk__sevdesk_list_credit_notes",
      "mcp__sevdesk__sevdesk_list_orders",
      "mcp__sevdesk__sevdesk_list_parts",
      "mcp__sevdesk__sevdesk_list_check_accounts",
      "mcp__sevdesk__sevdesk_get_check_account_balance",
      "mcp__sevdesk__sevdesk_list_transactions"
    ],
    "ask": [],
    "deny": [
      "mcp__sevdesk__sevdesk_create_contact",
      "mcp__sevdesk__sevdesk_update_contact",
      "mcp__sevdesk__sevdesk_add_communication_way",
      "mcp__sevdesk__sevdesk_create_draft_invoice"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as sevdesk. Review it before you use it.

Capability tags behind 7 rules
  • mcp__sevdesk__sevdesk_list_contacts private-data
  • mcp__sevdesk__sevdesk_get_contact private-data
  • mcp__sevdesk__sevdesk_list_communication_ways private-data, untrusted-input
  • mcp__sevdesk__sevdesk_list_invoices private-data
  • mcp__sevdesk__sevdesk_get_invoice private-data
  • mcp__sevdesk__sevdesk_list_credit_notes private-data
  • mcp__sevdesk__sevdesk_list_orders private-data