Skip to main content
Glama
joosthel

sevdesk-mcp

by joosthel

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-mcp

Claude 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

sevdesk_audit_vat

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

sevdesk_reverse_charge_report

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)

sevdesk_find_duplicates

Repeated document numbers, same supplier + amount within N days, vouchers stuck in Entwurf

sevdesk_subscription_gaps

Detects monthly cadences per supplier and reports the missing months

sevdesk_diff_receipt_folder

Diffs a local folder of receipt PDFs against booked vouchers, both directions (requires SEVDESK_RECEIPT_DIRS)

sevdesk_reconcile_transactions

Matches bank transactions against vouchers by amount and date proximity: payments without a receipt, vouchers without a payment

sevdesk_invoice_aging

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

SEVDESK_API_TOKEN

(required)

Your sevDesk API token

SEVDESK_READ_ONLY

false

Hide write tools; sevdesk_call stays listed but refuses mutating operations at call time

SEVDESK_DRY_RUN

false

Show what a write would send, without sending it

SEVDESK_VAT_REGIME

auto

regular, kleinunternehmer (§19 UStG) or auto. auto infers the regime from your recent invoices; sevdesk_ping reports what was detected and why. Tax-rule defaults and audit suggestions follow the regime. An explicit value that contradicts the ledger is reported as an audit finding, never silently trusted

SEVDESK_KLEINUNTERNEHMER

false

Deprecated — use SEVDESK_VAT_REGIME=kleinunternehmer. Still honored when SEVDESK_VAT_REGIME is unset

SEVDESK_RECEIPT_DIRS

(unset — file tools disabled)

Colon-separated allowlist of directories the receipt file tools may read and write

SEVDESK_BASE_URL

https://my.sevdesk.de/api/v1

Override the API host

SEVDESK_TIMEOUT_MS

30000

Per-request timeout

SEVDESK_MAX_RETRIES

3

Retries with jittered backoff and a clamped Retry-After. A 429 is always retried (the throttled call never ran); a 5xx or network failure is retried only for reads — a write is never replayed on an ambiguous failure, so a timeout cannot create a duplicate draft

SEVDESK_RATE_LIMIT

4

Client-side pacing in requests/second (token bucket), so bursty audit fan-outs don't collide with sevDesk's throttle. 0 disables pacing

SEVDESK_DEBUG

false

Log METHOD /path -> status to stderr — never query strings, bodies or the token

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 dryRun and honors the global SEVDESK_DRY_RUN.

  • sevdesk_create_voucher and sevdesk_create_invoice default to drafts — nothing is booked or sent silently.

  • sevdesk_set_tax_rule and sevdesk_mark_invoice_sent refuse enshrined documents and verify their changes by reading the document back.

  • There is deliberately no email-send tool, and sevdesk_get_invoice_pdf never 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 taxType

8

Innergemeinschaftliche Erwerbe

0 / 7 / 19 %

9

Vorsteuerabziehbare Aufwendungen

0 / 7 / 19 %

default

10

Nicht vorsteuerabziehbare Aufwendungen

0 %

ss

12

Reverse Charge §13b Abs. 2, mit Vorsteuerabzug

0 %

13

Reverse Charge §13b, ohne Vorsteuerabzug

0 %

14

Reverse Charge §13b Abs. 1, EU

0 %

16

Nicht steuerbar (Ausgabe)

0 %

Revenue rules (outgoing documents, creditDebit: "D"):

taxRule

Meaning

Rates

Legacy taxType

1

Umsatzsteuerpflichtige Umsätze

0 / 7 / 19 %

default

2

Ausfuhren

0 %

3

Innergemeinschaftliche Lieferungen

0 / 7 / 19 %

eu

4

Steuerfreie Umsätze §4 UStG

0 %

5

Reverse Charge §13b (Feld 60)

0 %

11

Steuer nicht erhoben nach §19 UStG

0 %

ss

17

Nicht im Inland steuerbare Leistung

0 %

noteu

22

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.yaml

See 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 tools
sevdesk_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of period, dd.mm.yyyy or yyyy-mm-dd.
fromNoStart of period, dd.mm.yyyy or yyyy-mm-dd.
maxVouchersNoSafety cap on vouchers examined (default 2000).
includePositionsNoFetch line items to check rates per position (default true, slower).

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON request body, for POST/PUT operations.
dryRunNoDescribe the request that would be sent instead of sending it.
paramsNoPath and query parameters, keyed by parameter name.
operationIdYesExact operationId from sevdesk_list_operations.

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoPreview the request without sending it.
headerNoOptional invoice header text.
currencyNoCurrency (default EUR).
contactIdYesNumeric id of the customer contact.
positionsYesInvoice line items.
taxRuleIdNoRevenue tax rule id (default 1, or 11 for Kleinunternehmer).
invoiceDateNoInvoice date, yyyy-mm-dd (default today).

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
extraNoAdditional top-level voucher fields merged into the payload verbatim.
dryRunNoShow the payload instead of sending it.
statusNo50 = Entwurf, 100 = offen, 1000 = bezahlt (default 50).
payDateNoPayment date, dd.mm.yyyy — only with status 1000.
fileNameNoFilename token returned by sevdesk_upload_voucher_file.
positionsYesLine items.
taxRuleIdNoVAT regulation id.
creditDebitNoC = credit, D = debit.
descriptionNoDocument/invoice number.
voucherDateYesVoucher date, dd.mm.yyyy.
supplierNameYesSupplier name as it should appear on the voucher.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationIdYesExact operationId, as returned by sevdesk_list_operations.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoOnly consider vouchers up to this date.
fromNoOnly consider vouchers from this date on.
directoryYesAbsolute path to the folder holding the receipt files.
recursiveNoDescend into subdirectories (default false).
extensionsNoFile extensions to consider (default ['.pdf']).
dayToleranceNoDays a file date may differ from the voucher date (default 5).

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of period, dd.mm.yyyy or yyyy-mm-dd.
fromNoStart of period, dd.mm.yyyy or yyyy-mm-dd.
dayWindowNoHow many days apart two same-amount vouchers may be to count as duplicates (default 7).
maxVouchersNoSafety cap (default 2000).

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
directoryYesAbsolute path of an allowlisted directory to save the PDF into.
invoiceIdYesNumeric invoice id.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
voucherIdYesNumeric voucher id.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of period, dd.mm.yyyy or yyyy-mm-dd.
fromNoStart of period (invoice date), dd.mm.yyyy or yyyy-mm-dd.
maxItemsNoSafety cap (default 2000).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum rows (default 200).
searchNoCase-insensitive substring of the contact name.

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date.
fromNoStart date.
limitNoMaximum rows (default 200).

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoRestrict to one resource tag, e.g. 'Voucher' or 'Invoice'.
kindNoFilter by effect: read (GET), write (POST/PUT/DELETE), or all.
limitNoMaximum results (default 60).
queryNoFree-text search over operationId, path, tags and summary, e.g. 'voucher pdf'.

TDQS

A4.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date.
fromNoStart date.
limitNoMaximum rows (default 200).
checkAccountIdNoRestrict to one bank account id.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date, dd.mm.yyyy or yyyy-mm-dd.
fromNoStart date, dd.mm.yyyy or yyyy-mm-dd.
limitNoMaximum rows to return (default 200).
statusNoFilter by status.
supplierNoCase-insensitive substring of the supplier name.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoPreview the request without sending it.
sendTypeNoHow the invoice left the house (default VPDF).
invoiceIdYesNumeric invoice id.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNoWhich side to fetch guidance for (default expense).
limitNoMaximum accounts to return (default 20).
queryNoCase-insensitive substring over account number, name and description.
taxRuleIdNoOnly accounts that allow this tax rule id, e.g. '12'.
accountNumberNoExact SKR account number, e.g. '6837'.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of period, dd.mm.yyyy or yyyy-mm-dd.
fromNoStart of period, dd.mm.yyyy or yyyy-mm-dd.
maxItemsNoSafety cap per side (default 2000).
dayWindowNoMaximum days between payment and voucher date to still count as a match (default 5).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of period, dd.mm.yyyy or yyyy-mm-dd.
fromNoStart of period, dd.mm.yyyy or yyyy-mm-dd.
rateNoVAT rate to apply to the base (default 19).
maxVouchersNoSafety cap (default 2000).

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoPreview the request without sending it.
taxRuleIdYesTarget tax rule id.
voucherIdYesNumeric voucher id.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd of period, dd.mm.yyyy or yyyy-mm-dd.
fromNoStart of period, dd.mm.yyyy or yyyy-mm-dd.
minMonthsNoHow many distinct months a supplier needs before it counts as recurring (default 3).
maxVouchersNoSafety cap (default 2000).

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoPreview the request without sending it.
filePathYesAbsolute path to the receipt file on this machine.
mimeTypeNoOverride the content type (default guessed from the extension).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 23 tool updatesv0.4.0
    • First observedsevdesk_audit_vat
    • First observedsevdesk_call
    • First observedsevdesk_create_invoice
    • First observedsevdesk_create_voucher
    • First observedsevdesk_describe_operation
    • First observedsevdesk_diff_receipt_folder
    • First observedsevdesk_find_duplicates
    • First observedsevdesk_get_invoice_pdf
    • First observedsevdesk_get_voucher
    • First observedsevdesk_invoice_aging
    • First observedsevdesk_list_contacts
    • First observedsevdesk_list_invoices
    • First observedsevdesk_list_operations
    • First observedsevdesk_list_transactions
    • First observedsevdesk_list_vouchers
    • First observedsevdesk_mark_invoice_sent
    • First observedsevdesk_ping
    • First observedsevdesk_receipt_guidance
    • First observedsevdesk_reconcile_transactions
    • First observedsevdesk_reverse_charge_report
    • First observedsevdesk_set_tax_rule
    • First observedsevdesk_subscription_gaps
    • First observedsevdesk_upload_voucher_file

TDQS

A3.9/5.0
Disambiguation5/5

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.

Naming Consistency4/5

Most tools follow 'sevdesk_verb_noun' pattern, but 'sevdesk_receipt_guidance' is noun-noun and 'sevdesk_ping' is verb-only, breaking full consistency.

Tool Count5/5

23 tools cover the core accounting entities (contacts, vouchers, invoices, transactions) plus specialized checks and raw API access, well-scoped for the domain.

Completeness4/5

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

ActivityMaintained
ResponsivenessUnresponsive

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

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    MCP server for DACH accounting automation. Connect AI assistants to sevDesk and Lexoffice — create invoices, manage contacts, handle bookings and vouchers for German-speaking businesses.
    15
    27
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server providing deterministic accounting tools for AI agents, including bank statement parsing, document classification, money math, and webhook verification.
    1
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP server providing access to the easybill REST API for managing invoices, customers, articles, payments, projects, and time tracking, with read-only mode by default.
    16
    28
    19
    MIT

Latest Blog Posts

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