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.
20 tools: 4 can delete or cancel things and 16 only read.
Scanned Oct 22, 2026
- Deletes or cancels4Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads16Claude Code: allow: see these tools
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/mcpTools
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 private data7
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- 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.
What this check looks forMatched 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)
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/mcpRun 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.
{
"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