sevdesk-mcp
This MCP server provides a full interface to the sevDesk API with 23 tools covering all 151 API operations, built-in read-only safeguards, and a generic API access tool. Capabilities include:
Connection & Setup: Verify API token, check server mode (read-only/dry-run), and confirm bookkeeping system version.
Voucher Management: List, get, create (draft by default), rebook VAT rules with guardrails, and upload receipt files.
Invoice Management: List, create draft invoices, get PDFs without altering state, and mark as sent with verification.
Contacts & Transactions: List customers/suppliers and bank transactions with filtering.
VAT & Bookkeeping Audits: Audit VAT mis-bookings, generate reverse-charge reports, detect duplicate vouchers, identify subscription gaps, reconcile transactions, and produce invoice aging reports.
Receipt & File Management: Compare local receipt folders against booked vouchers, get booking account guidance for tax rules and rates.
Full API Coverage: Search all 151 operations, get parameter details, and execute any operation with read-only and dry-run safety controls.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sevdesk-mcpaudit my vouchers from last month for reverse charge issues"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sevdesk-mcp
English · Deutsch
The complete MCP server for sevDesk: every API endpoint, guarded writes, and a built-in bookkeeping audit layer.
Connect Claude (or any MCP client) to your sevDesk account: list and create vouchers and invoices, reconcile bank transactions, reach all 151 API operations — and run audits that know what a wrong booking looks like: a foreign supplier booked as domestic 0 % instead of Reverse Charge §13b, a tax rule the booking account doesn't allow, a payment with no receipt behind it.
Status: v0.4.0. Live-validated against a real sevDesk account (bookkeeping system 2.0) — where the audit found exactly the class of mis-booking it was built for. See CHANGELOG.md.
Quick start
You need: Node.js ≥ 22, a sevDesk account, and an MCP client (Claude Code, Claude Desktop, or any other).
1. Get your API token
In sevDesk: Settings → Users → your user → API. The token is a 32-character hex string.
⚠️ A sevDesk API token has no scopes — it can do everything your login can. Treat it like your password, and start in read-only mode.
2. Connect your MCP client
Claude Code — one command, then put your real token into the config it writes (~/.claude.json):
claude mcp add --scope user sevdesk \
--env SEVDESK_API_TOKEN=REPLACE_ME \
--env SEVDESK_READ_ONLY=true \
-- npx -y sevdesk-mcpClaude Desktop — add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"sevdesk": {
"command": "npx",
"args": ["-y", "sevdesk-mcp"],
"env": {
"SEVDESK_API_TOKEN": "your-token",
"SEVDESK_READ_ONLY": "true"
}
}
}
}Any other MCP client works the same way: stdio transport, npx -y sevdesk-mcp (or node dist/index.js from a clone), config via environment variables. To run from source instead: git clone https://github.com/joosthel/sevdesk-mcp && cd sevdesk-mcp && npm install && npm run build.
3. First run
Restart your client and ask it to run sevdesk_ping. You should see ok: true, your bookkeeping system version (2.0 = taxRule, 1.0 = legacy taxType) and the mode (READ-ONLY). Then start asking:
"Run a VAT audit for this year and explain every high-severity finding."
"Are my US software subscriptions booked as reverse charge? What's my §13b base this quarter?"
"Which bank payments have no receipt yet?"
"Draft an invoice for contact 1009: 3 days of consulting at 800 €." (needs write mode)
"Which booking accounts allow taxRule 12?"
"Call the sevDesk API: get the last 10 orders." — the generic catalogue covers everything the curated tools don't.
What a finding looks like:
{
"severity": "high",
"code": "zero_rate_booked_as_domestic",
"voucher": "2026-06-24 · Acme Cloud, Inc. · 88.03 EUR · #INV-2043",
"detail": "Booked as \"Vorsteuerabziehbare Aufwendungen\" (taxRule 9) but every position carries 0 % VAT, and the supplier's contact is registered in \"us\".",
"suggestion": "If this is a service from a supplier established abroad, it is Reverse Charge: taxRule 12 (§13b Abs. 2, with input-tax deduction) …"
}4. Enabling writes (optional, later)
Once you trust the setup, set SEVDESK_READ_ONLY to "false" and restart the client. Every write tool accepts dryRun (and honors the global SEVDESK_DRY_RUN) — it shows exactly what would be sent without sending it. See Write safety.
Related MCP server: datev-mcp-server
Tools
24 tools cover all 151 API operations.
Audit
Tool | What it does |
| Flags reverse-charge mis-bookings, rules from the wrong side of the books, tax rules the booking account doesn't allow, rates that contradict the tax rule, sums that don't add up, suppliers booked inconsistently. Uses the supplier contact's country where available |
| Totals the §13b tax base for a period — split into nets-to-zero (rule 12/14), actually payable (rule 13) and own revenue (rule 5) |
| Repeated document numbers, same supplier + amount within N days, vouchers stuck in Entwurf |
| Detects monthly cadences per supplier and reports the missing months |
| Diffs a local folder of receipt PDFs against booked vouchers, both directions (requires |
| Matches bank transactions against vouchers by amount and date proximity: payments without a receipt, vouchers without a payment |
| Who owes you money and for how long: open invoices bucketed by days overdue, partially paid remainders, drafts never sent |
Everyday
sevdesk_ping · sevdesk_summarize · sevdesk_list_vouchers · sevdesk_get_voucher · sevdesk_list_invoices · sevdesk_list_contacts · sevdesk_list_transactions · sevdesk_receipt_guidance · sevdesk_upload_voucher_file · sevdesk_create_voucher · sevdesk_set_tax_rule · sevdesk_create_invoice · sevdesk_get_invoice_pdf · sevdesk_mark_invoice_sent
Highlights: sevdesk_summarize aggregates invoices or vouchers server-side — counts and net/tax/gross sums grouped by month, status or contact — so questions like "revenue in Q2" or "expenses by supplier" cost a few hundred tokens however large the ledger is. sevdesk_receipt_guidance answers "which booking account / tax rule / rate combinations does sevDesk actually accept" from sevDesk's own validation table. sevdesk_set_tax_rule rebooks a draft voucher onto a different VAT rule with guardrails. sevdesk_create_invoice always creates drafts — nothing reaches a customer without review. sevdesk_get_invoice_pdf saves the rendered PDF without touching the invoice's send state.
Full coverage
sevdesk_list_operations · sevdesk_describe_operation · sevdesk_call
Rather than registering 151 tools and swamping the client's tool list, the server ships a searchable catalogue generated from sevDesk's OpenAPI document. Search for what you need, read its signature, call it. Every endpoint is reachable.
Common workflows
The tools compose — these are everyday bookkeeping jobs, each a single prompt:
Month-end close: "Do a month-end check for June: pending drafts, bank payments without receipts, vouchers without payments, VAT findings, sums that don't add up."
Chasing money: "Who owes me money? Show overdue invoices by age, and tell me which ones were never even marked as sent."
Receipt discipline: "Compare my receipts folder with sevDesk and list what's missing on either side." (needs
SEVDESK_RECEIPT_DIRS)Recurring costs: "Which subscriptions stopped appearing, and which suppliers am I booking inconsistently?"
Before the VAT return: "Run the VAT audit and the §13b report for the quarter and summarize what my Steuerberater should know."
Anything else: "Call the sevDesk API: …" — orders, credit notes, exports, parts and every other endpoint are reachable through the catalogue.
Agent Skill (optional)
The package ships an Agent Skill with these workflows spelled out — monthly close order, receipt triage, §13b investigation, audit-finding interpretation — so agents load the know-how on demand instead of rediscovering it each session. For Claude Code, copy it next to your project:
cp -r node_modules/sevdesk-mcp/skills/sevdesk-bookkeeping .claude/skills/(or copy from a clone of this repo). Clients without skill support lose
nothing: the server's own instructions and tool descriptions carry the
essentials.
Configuration
Variable | Default | Purpose |
| (required) | Your sevDesk API token |
|
| Hide write tools; |
|
| Show what a write would send, without sending it |
|
|
|
|
| Deprecated — use |
| (unset — file tools disabled) | Colon-separated allowlist of directories the receipt file tools may read and write |
|
| Override the API host |
|
| Per-request timeout |
|
| Retries with jittered backoff and a clamped |
|
| Client-side pacing in requests/second (token bucket), so bursty audit fan-outs don't collide with sevDesk's throttle. |
|
| Log |
Set these in the env block of your MCP client — that is the supported path and the
one the client controls. For runs outside a client (npm run dev, node dist/index.js
from a clone), copy .env.example to .env in the package root and the server reads it
at startup. The file is read from the package root, never the working directory, and
real environment variables always win over it, so a client's env block can never be
shadowed by a stale .env. .env is gitignored.
The threat model, guarantees and vulnerability reporting are documented in SECURITY.md.
Privacy Policy
Everything runs locally: your token and accounting data flow only between your MCP client and the sevDesk API — no storage, no telemetry, no third parties. Full policy: PRIVACY.md.
Write safety
Read-only mode is enforced three times: write tools are hidden from the tool list, the dispatcher refuses them, and the HTTP client refuses every mutating request independently. With writes enabled:
Every write tool accepts a per-call
dryRunand honors the globalSEVDESK_DRY_RUN.sevdesk_create_voucherandsevdesk_create_invoicedefault to drafts — nothing is booked or sent silently.sevdesk_set_tax_ruleandsevdesk_mark_invoice_sentrefuse enshrined documents and verify their changes by reading the document back.There is deliberately no email-send tool, and
sevdesk_get_invoice_pdfnever overwrites an existing file.Booked and paid vouchers are deliberately out of scope for API rebooking. The sevDesk API only updates drafts, and resetting a paid foreign-currency voucher recalculates its EUR amounts at today's exchange rate — silently changing historical values. Correct booked vouchers in the sevDesk UI, where the original amounts stay visible against the receipt.
The tax model
With sevdesk-Update 2.0, sevDesk models VAT through taxRule — split into a revenue set and an expense set. Older documents still carry the deprecated taxType string; the server understands both generations.
Expense rules (incoming vouchers, creditDebit: "C"):
taxRule | Meaning | Rates | Legacy |
| Innergemeinschaftliche Erwerbe | 0 / 7 / 19 % | — |
| Vorsteuerabziehbare Aufwendungen | 0 / 7 / 19 % |
|
| Nicht vorsteuerabziehbare Aufwendungen | 0 % |
|
| Reverse Charge §13b Abs. 2, mit Vorsteuerabzug | 0 % | — |
| Reverse Charge §13b, ohne Vorsteuerabzug | 0 % | — |
| Reverse Charge §13b Abs. 1, EU | 0 % | — |
| Nicht steuerbar (Ausgabe) | 0 % | — |
Revenue rules (outgoing documents, creditDebit: "D"):
taxRule | Meaning | Rates | Legacy |
| Umsatzsteuerpflichtige Umsätze | 0 / 7 / 19 % |
|
| Ausfuhren | 0 % | — |
| Innergemeinschaftliche Lieferungen | 0 / 7 / 19 % |
|
| Steuerfreie Umsätze §4 UStG | 0 % | — |
| Reverse Charge §13b (Feld 60) | 0 % | — |
| Steuer nicht erhoben nach §19 UStG | 0 % |
|
| Nicht im Inland steuerbare Leistung | 0 % |
|
| Nicht steuerbar (Einnahme) | 0 % | — |
(Rules 18–21 — One Stop Shop and §18b — exist on invoices but are not accepted on vouchers; the audit flags them if they appear anyway.)
The classic mis-booking: a subscription from a supplier established abroad, booked as a plain domestic expense (taxRule 9) with a 0 % position. It looks harmless — reverse charge nets to zero for anyone with input-tax deduction — but it silently drops the §13b tax base out of your VAT return. The correct booking is taxRule 12 (or 13/14, depending on your situation). A CSV export cannot show you the difference, because it only carries the rate, not the rule. sevdesk_audit_vat finds it.
Development
npm run dev # run from source
npm test # unit tests
npm run typecheck # tsc --noEmit
npm run build:catalog # regenerate the operation catalogue from openapi/sevdesk-openapi.yamlSee CONTRIBUTING.md.
Roadmap
Live validation against a real account (bookkeeping system 2.0)
Contact-country detection, booking-account guidance checks, bank reconciliation
Guarded invoice workflow (draft-only creation, PDF export, mark-as-sent)
Remote hosting via the Streamable HTTP transport with a per-request token — server assembly is already transport-agnostic (
src/server.ts)Compile-time endpoint types generated from the OpenAPI spec
Integration tests against a sevDesk sandbox
Export helpers for the annual VAT return (Kz 46 / 47)
License
MIT
Available Tools
23 toolssevdesk_audit_vatAudit VAT treatment of vouchersA
Sweep vouchers (Belege) and flag VAT problems: foreign suppliers booked as plain domestic expenses (taxRule 9/10) instead of Reverse Charge §13b (taxRule 12/13/14), revenue rules sitting on expense vouchers, tax rates that contradict the chosen rule, sums that do not add up, and the same supplier booked inconsistently across vouchers. Read-only. This is the check that tells you whether your §13b amounts will be reported correctly in the VAT return.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of period, dd.mm.yyyy or yyyy-mm-dd. | |
| from | No | Start of period, dd.mm.yyyy or yyyy-mm-dd. | |
| maxVouchers | No | Safety cap on vouchers examined (default 2000). | |
| includePositions | No | Fetch line items to check rates per position (default true, slower). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explicitly states 'Read-only,' which is good. It lists the types of checks performed, but doesn't mention permissions, rate limits, or behavior for empty periods.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main action 'Sweep vouchers,' and packs multiple details without being verbose. Could be slightly more structured with bullet points, but effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters with full schema coverage and no output schema, the description provides sufficient context about the tool's purpose and checks. It doesn't describe return format, but that's acceptable without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The tool description adds no extra meaning beyond the schema (e.g., 'to' and 'from' are clear from schema). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Sweep vouchers and flag VAT problems' with specific problem types (foreign suppliers, revenue rules, etc.). It distinguishes itself from siblings like sevdesk_reverse_charge_report by focusing on auditing VAT treatment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'the check that tells you whether your §13b amounts will be reported correctly.' It implies usage before VAT return but doesn't explicitly state when not to use or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_callCall any sevDesk API operationA
Execute any operation from the catalogue. Path parameters are taken from params by name; remaining params entries become query parameters. Nested objects are encoded in sevDesk's bracket syntax (a[b]=c). Mutating operations are refused when the server runs with SEVDESK_READ_ONLY=true, and are only described (not sent) when SEVDESK_DRY_RUN=true or dryRun is passed. ⚠️ This tool can change data in sevDesk.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body, for POST/PUT operations. | |
| dryRun | No | Describe the request that would be sent instead of sending it. | |
| params | No | Path and query parameters, keyed by parameter name. | |
| operationId | Yes | Exact operationId from sevdesk_list_operations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully bears the burden. It discloses key behaviors: parameter encoding (bracket syntax), mutation refusal under SEVDESK_READ_ONLY=true, and description-only mode under SEVDESK_DRY_RUN=true or dryRun parameter. The warning '⚠️ This tool can change data' further emphasizes mutability. All relevant behavioral traits are transparently documented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of about 100 words, front-loading the core purpose. Each sentence contributes unique information (purpose, parameter mapping, encoding, mutation conditions). Slightly verbose in the middle, but overall efficient and well-structured. Loses a point for minor redundancy (e.g., 'are only described (not sent)' could be tighter).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (generic API caller, 4 parameters, no output schema), the description covers essential usage and behavior. However, it lacks any description of the return value or response structure, which is significant since there is no output schema. The term 'catalogue' is referenced but not explained (though understood via sibling tool sevdesk_list_operations). The description handles the basics but leaves the agent needing to infer response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schemas have 100% coverage, so baseline is 3. The description adds meaningful operational details beyond the schema: it clarifies that path parameters are taken by name from `params` and the remainder become query parameters, and it describes the bracket syntax for nested objects. The `dryRun` parameter behavior is also elaborated. These additions justify a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Execute any operation from the catalogue', clearly stating the tool's purpose: a generic API caller. This distinguishes it from sibling tools, which are specific operations (e.g., sevdesk_list_contacts, sevdesk_create_invoice). The verb 'execute' and resource 'any operation' are precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how parameters are mapped (path from params by name, rest as query) and how nested objects are encoded, which is useful usage guidance. However, it does not explicitly state when to prefer this generic tool over sibling-specific tools, nor does it mention when not to use it (e.g., if a specific tool exists). The dry run and read-only behaviors are noted, but the high-level 'when to use' is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_create_invoiceCreate a draft invoiceA
Create an outgoing invoice as a draft (status 50) — always a draft, so nothing reaches a customer without review in sevDesk. Positions carry name, quantity, price and tax rate; the contact's address is filled in automatically. Honors SEVDESK_DRY_RUN. ⚠️ This tool can change data in sevDesk.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview the request without sending it. | |
| header | No | Optional invoice header text. | |
| currency | No | Currency (default EUR). | |
| contactId | Yes | Numeric id of the customer contact. | |
| positions | Yes | Invoice line items. | |
| taxRuleId | No | Revenue tax rule id (default 1, or 11 for Kleinunternehmer). | |
| invoiceDate | No | Invoice date, yyyy-mm-dd (default today). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool changes data (with a warning emoji), always creates a draft, honors the SEVDESK_DRY_RUN flag, and auto-fills the contact address. It does not cover authentication or rate limits, but for a creation tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, each sentence adding essential information. It is front-loaded with the main purpose and uses a warning symbol for emphasis, making it efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no output schema, 7 parameters, 2 required), the description covers all critical aspects: what it does, key parameters, behavioral traits (draft, dry-run, data mutation), and auto-fill behavior. No gaps remain for an agent to misinterpret.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining that positions require name, quantity, price, and tax rate, that the contact address is auto-filled, and that it honors dry run. This goes beyond the schema's property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create', the resource 'outgoing invoice', and specifies it is always a draft (status 50). This distinguishes it from other tools like sevdesk_list_invoices or sevdesk_mark_invoice_sent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (to create a draft invoice) and the important constraint that it always creates a draft. However, it does not explicitly mention when not to use it or provide alternative tools for sending invoices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_create_voucherCreate a voucherA
Create a voucher via /Voucher/Factory/saveVoucher. Defaults to status 50 (Entwurf) so nothing is booked without you reviewing it in sevDesk. Set taxRule 5 for Reverse Charge §13b, 1 for normal domestic VAT, 3 for intra-EU. WRITE operation. For anything this wrapper does not cover, use sevdesk_call with operationId 'voucherFactorySaveVoucher'. ⚠️ This tool can change data in sevDesk.
| Name | Required | Description | Default |
|---|---|---|---|
| extra | No | Additional top-level voucher fields merged into the payload verbatim. | |
| dryRun | No | Show the payload instead of sending it. | |
| status | No | 50 = Entwurf, 100 = offen, 1000 = bezahlt (default 50). | |
| payDate | No | Payment date, dd.mm.yyyy — only with status 1000. | |
| fileName | No | Filename token returned by sevdesk_upload_voucher_file. | |
| positions | Yes | Line items. | |
| taxRuleId | No | VAT regulation id. | |
| creditDebit | No | C = credit, D = debit. | |
| description | No | Document/invoice number. | |
| voucherDate | Yes | Voucher date, dd.mm.yyyy. | |
| supplierName | Yes | Supplier name as it should appear on the voucher. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explicitly labels this as a WRITE operation and warns that it changes data, but does not discuss rate limits, authentication requirements, or other side effects beyond the basic mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences with no wasted words: first states purpose, second explains safe default, third gives critical tax rule mapping, fourth mentions fallback. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, nested positions) and lack of output schema, the description covers core behavior, defaults, special tax rules, and when to use the sibling tool. It is sufficient for an agent to understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by mapping specific taxRule values to real-world concepts (e.g., '5 for Reverse Charge §13b') and noting the default status, which goes beyond the schema's enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a voucher via the specific API endpoint, distinguishes it from the generic sevdesk_call sibling, and provides immediate context on default status and tax rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains that creation defaults to a draft status for safety and advises using sevdesk_call for anything not covered, giving clear guidance on when to use alternatives. However, it does not explicitly state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_describe_operationDescribe a sevDesk API operationA
Show the full parameter list, request-body shape and an example call for one operationId. Always do this before sevdesk_call on an operation you have not used before.
| Name | Required | Description | Default |
|---|---|---|---|
| operationId | Yes | Exact operationId, as returned by sevdesk_list_operations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns parameter list, request-body shape, and example call, which is transparent about the output. It could additionally mention whether it is read-only, but the description is sufficient for a documentation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence states the purpose, and the second provides usage guidance. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a documentation helper with no output schema, the description adequately informs the agent of what it will receive (parameter list, request-body shape, example call). It could specify the format (e.g., as JSON) but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'operationId,' and the schema already documents it as 'Exact operationId, as returned by sevdesk_list_operations.' The description does not add additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Show the full parameter list, request-body shape and an example call for one operationId,' which is a specific verb and resource. It also distinguishes itself from sibling tools like sevdesk_call by providing preparatory usage guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly instructs 'Always do this before sevdesk_call on an operation you have not used before,' providing explicit context on when to use this tool and when to use its sibling sevdesk_call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_diff_receipt_folderDiff a receipt folder against sevDeskA
Compare a local folder of receipt PDFs against the vouchers booked in sevDesk and report both directions: files that appear to have no voucher, and vouchers with no matching file. Matching uses the #reference in the filename first, then date + amount. Filenames are expected to look like '260626_Acme-Cloud_#INV-2043.pdf' or '2026-06-26_AcmeCloud_45.60.pdf'. Reads the filesystem but never writes; sevDesk access is read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only consider vouchers up to this date. | |
| from | No | Only consider vouchers from this date on. | |
| directory | Yes | Absolute path to the folder holding the receipt files. | |
| recursive | No | Descend into subdirectories (default false). | |
| extensions | No | File extensions to consider (default ['.pdf']). | |
| dayTolerance | No | Days a file date may differ from the voucher date (default 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully assumes the burden of disclosing behavioral traits. It explicitly states that the tool 'reads the filesystem but never writes' and 'sevDesk access is read-only,' which reassures the agent about safety and side effects. The matching algorithm and the bidirectional report are also disclosed, leaving no ambiguity about behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—only three sentences—yet covers purpose, behavior, matching algorithm, and file format expectations without any wasted words. The first sentence immediately establishes the core function, making it efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description adequately explains what the tool returns: a report of mismatches in both directions. The matching algorithm and parameter roles are fully described. For a reconciliation tool with 6 parameters, this description provides all necessary context for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 6 parameters with descriptions (100% coverage), so the baseline is 3. The description adds meaning beyond the schema by explaining how the parameters interact: from/to filter vouchers, dayTolerance relaxes date matching, and extensions and recursive control file scanning. This contextual enrichment justifies a score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: compare local receipt PDFs against sevDesk vouchers and report mismatches. It specifies the matching algorithm, file naming conventions, and the bidirectional nature of the report. This stands out distinctly from sibling tools, which focus on listing, creating, or manipulating sevDesk entities, not local file reconciliation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (reconciling local receipts with sevDesk vouchers) and details the matching logic and expected file formats. It implicitly guides usage by explaining how parameters like from/to and dayTolerance affect matching. However, it does not explicitly state when not to use it or mention alternatives, though the sibling list provides enough context for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_find_duplicatesFind duplicate and stuck vouchersB
Detect vouchers booked twice (same document number, or same supplier + amount within a few days) and vouchers left in Entwurf/offen status. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of period, dd.mm.yyyy or yyyy-mm-dd. | |
| from | No | Start of period, dd.mm.yyyy or yyyy-mm-dd. | |
| dayWindow | No | How many days apart two same-amount vouchers may be to count as duplicates (default 7). | |
| maxVouchers | No | Safety cap (default 2000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'read-only', disclosing that the tool does not modify data. However, with no annotations provided, it does not disclose other behavioral traits such as rate limits, data load, or whether it aggregates across all users. The disclosure is minimal but accurate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core detection logic and adding 'read-only' at the end. Every word is necessary and there is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 optional parameters and no output schema, yet the description does not specify default behavior (e.g., default date range) or the return format (e.g., list of voucher IDs or details). This leaves significant ambiguity for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning beyond the schema: it mentions detection criteria but does not elaborate on parameters like 'from' or 'dayWindow' beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool detects vouchers booked twice by same document number or same supplier+amount within a few days, and vouchers stuck in draft/open status. It uses specific verbs 'detect' and states 'read-only', distinguishing it from listing or creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings like sevdesk_list_vouchers or sevdesk_get_voucher. The description does not mention prerequisites, alternatives, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_get_invoice_pdfSave an invoice PDFA
Fetch the rendered PDF of an invoice and save it into a directory from the SEVDESK_RECEIPT_DIRS allowlist. Never changes the invoice's send state (preventSendBy). Read-only towards sevDesk.
| Name | Required | Description | Default |
|---|---|---|---|
| directory | Yes | Absolute path of an allowlisted directory to save the PDF into. | |
| invoiceId | Yes | Numeric invoice id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the tool is read-only, saves to an allowlisted directory, and does not alter the invoice's send state. Some behavior like error handling or directory creation is not detailed, but the key safety and I/O traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extraneous words. The first sentence states the main action and condition, the second adds safety behavior. Perfectly concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema, the description covers purpose, safety, and constraints. The missing aspect is whether the invoice must be in a certain state (e.g., already sent) for PDF generation, but overall it provides enough context for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have schema descriptions, and the description adds the critical constraint that the directory must be from the SEVDESK_RECEIPT_DIRS allowlist, which goes beyond the schema's definition of 'Absolute path of an allowlisted directory.' This extra context aids correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches and saves an invoice PDF to an allowlisted directory. The verb 'fetch' and resource 'invoice PDF' are specific, and the tool distinguishes itself from siblings like sevdesk_list_invoices and sevdesk_create_invoice which handle listing and creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating it is read-only and never changes the invoice's send state. While it does not explicitly list alternatives, the context is sufficient for an agent to understand when to use this tool (to download a PDF) versus other invoice-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_get_voucherGet one voucher with its positionsA
Fetch a single voucher including its line items, with the VAT treatment and per-position tax rates decoded. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| voucherId | Yes | Numeric voucher id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'Read-only', indicating no side effects. It also adds context about the return format (decoded VAT/tax rates). However, it does not mention error handling or what happens if the voucher does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with no wasted words. The main action is front-loaded, and every sentence provides essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's behavior for a simple read operation. It explains what is fetched and the additional decoded information. Without an output schema, the description provides sufficient context for an AI agent to understand the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% coverage for the single parameter 'voucherId', describing it as 'Numeric voucher id.'. The description does not add further parameter details but is sufficient given the schema completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch a single voucher'), resource ('voucher'), and scope ('including its line items, with the VAT treatment and per-position tax rates decoded'). It distinguishes from sibling tools like 'sevdesk_list_vouchers' which focuses on listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It does not mention when to use this over 'sevdesk_list_vouchers' or other tools, nor does it specify any prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_invoice_agingOverdue invoices (receivables aging)A
Who owes you money and for how long: open and partially paid invoices bucketed by days overdue (invoice date + payment terms), the outstanding remainder per invoice, drafts that were never sent, and open invoices missing a send mark. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of period, dd.mm.yyyy or yyyy-mm-dd. | |
| from | No | Start of period (invoice date), dd.mm.yyyy or yyyy-mm-dd. | |
| maxItems | No | Safety cap (default 2000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description correctly marks the tool as read-only and explains the data returned. It lacks details on authentication, rate limits, or performance but covers the key safety trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences with no filler. Every part adds value: what the tool does, how bucketing works, special cases, and safety note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description adequately describes the return categories (bucketed amounts, drafts, missing send marks). Lacks exact structure but sufficient for a straightforward aging report.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the description adds context about overdue calculation (invoice date + payment terms) but does not elaborate on the parameters themselves beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a receivables aging report: open and partially paid invoices bucketed by days overdue, including drafts and missing send marks. This sharply distinguishes it from siblings like sevdesk_list_invoices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for overdue invoice analysis but does not explicitly state when not to use or list alternatives. It provides clear context for when to choose this tool over basic listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_list_contactsList contactsB
List customers and suppliers. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows (default 200). | |
| search | No | Case-insensitive substring of the contact name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions 'Read-only,' which is a behavioral trait, but no annotations are provided to supplement this. It does not disclose pagination behavior, default limit, sorting, or error handling, which are important for a list operation with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two short sentences that convey the essential purpose and a behavioral trait. No unnecessary words, making it easy to process quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description should provide more context about return values, pagination, or filtering behavior. It only states listing of customers and suppliers, leaving the agent uncertain about what data is returned and how the 'limit' and 'search' parameters affect results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both 'limit' and 'search' have descriptions). The tool description does not add meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'list' and the resource 'contacts' (customers and suppliers). It distinguishes this tool from sibling tools like sevdesk_list_vouchers and sevdesk_list_invoices, which handle different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates the tool is for listing contacts, but it provides no explicit guidance on when to use it versus alternatives, nor any prerequisites or exclusions. The context of sibling tools shows many list operations, but no differentiation is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_list_invoicesList outgoing invoicesA
List invoices you issued, with number, customer, sums, status and dates. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date. | |
| from | No | Start date. | |
| limit | No | Maximum rows (default 200). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description correctly identifies the tool as 'Read-only,' indicating idempotency and safety. However, it does not disclose pagination behavior, rate limits, or response structure beyond the listed fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence plus 'Read-only' – extremely concise with no redundancy. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity list tool, the description covers purpose, returned data, and safety. Missing details about optional parameters and default limit are in schema; no output schema is needed. Adequate for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage (to, from, limit). The description adds value by listing returned fields (number, customer, sums, status, dates), helping users understand parameter context and output expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List invoices you issued' with specific fields (number, customer, sums, status, dates). It matches the title 'outgoing invoices' and distinguishes from invoice creation and PDF retrieval siblings, though not explicitly from other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies read-only usage via 'Read-only' but does not explicitly state when to use this tool versus alternatives like sevdesk_create_invoice or sevdesk_get_invoice_pdf. No exclusions or context for other list operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_list_operationsList sevDesk API operationsA
Search the sevDesk API catalogue (151 operations, API 2.0.0). Use this to find the operationId for anything not covered by a dedicated tool, then call sevdesk_describe_operation for its parameters and sevdesk_call to execute it. Available tags: AccountingContact, Basics, CheckAccount, CheckAccountTransaction, CommunicationWay, Contact, ContactAddress, ContactField, CreditNote, CreditNotePos, Export, Invoice, InvoicePos, Layout, Order, OrderPos, Part, Report, Tag, Voucher, VoucherPos.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Restrict to one resource tag, e.g. 'Voucher' or 'Invoice'. | |
| kind | No | Filter by effect: read (GET), write (POST/PUT/DELETE), or all. | |
| limit | No | Maximum results (default 60). | |
| query | No | Free-text search over operationId, path, tags and summary, e.g. 'voucher pdf'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes a read-only search operation with no side effects. Lists available tags and number of operations. Lacks explicit non-destructive statement but context is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded sentences with no redundancy. Every sentence adds value (purpose, usage, tags).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a catalogue search tool: explains what it returns, how to use it, and lists all tags. Output schema not needed as return structure is implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 4 parameters are described in the schema (100% coverage). The description adds details like free-text search scope and default limit, enhancing utility beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the sevDesk API catalogue to find operationIds for non-dedicated tools, differentiating it from sibling tools that handle specific resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use ('for anything not covered by a dedicated tool') and outlines the workflow: find operationId, then use describe_operation and call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_list_transactionsList bank transactionsA
List bank transactions, optionally for one account and period. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date. | |
| from | No | Start date. | |
| limit | No | Maximum rows (default 200). | |
| checkAccountId | No | Restrict to one bank account id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses 'Read-only', indicating no mutations. With no annotations, this is the only behavioral trait mentioned. It lacks details on pagination, rate limits, or error handling, but the schema covers the limit parameter hinting at result sizing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence plus 'Read-only.' It is front-loaded and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not explain what the tool returns (e.g., list of transaction objects). Given the tool has 4 parameters and is a data retrieval operation, the description lacks completeness about the result format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description adds value by linking 'optionally for one account and period' to the checkAccountId and date parameters, providing context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists bank transactions, optionally filtered by account and period. It is a specific verb+resource combination that is distinct from sibling tools like sevdesk_reconcile_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (listing transactions with optional filters) and includes 'Read-only' hinting at safe usage. However, it does not explicitly state when not to use or mention alternatives, leaving the agent to infer from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_list_vouchersList vouchers (Belege)B
List incoming/outgoing vouchers with the fields that matter for bookkeeping: date, supplier, gross/net/tax, status and the decoded VAT treatment. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End date, dd.mm.yyyy or yyyy-mm-dd. | |
| from | No | Start date, dd.mm.yyyy or yyyy-mm-dd. | |
| limit | No | Maximum rows to return (default 200). | |
| status | No | Filter by status. | |
| supplier | No | Case-insensitive substring of the supplier name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states 'Read-only' and lists returned fields. It omits important behavioral details like pagination behavior (despite having a limit parameter), ordering, default filters, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of one well-structured sentence. It is front-loaded with the core purpose and does not contain filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description should be more comprehensive. It lacks information on default limit, pagination hints, ordering, and whether both incoming and outgoing vouchers are always listed. Such gaps reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds context about the returned fields but does not enhance understanding of the parameters beyond what the schema already provides. No parameter details are added, so the score remains at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the resource (vouchers), and the key fields returned (date, supplier, gross/net/tax, status, VAT treatment). It also identifies the tool as read-only, distinguishing it from mutation tools like sevdesk_create_voucher.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus siblings such as sevdesk_list_invoices or sevdesk_get_voucher. No explicit when-to-use, when-not-to-use, or alternative suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_mark_invoice_sentMark an invoice as sentA
Mark an invoice as sent without emailing anything (send types: PDF download, print, postal — deliberately no email). Refuses enshrined invoices and verifies the result. Honors SEVDESK_DRY_RUN. ⚠️ This tool can change data in sevDesk.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview the request without sending it. | |
| sendType | No | How the invoice left the house (default VPDF). | |
| invoiceId | Yes | Numeric invoice id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that the tool changes data, honors dry run, refuses certain invoices, and verifies results. It does not cover authorization or rate limits, but the key behavioral traits are clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with a warning, all relevant. No wasted words; front-loaded with the main action and followed by important constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the action, refusal on enshrined invoices, dry run support, and verification. It lacks return value details but is sufficient for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the sendType enum meanings ('PDF download, print, postal') and clarifying that email is excluded, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'mark as sent' and the resource 'invoice', and specifies the scope without emailing. It lists send types (PDF download, print, postal), distinctly differentiating from siblings like sevdesk_create_invoice or sevdesk_get_invoice_pdf.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that it refuses enshrined invoices and honors SEVDESK_DRY_RUN, providing context for when to use. It does not explicitly name alternatives but implies email-based sending is not included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_pingCheck the sevDesk connectionA
Verify that the API token works, report the server mode (read-only / dry-run) and the account's bookkeeping system version (1.0 uses taxType, 2.0 uses taxRule). Run this first when something behaves unexpectedly.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden of behavioral disclosure. It details the outputs (server mode, bookkeeping version) and implies the tool's non-destructive nature. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the purpose, then provides output details and usage hint. Every sentence earns its place with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no nested objects, no output schema, and a simple diagnostic purpose, the description is complete. It explains what the tool returns and when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema description coverage is 100%. The description adds no parameter info because none is needed. The baseline for no parameters is a score of 4-5, and the description meets expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: verify API token, report server mode (read-only/dry-run) and bookkeeping system version. This is a specific verb-resource combination that distinguishes it from sibling tools that perform data operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to 'Run this first when something behaves unexpectedly,' providing clear when-to-use guidance. It does not mention when not to use or alternatives, but the context is sufficient for a diagnostic tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_receipt_guidanceBooking-account guidanceA
sevDesk's own booking guidance: which DATEV/SKR accounts exist for expenses or revenue and which tax rules and rates each of them allows — the table sevDesk validates against when a voucher is booked. Filter by text, account number or tax rule; output is capped, never the full account dump. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | Which side to fetch guidance for (default expense). | |
| limit | No | Maximum accounts to return (default 20). | |
| query | No | Case-insensitive substring over account number, name and description. | |
| taxRuleId | No | Only accounts that allow this tax rule id, e.g. '12'. | |
| accountNumber | No | Exact SKR account number, e.g. '6837'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description handles behavioral disclosure well. It explicitly states 'Read-only' and 'output is capped, never the full account dump.' This informs the agent about safety and limitations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long. It front-loads the core purpose and adds key behavioral notes. Every sentence is informative with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a guidance tool with 5 parameters and no output schema, the description adequately covers what the tool does and its constraints. It lacks details on the exact response structure, but the context makes it usable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by summarizing filtering capabilities ('Filter by text, account number or tax rule') and mentioning the cap behavior, but does not provide substantial new detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides booking guidance: which DATEV/SKR accounts exist for expenses/revenue and their allowed tax rules/rates. It specifies it's the validation table sevDesk uses. This distinguishes it from other sevdesk tools like sevdesk_create_voucher or sevdesk_list_vouchers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions filtering by text, account number, or tax rule, and that output is capped. It implies usage for exploring accounts before booking. It does not explicitly state when not to use it or name alternatives, but the purpose is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_reconcile_transactionsReconcile bank transactions with vouchersA
Match bank transactions against vouchers by amount and date proximity, in both directions: payments with no plausible voucher (missing receipts) and non-draft vouchers no payment covers. Matching is a heuristic — treat the result as a checklist, not a verdict. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of period, dd.mm.yyyy or yyyy-mm-dd. | |
| from | No | Start of period, dd.mm.yyyy or yyyy-mm-dd. | |
| maxItems | No | Safety cap per side (default 2000). | |
| dayWindow | No | Maximum days between payment and voucher date to still count as a match (default 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the matching is heuristic, read-only, and works in both directions, providing useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description covers purpose, behavior, and usage caveat. Missing details about output format, but the 'checklist' hint suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions, so the description adds no additional parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool matches bank transactions against vouchers by amount and date proximity, and distinguishes from sibling tools like sevdesk_list_transactions or sevdesk_list_vouchers by focusing on reconciliation in both directions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises treating the result as a checklist rather than a verdict, indicating when to use it for heuristic checking. However, it does not explicitly state when not to use it or point to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_reverse_charge_reportReverse-charge (§13b) reportA
Total the reverse-charge (§13b) tax base for a period, split by meaning: expense vouchers with input-tax deduction (taxRule 12/14, nets to zero), without deduction (taxRule 13, VAT actually payable), and your own §13b revenue (taxRule 5). Separately lists vouchers that look like they belong in the report but are not booked that way. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of period, dd.mm.yyyy or yyyy-mm-dd. | |
| from | No | Start of period, dd.mm.yyyy or yyyy-mm-dd. | |
| rate | No | VAT rate to apply to the base (default 19). | |
| maxVouchers | No | Safety cap (default 2000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Declares 'Read-only' behavior, which is critical. No annotations, so description carries full burden. Discloses that it lists mismatched vouchers, adding transparency about edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph with clear structure: main action, breakdown by meaning, and note on mismatched vouchers. Front-loaded with purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given complexity of reverse-charge reporting, description defines categories and mentions mismatched vouchers. No output schema, so return value description is vague but sufficient for high-level understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description does not elaborate on parameters like 'from', 'to', 'rate', or 'maxVouchers' beyond schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Total' and identifies resource 'reverse-charge (§13b) tax base.' Clearly states the split by meaning and distinguishes from sibling tools like sevdesk_audit_vat by focusing on reverse-charge reporting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. It describes output categories and mentions mismatched vouchers, implying use for reverse-charge reporting but lacks comparison with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_set_tax_ruleChange a voucher's tax ruleA
Rebook a voucher onto a different VAT rule (e.g. from 'Vorsteuerabziehbare Aufwendungen' onto Reverse Charge §13b, taxRule 12) with guardrails: refuses enshrined vouchers and rules from the wrong side of the books, verifies the result afterwards, and previews the request with dryRun. The voucher's positions keep their rates. Only works on draft vouchers — the sevDesk API refuses updates on booked/paid ones, and resetting a paid foreign-currency voucher via the API recalculates its EUR amounts at today's rate. Correct paid vouchers in the sevDesk UI instead. ⚠️ This tool can change data in sevDesk.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview the request without sending it. | |
| taxRuleId | Yes | Target tax rule id. | |
| voucherId | Yes | Numeric voucher id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: it is a write operation that can change data, it refuses enshrined vouchers and wrong-side rules, it verifies the result, previews with dryRun, and preserves position rates. It warns about foreign-currency recalculation at today's rate. All behavioral traits are explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and contains substantial information, but is slightly lengthy. While every sentence adds value, it could be trimmed slightly without losing clarity. Still, it is well-structured and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the operation (changing tax rules with guardrails) and the lack of an output schema, the description is fairly complete. It explains what happens to positions and currency, but does not detail the response format or how verification results are returned. Still adequate for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining that voucherId is numeric, giving a concrete example for taxRuleId (12 for Reverse Charge), and clarifying dryRun previews the request. This goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: rebooking a voucher onto a different VAT rule. It specifies the resource (voucher) and the action (changing tax rule) with specific examples like 'Reverse Charge §13b, taxRule 12'. It distinguishes itself from sibling tools, which are primarily for listing, creating, or auditing vouchers, not modifying VAT rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (draft vouchers) and when not to use (paid/booked vouchers, enshrined vouchers, wrong-side rules). Provides an alternative: 'Correct paid vouchers in the sevDesk UI instead.' Also mentions guardrails and verification, giving clear context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_subscription_gapsFind gaps in recurring supplier chargesA
Detect suppliers that bill on a monthly cadence and report months with no voucher. A subscription that appears in March, April and June but not May almost always means a receipt was never entered. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | End of period, dd.mm.yyyy or yyyy-mm-dd. | |
| from | No | Start of period, dd.mm.yyyy or yyyy-mm-dd. | |
| minMonths | No | How many distinct months a supplier needs before it counts as recurring (default 3). | |
| maxVouchers | No | Safety cap (default 2000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Read-only,' which clarifies no write operations occur, but it does not address permissions, performance impact, or whether the tool queries live data or cached snapshots.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences pack purpose, an example usage scenario, and a behavioral note. Every word contributes, and the key action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given moderate complexity (4 parameters, no output schema), the description lacks details about the report format (e.g., list of suppliers, month names, voucher counts). An agent might need to invoke the tool to understand return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all four parameters with descriptions (100% coverage), so the description adds no new semantic value beyond what the schema provides. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool detects suppliers with monthly billing cadence and reports months with missing vouchers. It uses specific verbs (detect, report) and a distinct resource (subscription gaps), setting it apart from sibling tools like sevdesk_list_vouchers or sevdesk_find_duplicates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for identifying missing receipts in recurring subscriptions (e.g., March, April, June gaps). However, it does not explicitly state when not to use this tool or point to alternatives among the 23 sibling tools, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sevdesk_upload_voucher_fileUpload a receipt file to sevDeskA
Upload a local PDF/image to sevDesk's temporary voucher storage and return the filename token you pass to sevdesk_create_voucher. WRITE operation — refused under SEVDESK_READ_ONLY. ⚠️ This tool can change data in sevDesk.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview the request without sending it. | |
| filePath | Yes | Absolute path to the receipt file on this machine. | |
| mimeType | No | Override the content type (default guessed from the extension). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses it's a WRITE operation that changes data in sevDesk and mentions 'temporary voucher storage', giving sufficient behavioral context without contradicting any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences plus a warning, front-loaded with the primary action and essential usage note, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, the description explains the return value (filename token) and its purpose, the file type, and storage duration (temporary), covering key aspects adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds marginal value by explaining the return token's role, but does not provide additional parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads a local PDF/image to sevDesk's temporary voucher storage and returns a filename token for use with sevdesk_create_voucher, distinguishing it from sibling tools like create_voucher and list operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells when to use (before creating a voucher) and explicitly warns it's a write operation refused under SEVDESK_READ_ONLY, providing clear context but not alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
23 tool updates
v0.4.0- First observed
sevdesk_audit_vat - First observed
sevdesk_call - First observed
sevdesk_create_invoice - First observed
sevdesk_create_voucher - First observed
sevdesk_describe_operation - First observed
sevdesk_diff_receipt_folder - First observed
sevdesk_find_duplicates - First observed
sevdesk_get_invoice_pdf - First observed
sevdesk_get_voucher - First observed
sevdesk_invoice_aging - First observed
sevdesk_list_contacts - First observed
sevdesk_list_invoices - First observed
sevdesk_list_operations - First observed
sevdesk_list_transactions - First observed
sevdesk_list_vouchers - First observed
sevdesk_mark_invoice_sent - First observed
sevdesk_ping - First observed
sevdesk_receipt_guidance - First observed
sevdesk_reconcile_transactions - First observed
sevdesk_reverse_charge_report - First observed
sevdesk_set_tax_rule - First observed
sevdesk_subscription_gaps - First observed
sevdesk_upload_voucher_file
TDQS
Each tool has a clearly distinct purpose with no overlaps. List vs get, create vs modify, and specialized audit/report tools are all uniquely identifiable.
Most tools follow 'sevdesk_verb_noun' pattern, but 'sevdesk_receipt_guidance' is noun-noun and 'sevdesk_ping' is verb-only, breaking full consistency.
23 tools cover the core accounting entities (contacts, vouchers, invoices, transactions) plus specialized checks and raw API access, well-scoped for the domain.
Core CRUD is covered for vouchers and invoices; contacts and transactions are read-only, but the 'sevdesk_call' tool provides fallback to any API operation, filling most gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
MCP server for Codat — companies, connections, invoices, bills and financial statements.
MCP server for Quaderno — tax-rate calculation, invoices, contacts, products, receipts & expenses.
Headless API-first double-entry accounting & bookkeeping engine. 84 MCP tools over HTTP.
Related MCP Servers
- FlicenseBqualityDmaintenanceMCP server for DACH accounting automation. Connect AI assistants to sevDesk and Lexoffice — create invoices, manage contacts, handle bookings and vouchers for German-speaking businesses.1527-
- AlicenseNot gradedqualityDmaintenanceA local MCP server for analyzing DATEV bookkeeping data in natural language. It reads EXTF export files locally and provides tools for balances, open items, and booking search.3MIT
- AlicenseNot gradedqualityDmaintenanceMCP server providing deterministic accounting tools for AI agents, including bank statement parsing, document classification, money math, and webhook verification.1Apache 2.0
- AlicenseAqualityCmaintenanceMCP server providing access to the easybill REST API for managing invoices, customers, articles, payments, projects, and time tracking, with read-only mode by default.162819MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/joosthel/sevdesk-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server