Metadata-Version: 2.4
Name: rulestamp-cbpr-address-lint
Version: 1.0.4
Summary: Find the ISO 20022 postal addresses your correspondent bank will repair by hand, before you send the message (bundled Node.js runtime)
Author-email: Rulestamp <support@getreadystack.com>
License: Proprietary - see LICENSE.txt
Project-URL: Homepage, https://getreadystack.com/tools/cbpr-address-lint?ref=pypi
Project-URL: Documentation, https://getreadystack.com/tools/cbpr-address-lint?ref=pypi
Project-URL: Support, https://getreadystack.com/support
Keywords: iso 20022,pacs.008,cbpr+,swift,structured address,cross-border payments,xml lint
Classifier: Programming Language :: Python :: 3
Classifier: Environment :: Console
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: nodejs-wheel-binaries>=20
Dynamic: license-file

# CBPR+ Structured Address Lint

> Runs the same checker as our npm package on a Node.js runtime that pip installs for you (`nodejs-wheel-binaries`) - no system Node.js needed. Your files are checked locally.

![CBPR+ Structured Address Lint — finds the line](https://getreadystack.com/img/promo/cbpr-address-lint_demo.gif)

![CBPR+ Structured Address Lint](https://getreadystack.com/img/promo/sku142540_result_card.jpg)

Find the ISO 20022 postal addresses your correspondent bank will repair by hand, before you send the message

## Install

```
cbpr-address-lint file
```

Node 18+. The same 9 rules as the VS Code extension, from a terminal or CI.

## Free

- Lints any ISO 20022 XML in your editor against all 9 CBPR+ postal-address rules, hybrid rules live since 2025-11-22 and the unstructured cutover deferred 2026-08-27 - 6 errors and 3 warnings - and names each failing PstlAdr block on its own line. On the sample dirty.xml that is 13 findings, 9 errors and 4 warnings, across all 4 party address blocks; on clean.xml it is 0. The 6 errors: (1) unstructured_only, address held only in AdrLine with no TwnNm and no Ctry; (2) no_country, structured block with no Ctry; (3) no_town, hybrid block with no TwnNm; (4) dup_in_adrline, a value in both a dedicated element and an AdrLine; (5) adrline_max2, more than 2 AdrLine occurrences; (6) ctry_code, a Ctry that is not 2 upper-case letters. The 3 warnings: adrline_70, charset, bldgnb_in_strtnm.
- `--rules` lists every rule

## With a licence ($29 once)

- Exports a dated CBPR+ address audit file, CSV and Markdown, covering every ISO 20022 message in the workspace, with the rule citation per finding, so the evidence leaves the editor as a file you can hand to your correspondent bank, your migration programme or your auditor. $29 once, one licence key per person or CI seat.

```
cbpr-address-lint --dir ./templates --report html --out report.html
```

A correspondent bank charges $15 to $40 to repair one cross-border payment by hand; the average fee for a rejected or repaired payment is reported at about $12.

## Use from an AI agent (MCP)

Claude Code · Cursor · Windsurf · any MCP client - add to your MCP config:

```json
{ "mcpServers": { "cbpr-address-lint": { "command": "cbpr-address-lint", "args": ["--mcp"] } } }
```

Tools: `check_text` and `check_file` (free) · `check_dir` (licence). The agent gets every finding with the line number.

## Use in CI

```yaml
- name: CBPR+ Structured Address Lint
  run: pip install rulestamp-cbpr-address-lint && cbpr-address-lint --dir . --ci
```


The folder sweep, reports and CI mode need one licence — one payment, no subscription. Set `READYSTACK_LICENSE=<key>` or run `--license <key>` once.

[Get a licence](https://getreadystack.com/api/buy/cl/polar_cl_hvlxO2MoABOcEHmAOJCtxxdriZukvoDX08sKM2VvzGU)


<!-- cbpr address lint -->


## Install (PyPI)

```
pip install rulestamp-cbpr-address-lint
cbpr-address-lint --help
```
