- Accueil
- Plugins
- MCP et connecteurs
- dsh-duizhang
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
Installer
dsh plugin --profile web add github:mario03690/dsh-duizhangREADME
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.
| Tool | What it does | Arguments | Price / call |
|---|---|---|---|
what_can_you_do | Describe a task in plain language (any language) and get back exactly which tools on this server do it, with ready- | task | — |
extract_statement | Turn a bank statement or transaction PDF into a clean transaction table (JSON + CSV), then cross-check it: opening | url | $0.03 |
diff_tables | Matches rows across two CSVs on a key column and reports three things: keys only in A, keys only in B, and keys in | url_a, url_b, text_a, text_b, key | $0.003 |
clean_table | Tidies a spreadsheet export: removes duplicate rows, trims whitespace (half-width and full-width — Chinese exports | url, text, ops, keep, split_column, split_by | $0.003 |
merge_tables | Combines up to 20 CSVs into a single table. Headers do not have to match: columns are unioned and a file missing a | urls, texts | $0.004 |
reconcile_ledger | Reconciles two sets of records — your books against a bank, platform, or supplier statement. Matches rows on a key | url_a, url_b, text_a, text_b, key, amount | $0.006 |
extract_invoices | Give it up to 20 invoice URLs (PDF or page images) and get back one table ready to post: number, date, seller, buye | urls | $0.05 |
fix_csv_encoding | Detect the real encoding of a CSV (GB18030, Shift-JIS, Windows-1252…), repair mojibake (UTF-8 that was read as Lati | url, text | $0.002 |
read_xlsx | Read an Excel .xlsx workbook (by URL) into rows — every sheet, or one you name. Returns cell values (not formula te | url, sheet, keep_formulas, max_rows, inline, preview_rows | $0.003 |
write_xlsx | Build an Excel .xlsx file from rows (CSV text or JSON arrays), optionally several sheets at once. Numbers are writt | sheets, url, text, sheet_name | $0.004 |
match_transactions | Match bank statement lines to ledger/invoice entries when there is NO shared key — by amount, date window, referenc | url_a, text_a, url_b, text_b, sheet_a, sheet_b, date_window_days, fee_tolerance, max_group_size | $0.008 |
dedupe_entities | Find 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, text | free |
amount_to_chinese | 人民币金额转中文大写(壹佰万零壹元贰角叁分)。开票、合同、支票场景,手写容易错的那一步。 | amount, value, text | free |
vat_calc_cn | 增值税价税分离:含税价 ⇄ 不含税价 + 税额。rate 传 0.13 或 13 都可以;inclusive=false 表示传入的是不含税价。结果带勾稽自证。 | amount, rate, inclusive | free |
— 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)
| Signal | This plugin |
|---|---|
| Runtime | dsh 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 locally | Nothing. Ships one cordis.patch.yml row; there is no tool code, no build step and no lifecycle script in this package. |
| Filesystem access | None. |
| Shell / process access | None. |
| Network access | Outbound HTTPS to ainetcafe.com only, from the MCP client that dsh already ships. |
| Credentials | None 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 retention | Documents and prompts are processed in memory and not retained. |
| Dependencies | One peer dependency: @deepseek-ai/dsh-mcp-client (ships with dsh). |
| License | MIT (see LICENSE). |
| Publisher | The 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.
Plugins associés
reactive-resume
amruthpillai/reactive-resume
sandbase-harness
sandbaseai/sandbase-harness
dsh-skill-mcp-panel
fishquito7/dsh-skill-mcp-panel
local-shell-mcp
fwerkor/local-shell-mcp