Create a Link token with products=["cra_base_report"] and a cra_options object specifying days_requested (up to 730) and optionally consumer_report_permissible_purpose
Complete the Plaid Link flow so the user authenticates and grants permissioned access; receive the public_token and exchange it for an access_token
Call /cra/base_report/get with the access_token to retrieve the BaseReport; poll until report_status is READY (the report is generated asynchronously)
Parse the report object: inspect accounts[].transactions for cash-flow signals, accounts[].owners for identity, and the report-level attributes (NSF counts, average daily balance, negative day counts)
Apply your credit decision logic; if you deny or apply adverse terms, you are a user of a consumer report under FCRA and must send an adverse action notice including the CRA name (Plaid), a statement of rights, and the specific reasons for adverse action
If the applicant disputes the report, direct them to Plaid's consumer dispute process — you cannot adjudicate data accuracy disputes yourself
Known gotchas
CRA Base Report requires a separate Plaid contract enabling the CRA product — standard Transactions access alone is not sufficient and will return a permission error
The report is tied to a consumer report permissible purpose (e.g., credit underwriting, employment); using the report for a purpose beyond the one declared at Link creation is an FCRA violation
Adverse action notices must be sent within a specific timeframe after a denial; consult legal counsel on timing and content requirements before going live
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp