This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.3.1 instead.
finizi-app-agent (PyPI: finizi-app)
CLI + MCP server for the finizi-app-api Vietnamese accounting, tax, payroll, and operations platform — built to work with the admin.finizi.ai application.
What it is
finizi-app-agent (distributed as the PyPI package finizi-app) is a thin wrapper that exposes 33 carefully-chosen workflows of the finizi-app-api as:
finizi-appCLI — a scriptable command-line tool with stable JSON output- MCP server — agent-callable tools via stdio or Streamable HTTP
Both surfaces share a single core/ package, so the same business logic is exercised in tests, CLI, and MCP.
The wrapper targets the production admin.finizi.ai application by default but every endpoint is fully configurable through the credential resolution chain.
Install
# from finizi-app-api repo root (editable)
uv pip install -e ./finizi-app-agent
# or, once published, install the distribution
uv pip install finizi-app
Endpoint configuration
The CLI/MCP client talks to a finizi-app-api backend. By default it targets the production admin.finizi.ai application. Override through any of:
| Layer | Variable | Example |
|---|---|---|
| Flag (CLI) | --api-url |
finizi-app doctor --api-url https://staging.admin.finizi.ai |
| Process env | FINIZI_API_URL |
export FINIZI_API_URL=https://staging.admin.finizi.ai |
.env.local |
FINIZI_API_URL=... |
per-developer override |
.env.<FINIZI_ENV> |
same | per-environment |
.env |
same | shared default |
| User config | ~/.config/finizi-app/credentials.json |
{"api_url": "..."} |
| Project config | ./.finizi-app/credentials.json |
same |
| OS keychain | finizi-app-agent/api_url |
security add-generic-password -s finizi-app-agent -a api_url -w 'https://...' |
| Default | built-in | https://admin.finizi.ai |
FINIZI_MCP_URL is also configurable; it defaults to {api_url}/mcp.
finizi-app doctor --json reports which layer resolved without printing values.
Quick start
# Check the API is reachable (uses default https://admin.finizi.ai)
finizi-app doctor
# Override for staging
FINIZI_API_URL=https://staging.admin.finizi.ai finizi-app doctor
# Authenticate (caches to OS keychain)
finizi-app auth login --phone +84xxxxxxxxx --password '...'
# Pick a tenant
finizi-app entities use --entity-id 42
# Run a workflow
finizi-app invoices list --entity-id 42 --page 1
finizi-app invoices import-xml --entity-id 42 ./invoice.xml
finizi-app einvoice issue --entity-id 42 --invoice-id 1234
MCP server
# stdio (for local Claude Code / Cursor) — connects to admin.finizi.ai by default
finizi-app-mcp --transport stdio
# Streamable HTTP (self-hosted MCP server, e.g. alongside the admin app)
finizi-app-mcp --transport http --host 0.0.0.0 --port 8080 --bearer-token "$FINIZI_MCP_BEARER_TOKEN"
See docs/cli.md and docs/mcp.md for full reference.
Architecture
finizi-app-agent/
├── core/ # framework-agnostic (no typer, no mcp)
├── cli/ # Typer app, thin adapter over core
├── mcp/ # FastMCP server, thin adapter over core
└── tests/
See docs/architecture.md for details.
Distribution naming
| What | Name |
|---|---|
PyPI distribution (pip install ...) |
finizi-app |
| Python import package | finizi_app |
| CLI entry point | finizi-app |
| MCP server entry point | finizi-app-mcp |
License
Proprietary — Finizi Engineering.
Release files for finizi-app 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| finizi_app-0.2.0.tar.gz | 146.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| finizi_app-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 225.7 kB
Release files / finizi_app-0.2.0.tar.gz
| Download URL | finizi_app-0.2.0.tar.gz |
|---|---|
| Size | 146.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e5b1283636469b84679e3723ee1c1011b1449c1675f6a72216f0449b889466b3
|
|
BLAKE2b-256 checksum How to use checksums |
8947668dc3a2e4b45f4102dd200902f321024007b0d24ec3a3d9c402276a6f97
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / finizi_app-0.2.0-py3-none-any.whl
| Download URL | finizi_app-0.2.0-py3-none-any.whl |
|---|---|
| Size | 79.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d41a987e28f200220438b90fb5ffbfcd1aa3057c95f79a4d2b39d27eadef8ddf
|
|
BLAKE2b-256 checksum How to use checksums |
65840bd5f72377ce170b78b8f184e5cfa40f7d97727200350a80372fcd05dc2e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|