Tallystick MCP
Read, check and write e-invoices from inside your agent. Everything runs on your own machine: there is no upload path in this package.
A UBL or CII invoice is six to nine hundred lines of XML, and a ZUGFeRD invoice hides its XML inside a PDF where an agent cannot reach it at all. This turns either one into about forty lines of clean JSON, with every amount as an exact decimal string rather than a float.
Install
uvx tallystick-mcp
That is the whole command, and it is the same in every client. No Python environment to prepare.
Setup snippets for Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Cline, Zed, Gemini CLI and the OpenAI Agents SDK are at https://tally-stick.com/mcp/setup.
Minimal config for a client that uses the common shape:
{
"mcpServers": {
"tallystick": {
"command": "uvx",
"args": ["tallystick-mcp"],
"env": { "TALLYSTICK_LICENSE_KEY": "TS-XXXX-XXXX-XXXX-XXXX" }
}
}
}
Tools
| Tool | What it does | Licence |
|---|---|---|
detect_invoice_format |
Names the syntax, and says whether a PDF carries embedded XML | Free |
read_invoice |
One file to canonical JSON: parties, lines, tax, totals | Free |
validate_invoice |
Consistency and mandatory-field findings, with codes | Free |
read_invoices_table |
A folder as one flat table, one row per invoice | Key |
export_invoices |
Excel, CSV, JSON or QBO out of many invoices | Key |
build_einvoice |
Structured data to compliant EN 16931 XML | Key |
The three free tools need no key and no account. Install it and they work.
Formats
Reads UBL 2.x, UN/CEFACT CII, Factur-X, ZUGFeRD, XRechnung, Peppol BIS, and digital PDFs through per-supplier templates.
Writes UBL 2.1 and CII in nine profiles: xrechnung-3.0, peppol-bis-3.0,
en16931, nlcius, pint-aunz, pint-jp, pint-my, pint-sg, pint-ae.
It refuses to emit XML when a mandatory field is missing and tells you which
one, because a file that is quietly non-compliant is worse than no file.
Amounts are strings
Every monetary value comes back as a string holding an exact decimal:
{ "totals": { "net": "1000.00", "tax": "190.00", "gross": "1190.00" } }
Parse them as decimals. Float arithmetic on invoice totals is how a reconciled ledger stops reconciling.
What leaves your machine
One request, once: activation sends your licence key and an opaque hash of the machine, and gets back a signed token. After that the token is checked locally against a public key compiled into this package, and the machine can stay offline until it expires.
No filename, no path and no invoice content is ever sent anywhere. There is no code here that could send one.
Licence
MIT for this package. A commercial licence key unlocks the three volume tools: one seat, one payment, no subscription. https://tally-stick.com/mcp
mcp-name: com.tally-stick/tallystick
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tallystick_mcp-1.0.1-py3-none-any.whl.
File metadata
- Download URL: tallystick_mcp-1.0.1-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f940f7f2bc34ec3f557707ebb48dffb7414944b6dfdfeb05e505ca5da99390a6
|
|
| MD5 |
0f99148a1e45a2a92418ce8a67b29918
|
|
| BLAKE2b-256 |
277564c240be28f26c0b623c4ed6419aca429c9bfb47c32e43b4fdfa01a38b94
|