OpenChainGraph Suite · OCG v0.8.0 · Fair Lending & Adverse Action · Cluster ㉖

Adverse Action Notice Compliance

Note (dated 2026-08-04): a chain composes independent computations performed in an analytical order. No step's output is carried into the next step by the execution model; each step computes from its own declared inputs. This is true of every chain on this site, including chains whose per-step copy below reads as a data handoff.

Gated two-step chain for adverse action notice compliance. Step 1 builds the notice skeleton from SHAP-ranked principal-factor codes (Reg B §1002.9, CFPB Circulars 2022-03 and 2023-03, FCRA §615(a) rights). A §21.4 gate checks action_taken: if the application was approved, no notice is required and the chain exits immediately. For denied, counteroffer, or incomplete applications, Step 2 validates the built notice for completeness, prohibited vague codes, factor count, and FCRA disclosure requirements.

OpenChainGraph · 2 Steps compliance mandate · §21.4 Gate Hash-Anchored §4 chain_depth:2 Client-Side · Zero PII
Not legal or compliance advice. Adverse action notice requirements depend on specific facts; consult qualified counsel. CFPB Circulars 2022-03 and 2023-03 clarify prohibited vague reason codes but are not binding law.
⚡ §21.4 Decision Gate active at Step 1: chain exits immediately when action_taken == "approved". No adverse action notice is required for approved applications. Step 2 (notice validation) runs only for denied, counteroffer, or incomplete applications.
Chain Topology (§21.4 gated) — Build Notice [GATE] → Validate Notice
§4 Execution Hash · Chain Definition Anchor
execution_hash:computing…
Chain Stages · 2 Steps · 1 Decision Gate (§21.4)
1 ROOT & GATE node §21.4 gate
Build Adverse Action Notice art-228-build-adverse-action-notice
Assembles the notice skeleton from SHAP-ranked FICO or VantageScore factor codes. Resolves reason codes to full text, orders sections per Reg B §1002.9, and includes FCRA §615(a) rights disclosure when a credit score was used. Gate exits when action_taken == "approved" (no notice required).
△ Gate: if /action_taken == "approved" → END  |  else → Step 2 (validate)
MCP Call · build_adverse_action_notice
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "build_adverse_action_notice",
    "arguments": {
      "action_taken": "denied",
      "creditor_name": "Acme Bank",
      "notice_date": "2026-07-04",
      "factor_codes": [
        {"rank": 1, "code": "08", "source": "fico", "shap_value": -0.42},
        {"rank": 2, "code": "14", "source": "fico", "shap_value": -0.31},
        {"rank": 3, "code": "23", "source": "fico", "shap_value": -0.18}
      ],
      "credit_score_used": true,
      "credit_score_value": 618,
      "credit_score_model": "FICO Score 8",
      "credit_score_range_min": 300,
      "credit_score_range_max": 850
    }
  },
  "id": 1
}
↓
2 TERMINAL node
Validate Adverse Action Notice art-227-validate-adverse-action-notice
Validates the built notice against Reg B §1002.9 completeness requirements: reason count (max 4), prohibited vague codes (CFPB Circulars 2022-03/2023-03), required content fields, FCRA §615(a) rights disclosure when a credit score was used. Outputs compliance_score (0-100) and a structured violation list. Only reached for denied/counteroffer/incomplete applications.
MCP Call · validate_adverse_action_notice
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "validate_adverse_action_notice",
    "arguments": {
      "action_taken": "denied",
      "reason_code_source": "fico",
      "reason_codes": ["08", "14", "23"],
      "has_creditor_name": true,
      "has_date": true,
      "has_applicant_right_to_obtain_copy": true,
      "has_ecoa_notice": true,
      "credit_score_used": true,
      "has_credit_score_disclosure": true
    }
  },
  "id": 2
}
Export Chain Artifact
Download a §4-compliant chain artifact with execution hash, step definitions, and gate configuration. Hash is deterministic over canonical {policy_parameters, output_payload} per RFC 8785/JCS.

Ask your agent

Copy this paragraph into Claude, OpenClaw, or any MCP-aware agent to run this whole workflow on the server and check one field that answers a real question.

Question: Our adverse action letter is drafted. Would it satisfy Reg B and the FCRA rules as written?
Run the AINumbers MCP tool `run_chain` with {"chain":"adverse-action-notice-compliance"} and read `art-227-validate-adverse-action-notice.compliant`.
Re-run with `inputs` for `art-227-validate-adverse-action-notice`, reusing the values that result echoed, with `notice_includes_fcra_rights` set to false. Compare the same field.
Verify: call `verify_execution_hash` (https://mcp.ainumbers.co/mcp) with `claimed_hash` set to `composite_execution_hash` and the full `composite_artifact`.
Ledger, for a human re-check: https://ledger.ainumbers.co/
PII rule: send synthetic or anonymised inputs only. The MCP server runs these kernels and logs no payloads.
Chain page: https://ainumbers.co/chaingraph/chains/adverse-action-notice-compliance.html