DeskCalc Verify
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DESKCALC_PATH | No | Path to deskcalc.exe (optional). | |
| DESKCALC_VERIFY_DIR | No | Exchange folder (optional, default `Documents\DeskCalc Verify`). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Use DeskCalc Verify whenever you are about to rely on a sum of numbers you extracted from documents, images, e-mails or spreadsheets (receipts, statements, invoices). The numbers open as a labelled tape in DeskCalc on the user's Windows PC; the user checks each line, corrects mistakes and presses Confirm. Only use the confirmed total and lines that come back. Never invent a total while a check is pending.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| verify_numbersA | Show numbers as a labelled adding-machine tape in DeskCalc so the user can check every line, correct it and press Confirm. Returns the confirmed total, the lines, the user's corrections and - if you pass the printed figures - a cent-exact check of the document. Use it before you rely on a sum you extracted from receipts, statements or invoices. If the result is "pending", tell the user to finish the check in DeskCalc and call get_verification with the review_id. Line kinds: (1) amount: {label, value}. (2) quantity x unit price: {label, qty, price, value?} - value is the printed line total, checked against qty x price. (3) VAT/sales tax: {type:"tax", rate, included?, value?} - put it after the taxable lines; DeskCalc computes the tax from the subtotal above and recomputes it when the user corrects a line; value is the printed tax amount; included=true for gross prices ("incl. VAT"). (4) discount/surcharge in percent on the subtotal above: {type:"percent", rate, value?} - rate -3 for "3 % Rabatt", -2 for "2 % Skonto", +5 for a surcharge; value is the printed amount. A DISCOUNT ON A SINGLE POSITION ("Rabatt"/"Disc." column): {label, qty, price, discount: 10, value: printed line total} - discount in percent; DeskCalc shows qty x price and the discount below it, the check compares the printed line total. Never derive the discount from the printed total. Prices per 100/1000 units: convert to a unit price or give the line total as an amount. (5) MIXED TAX RATES (e.g. 20 % and 10 % on one invoice): a tax line always applies to the whole subtotal above, so put the positions of each rate in their own group: {type:"group", label:"20 %"}, its positions, its tax line; then {type:"group", label:"10 %"}, ... DeskCalc adds a GT (grand total) line. If the result has gt_outdated=true (the user corrected a line, the GT line is a snapshot), call verify_numbers again with exactly the arguments in "rerun" and use that second result. (6) MANY RECEIPTS (expenses, a stack of bills): ONE call, ONE tape - one amount line per receipt (label "14.10. Hotel"), never one call per receipt. If the receipts print their VAT, ALWAYS give each receipt its own group: the gross amount, then its tax line with included=true and the PRINTED VAT as value - only then can a misprinted VAT be found (the GT is still the total of the receipts). If an expense report prints a total, pass it as expected_total. (7) PRINTED SUBTOTALS / CARRY-OVERS (bank statement, ledger over several pages, "Übertrag", "Zwischensumme"): {type:"subtotal", label:"Übertrag S.1", value} at that place - DeskCalc shows the running total there and the check names the first carry-over that is wrong. An opening balance is a normal amount line. (8) CROSS-FOOTING A TABLE (net, tax, gross columns): one line per row {label, value: gross, net, tax} and nothing else in that call; pass expected_total (gross column total), expected_net_total and expected_tax_total if printed (row_labels: omit - the tape uses DeskCalc's language). DeskCalc shows each row as its own block: net, tax, and the printed gross as a checkpoint. (9) FOREIGN CURRENCY: {label, foreign: 100, currency:"USD", fx_rate: 0.92, value: 92.00} - fx_rate is home currency per 1 unit; if the document quotes the inverse (1 EUR = 1.08 USD), give the printed home amount as a plain amount line and name the rate in the label. For invoices also pass expected_total (the printed amount payable). After a confirmed check, offer save_audit_record (PDF for the working papers); to reconcile two documents (invoice vs delivery note, order or payment), verify both, then call compare_verifications. If you use a figure that is NOT printed on the document (e.g. a fee from a published table, a rate you looked up), say so in the label, e.g. "(Tab. A, web)", and tell the user - the tape must not make your own assumptions look like the document. Numbers: plain, "." as decimal separator, negative for credits. Labels: SHORT, max ~25 characters, e.g. "Pos.1 Wandfarbe" or "14.10. Hotel" - longer labels are cut off on the tape. Title: 1-3 words; it becomes the tab name in DeskCalc. |
| get_verificationA | Wait for and return the result of a verification that came back "pending". Returns "confirmed" with total, lines and corrections once the user pressed Confirm in DeskCalc. |
| compare_verificationsA | Compare the positions of two confirmed verifications to the cent, e.g. invoice vs delivery note, order, or bank statement. Returns matched positions, positions with a different amount (same text), positions only on one side and the difference of the totals. Verify both documents with verify_numbers first. |
| save_audit_recordA | Save a confirmed verification as a PDF audit record for the working papers: document name, date and user, every line with its calculation, the user's corrections and the cent-exact document check. Saved locally in the DeskCalc Verify folder; returns the file path. |
| deskcalc_statusB | Whether DeskCalc is installed and where, and whether a verification is open. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| check_invoice | Positions, quantity x price, discounts, VAT (also mixed rates) and the amount payable - to the cent. |
| add_expenses | A stack of receipts (e.g. 30 for an expense report) on ONE tape, one line per receipt. |
| foot_table | Each row net + tax = gross, and the column totals against the printed totals. |
| bank_statement | Bank statement, ledger or list over several pages: opening balance, movements, carry-overs, closing balance. |
| reconcile_documents | Invoice vs delivery note, order or payment: what matches, what differs, what is missing. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool has a distinct role in the verification lifecycle: starting a verification, retrieving a pending result, comparing two confirmed results, checking DeskCalc status, and saving an audit PDF. Although verify_numbers and get_verification are closely related, the pending-flow instructions make their boundary clear.
Most names follow a clear verb_noun pattern (verify_numbers, get_verification, compare_verifications, save_audit_record). The main deviation is deskcalc_status, a noun-style status tool, plus slight singular/plural variation in verification names.
Five tools are well scoped for a focused verification/audit workflow. Each tool has a clear place, and the complexity is concentrated in verify_numbers rather than spread across redundant tools.
The surface covers the core lifecycle: initiate verification, handle pending results, compare documents, check app status, and save an audit record. Minor gaps remain, such as no explicit cancel/abort operation or listing of prior audit records, but normal workflows are covered.