Methodology
- 1 Retrieve the SAR rule (31 CFR 1020.320): the filing trigger, the $5,000 threshold, and the 30-day timing.
- 2 Identify the SAR subjects from the packet, with their roles and any sanctions status.
- 3 Characterise the suspicious activity: date range, total, currency, instruments, categories, and whether it was structured to evade reporting.
- 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 Validate completeness with the deterministic validator; fix issues and re-validate. Never file an incomplete SAR.
- 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
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.
The Scribe methodology plus the full investigation packet handed over by Bloodhound.
governor → Constrain the model to the packet; flag any context drift.
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.
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
- 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
- ⇢Fed by Bloodhound
- ⇢Filing gated by the oversight judge (reviewSar)