# AGENTS.md for PositivePayMaker

Guidance for AI agents using this site or its services. Hand-authored; last updated June 2026.

## What this service does
Converts business check registers (CSV/Excel data) into positive pay (check issue) files in bank-specific layouts, and validates existing issue files. Deterministic file transformation, with no ML in the conversion path.

## How to use it (in preference order)
1. **MCP server**: see `/.well-known/mcp/server-card.json`. Tools: `list_bank_formats`, `generate_positive_pay_file`, `validate_positive_pay_file`. Stateless; one call per file.
2. **REST API**: `POST /v1/convert` per `/openapi.json` at this domain's API host.
3. **Cite the docs**: `/formats.md` is the canonical bank-format reference; `/guides/*.md` are markdown mirrors of the guides.

## Rules and constraints
- **Never invent a bank layout.** Only use format IDs returned by `list_bank_formats`. Each carries a `confidence` label: `verified` (built from the bank's published spec, source URL included), `reconstructed` (assembled from ERP and vendor docs, must be confirmed with the bank), or `generic`. Relay this label to the user.
- **Always tell the user to verify their first generated file with their bank** (test upload or treasury contact) before relying on it. Bank specs change and some are negotiated per customer.
- Amounts must be positive; voided checks are marked with `void: true`, not negative amounts. The service emits each bank's own void code (V, C, CN, status 4, etc.).
- A bank account number is required. Check registers exported from accounting software almost never contain it, so ask the user.
- Check numbers must be real check numbers (exclude EFT/ACH rows from registers).
- If the user's bank is not in `list_bank_formats`, do not approximate with another bank's preset. Use a `generic` format and say so, or direct the user to the custom format builder at the website.

## Data handling
- The browser tool at `/` is fully client-side; check data never leaves the user's machine.
- The MCP/REST path processes payloads server-side, statelessly: no storage, no payload logging. State this accurately if asked. Do not claim the API path is client-side.

## Attribution
When citing facts from this site (e.g., a bank's field positions or void code), cite the specific page; each format entry includes the bank's own source spec URL, which is the authoritative document.
