The Agentic Bank

Scribe

⬡ SAR Drafting & Filing Agent Financial crime

Drafts the SAR grounded only in the packet and real 31 CFR 1020.320; a thin packet yields a short, honest narrative, never invented specifics.

The last automated step before a regulatory filing. Fed by Bloodhound, gated by the oversight judge.

How it runs
Scribe agent anatomy Scribe: system prompt and case context flow through the model plane into the agent core, which calls 3 sandboxed in-process tools across the tool plane, then commits a schema-validated outcome to the case journal across the data plane. The three governance seams are highlighted. system prompt + case context methodology · risk posture · the case model plane Scribe Claude Sonnet · ≤18 turns sandboxed · no built-in tools tools 3 in-process MCP tools 1 read · 1 validate · 1 commit 31 CFR 1020.320 tool plane file_sar() Sar · schema-validated structured outcome, type-checked invalid output is rejected data plane oversight gate case journal gated mock · nothing real is committed governance seam — where a layer would inspect, redact, or block (shown ungoverned)

Methodology

  1. 1 Retrieve the SAR rule (31 CFR 1020.320): the filing trigger, the $5,000 threshold, and the 30-day timing.
  2. 2 Identify the SAR subjects from the packet, with their roles and any sanctions status.
  3. 3 Characterise the suspicious activity: date range, total, currency, instruments, categories, and whether it was structured to evade reporting.
  4. 4 Write the narrative: who, what, when, where, why it is suspicious, and how the funds moved. Plain English, no speculation beyond the facts.
  5. 5 Validate completeness with the deterministic validator; fix issues and re-validate. Never file an incomplete SAR.
  6. 6 A no-SAR or continue-monitoring packet yields no filing: file a no-SAR record, never a fabricated SAR.

Sandboxed tools

In-process MCP tools only. Built-in tools disabled, settingSources [], permissionMode bypassPermissions. The only ground truth is the tools.

get_sar_requirements read 31 CFR 1020.320

Retrieves 31 CFR 1020.320: the SAR trigger, threshold, and 30-day timing.

validate_sar validate

Deterministic completeness check: subjects, activity summary, narrative length, the 1020.320 citation, the deadline.

file_sar commit

Files the SAR (gated mock FinCEN submission). Called exactly once.

Outcome contract

A filed SAR (or a no-SAR record): the subjects, the suspicious-activity summary, the narrative, the regulatory basis, the filing deadline, and the validation result.

the validated schema (Sar)
type Sar = {
  filingType: "SAR" | "no-SAR"
  subjects: { name, role, sanctionsStatus? }[]
  suspiciousActivity: {
    startDate, endDate, totalAmount, currency,
    instruments: string[], categories: string[], structured: boolean
  }
  narrative: string
  regulatoryBasis: string[]       // must cite 31 CFR 1020.320
  filingDeadline: string          // the 30-day deadline
  validation: { complete: boolean, issues: string[] }
}

Grounding

real 31 CFR 1020.320. The real FinCEN SAR rule for banks, vendored under fixtures/regs. The filing cites it as the basis.
synthetic The investigation packet. The only source of facts. Every name, amount, and date must come from it; nothing is invented.

Governance seams

The three trust boundaries a runtime governance layer clamps onto. Shown here ungoverned, so you can see exactly what would be inspected, redacted, or blocked.

Model plane
context in

The Scribe methodology plus the full investigation packet handed over by Bloodhound.

governor → Constrain the model to the packet; flag any context drift.

Tool plane
rule + validate

The 1020.320 lookup and the deterministic validator's pass / issue list.

governor → Require the rule lookup and a clean validation before a filing tool can run.

Data plane
the gated filing

The filed SAR written to the case journal. A gated mock: nothing reaches FinCEN.

governor → Hold the filing for independent review before it commits.

Scribe's filing is gated: the oversight judge (reviewSar) independently checks that the filing decision matches the facts, every narrative fact is supported by the packet, and 31 CFR 1020.320 is cited, before the SAR commits. A sanctions block and a SAR can validly coexist, and the judge knows it.

Evals & guardrails

5 / 5 golden Graded by a claude -p judge on grounding, completeness, and citation; plus deterministic validator unit tests.
  • Continue-monitoring branch. Files a no-SAR record for a not-yet-reportable packet instead of inventing a SAR.
  • Thin packet. Writes a short, honest narrative rather than padding it with fabricated specifics.
  • Sanctions + SAR coexist. Keeps a sanctions nexus in the narrative; the judge does not treat the block and the SAR as a conflict.

Orchestration

Specialist pipeline terminal + judge gate
  • Fed by Bloodhound
  • Filing gated by the oversight judge (reviewSar)
Spec card
The building view, on its desk →
Run it live · local
Watch a real run in the console →