After completing Plaid Auth and receiving an access_token, call /signal/evaluate with the access_token, account_id, client_transaction_id (your idempotency key), amount, and user object (name, email, phone, address)
Inspect the response: scores.customer_initiated_return_risk.score (0–99) and scores.bank_initiated_return_risk.score; higher scores indicate higher return probability
Map scores to decision tiers: for example, score 0–20 = auto-approve, 21–60 = approve with micro-deposit fallback, 61–99 = decline or require bank login re-verification
Store the signal_decision_report_id returned in the response; call /signal/decision/report within 24 hours with your actual decision (INITIATE, PENDING, ABANDONED) and the client_transaction_id to train the model
After the ACH settles or returns, call /signal/return/report with the return_code if the item was returned, or confirm settlement — this closes the feedback loop for model improvement
Log all Signal scores alongside transfer outcomes in your data warehouse to monitor your false-positive and false-negative rates over time
Known gotchas
Signal scores are only as reliable as the account data freshness; if the Plaid item was linked weeks ago without a recent transactions refresh, the score may not reflect current account state — consider triggering a transactions sync before calling Signal
The /signal/decision/report call is not optional for good model performance; consistently failing to report decisions degrades the model and may violate Plaid's terms for Signal use
Signal does not replace Auth — it must be called with an already-linked and auth-verified account; calling it without a valid access_token and account_id that passed Auth will return an error
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