Achlens
Achlens is a local-first Python MCP server and CLI for inspecting synthetic ACH files. It parses fixed-width records, validates structure and control totals, explains findings, masks sensitive fields, repairs derived controls, and generates deterministic test files. It never transmits ACH files or makes bank/network calls.
Use synthetic data only. This project is not a bank gateway, compliance advisor, or transmission system.
Quick Start
uv sync
uv run achlens --help
uv run achlens validate tests/fixtures/golden/sample_valid.ach
uv run achlens generate --sec PPD --entries 5 --seed 7 > synthetic.ach
In Windows PowerShell, use an explicit ASCII encoding because PowerShell's
default > redirection can write UTF-16 output that is not valid ACH text:
uvx achlens generate --sec PPD --entries 5 --seed 7 |
Set-Content -Encoding ascii synthetic.ach
Run the MCP server over stdio:
uv run achlens serve
MCP Client Setup
Install the published package with uvx; it starts the server locally over
stdio and does not transmit ACH files.
VS Code and Copilot
Create .vscode/mcp.json in your workspace:
{
"servers": {
"achlens": {
"type": "stdio",
"command": "uvx",
"args": ["achlens"]
}
}
}
Claude Desktop
Add the following entry to the mcpServers object in Claude Desktop's MCP
configuration:
{
"achlens": {
"command": "uvx",
"args": ["achlens"]
}
}
By default, MCP tools accept ACH content directly but cannot read local paths.
To allow read-only access to a specific directory, set
ACHLENS_ALLOWED_ROOTS in the server environment to that directory. Use
synthetic ACH data only.
The MCP server exposes validation, summaries, parsed-record paging, control explanations, routing checks, code lookup, synthetic generation, and control repair. See docs/tools.md for the current tool surface.
Sensitive fields are masked by default. Configure ACHLENS_ALLOWED_ROOTS to
enable MCP path inputs; otherwise provide file content directly. See
SECURITY.md for the data and write boundaries.
Development
This project uses uv.
uv sync
uv run achlens --help
PYTHONPATH=. uv run pytest -q
uv run ruff check .
uv run ruff format --check .
uv run mypy --strict src
Without uv
The CLI and test suite also work with plain pip:
pip install -e . pytest
achlens --help
achlens validate tests/fixtures/golden/sample_valid.ach
achlens generate --sec PPD --entries 5 --seed 7
PYTHONPATH=. pytest
Set PYTHONPATH=. from the repository root when running tests so fixture and
script imports resolve. In Windows PowerShell, use
$env:PYTHONPATH = "."; pytest.
Never add real payment data, account numbers, or ACH files to this repository.
Metadata
Release files for achlens 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| achlens-0.1.5.tar.gz | 170.5 kB | With provenance | Details for achlens-0.1.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| achlens-0.1.5-py3-none-any.whl | Python 3 | none | any | Details for achlens-0.1.5-py3-none-any.whl |
Total release size: 241.5 kB
Release files / achlens-0.1.5.tar.gz
| Download URL | achlens-0.1.5.tar.gz |
|---|---|
| Size | 170.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70289496089adfb42d96655b414ab1ce4ddf8f36141947297a6300bfcee7af61
|
|
BLAKE2b-256 checksum How to use checksums |
599fecef2448efc0a9ca1a6b95a1d2955716bc1665a31404d882c4394e12a1c8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.
Transparency logRelease files / achlens-0.1.5-py3-none-any.whl
| Download URL | achlens-0.1.5-py3-none-any.whl |
|---|---|
| Size | 71.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b07b862ffbe284fab2c6e0675e21cffbb07b98af50a8e8f00acb67e6efa8ea9a
|
|
BLAKE2b-256 checksum How to use checksums |
61b9ef40102934651ce072ec55d23ad371c8167809838600b8fcdd03a83c4b39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.
Transparency logSecurity for achlens 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for achlens-0.1.5.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 26, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.