Vai al contenuto principale
M

dsh-duizhang

mario03690/dsh-duizhang

Reconciliation: statements, invoices and ledgers that have to balance. Bank/credit statement PDFs and invoice batches into ledger-ready tables, then reconciled — on a shared key in integer cents, or with no shared key at all by amount, date window, refere

Installazione

dsh plugin --profile web add github:mario03690/dsh-duizhang

README

dsh-duizhang

Bank/credit statement PDFs and invoice batches into ledger-ready tables, then reconciled — on a shared key in integer cents, or with no shared key at all by amount, date window, reference numbers and fuzzy counterparty names.

What & why

The point is that it refuses to look right when it is wrong. reconcile_ledger compares in integer cents, so 0.1+0.2 never invents a phantom difference. extract_statement re-adds the running total independently (opening + credits − debits = closing) and, if it does not balance, names the row where it first breaks. match_transactions handles split (1:N) and combined (N:1) payments and declines to guess when the evidence is thin. dedupe_entities never merges anything — it shows the evidence, cross-checked against tax-ID checksums, and leaves the decision to a human.

Every set ships what_can_you_do — describe a task in any language, get the exact tool plus a ready-to-run call.

What's in this pack

15 tools, read from the live endpoint on 2026-08-22 — this table is generated, not hand-written, so it cannot drift away from what tools/list actually returns. The Arguments column is what the tool genuinely reads; it comes from the tool's own declared input schema.

ToolWhat it doesArgumentsPrice / call
what_can_you_doDescribe a task in plain language (any language) and get back exactly which tools on this server do it, with ready-task
extract_statementTurn a bank statement or transaction PDF into a clean transaction table (JSON + CSV), then cross-check it: openingurl$0.03
diff_tablesMatches rows across two CSVs on a key column and reports three things: keys only in A, keys only in B, and keys inurl_a, url_b, text_a, text_b, key$0.003
clean_tableTidies a spreadsheet export: removes duplicate rows, trims whitespace (half-width and full-width — Chinese exportsurl, text, ops, keep, split_column, split_by$0.003
merge_tablesCombines up to 20 CSVs into a single table. Headers do not have to match: columns are unioned and a file missing aurls, texts$0.004
reconcile_ledgerReconciles two sets of records — your books against a bank, platform, or supplier statement. Matches rows on a keyurl_a, url_b, text_a, text_b, key, amount$0.006
extract_invoicesGive it up to 20 invoice URLs (PDF or page images) and get back one table ready to post: number, date, seller, buyeurls$0.05
fix_csv_encodingDetect the real encoding of a CSV (GB18030, Shift-JIS, Windows-1252…), repair mojibake (UTF-8 that was read as Latiurl, text$0.002
read_xlsxRead an Excel .xlsx workbook (by URL) into rows — every sheet, or one you name. Returns cell values (not formula teurl, sheet, keep_formulas, max_rows, inline, preview_rows$0.003
write_xlsxBuild an Excel .xlsx file from rows (CSV text or JSON arrays), optionally several sheets at once. Numbers are writtsheets, url, text, sheet_name$0.004
match_transactionsMatch bank statement lines to ledger/invoice entries when there is NO shared key — by amount, date window, referencurl_a, text_a, url_b, text_b, sheet_a, sheet_b, date_window_days, fee_tolerance, max_group_size$0.008
dedupe_entitiesFind records in a supplier/customer/store list that are probably the SAME entity under different names — "北京星辰科技有限公url, text, sheet, name, tax_id, phone, domain, address, bank, name_threshold$0.006
uscc_validate校验统一社会信用代码(GB 32100 校验位)。做企业名单去重、发票抬头核对时,先过这一关能挡掉大部分录入错误。code, uscc, textfree
amount_to_chinese人民币金额转中文大写(壹佰万零壹元贰角叁分)。开票、合同、支票场景,手写容易错的那一步。amount, value, textfree
vat_calc_cn增值税价税分离:含税价 ⇄ 不含税价 + 税额。rate 传 0.13 或 13 都可以;inclusive=false 表示传入的是不含税价。结果带勾稽自证。amount, rate, inclusivefree

in the price column means the tool is not metered per call (session/trial-gated instead). Failed calls are never charged. Check it yourself:

curl -s -X POST https://ainetcafe.com/mcp/duizhang -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Install

dsh plugin --profile <your-profile> add github:mario03690/dsh-duizhang

Thin config layer only (one @deepseek-ai/dsh-mcp-client row, shipped as cordis.patch.yml) — no tool code runs on your machine. Built against the MCP client config shape of the dsh v0.1 developer preview; verified against the live endpoint on 2026-08-22.

Cost, quota, privacy

Mixed. The table operations are deterministic and cheap ($0.002–$0.008). The two extractors read documents with a model: extract_statement $0.03, extract_invoices $0.05. Every response reports its exact USD cost; failed calls are not charged.

No signup for the free anonymous quota. Documents are processed in memory and not retained. The config URL carries ?s=dsh-duizhang — a channel tag identifying the install path, not you.

Disclosure: built and run by the team behind ainetcafe.com — our own service, free tier plus paid usage. Full bundle (everything at once): dsh-netcafe. MIT.

Compatibility & permissions (at a glance)

SignalThis plugin
Runtimedsh v0.1 developer preview (Cordis v4). Touches only the MCP client config shape — the narrowest surface available. Verified against a live endpoint on 2026-08-22.
What runs locallyNothing. Ships one cordis.patch.yml row; there is no tool code, no build step and no lifecycle script in this package.
Filesystem accessNone.
Shell / process accessNone.
Network accessOutbound HTTPS to ainetcafe.com only, from the MCP client that dsh already ships.
CredentialsNone required for the free tier. An optional AllRouter key, if you supply one, is sent by dsh as a request header and is never stored by us.
Data retentionDocuments and prompts are processed in memory and not retained.
DependenciesOne peer dependency: @deepseek-ai/dsh-mcp-client (ships with dsh).
LicenseMIT (see LICENSE).
PublisherThe team that runs ainetcafe.com. Issues get a same-day reply.

A directory listing is not a security review. Read cordis.patch.yml — it is short enough to read in full in under a minute.

Plugin correlati