Call POST /asset_report/create with one or more access_tokens, days_requested (up to 730), and optional client_report_id; set the options.user object with the consumer's name and other identifying fields to populate the report header
Receive asset_report_id and asset_report_token in the response; poll POST /asset_report/get with the token or wait for the PRODUCT_READY webhook (type: ASSETS, code: PRODUCT_READY) before fetching
Call POST /asset_report/get to retrieve the full JSON report including accounts, transactions, historical balances, and the owner identity information Plaid was able to verify
To share the report with a third party (lender, auditor), call POST /asset_report/audit_copy/create with the asset_report_token and the recipient_client_id to get an audit_copy_token scoped to that recipient
Parse the report's accounts array: each account contains balance_last and transactions covering the requested window, plus a days_available field indicating actual coverage
Refresh a stale report with POST /asset_report/refresh passing the existing asset_report_token and a new days_requested to extend coverage; this creates a new report without re-linking
Known gotchas
Asset Report generation is asynchronous and can take minutes for accounts with large transaction histories; always implement the webhook rather than polling in a tight loop
days_available may be less than days_requested if the institution only retains a shorter transaction window; do not assume full coverage without checking this field per account
Asset Reports are governed by FCRA when used for credit decisions; ensure your permissible purpose disclosures and adverse action notices comply before using reports for lending
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