The Agentic Bank

Bloodhound

⬡ Investigation Agent Financial crime

Orchestrates an investigation and screens material parties by delegating to Cerberus over a real agent-to-agent call.

The orchestrator. Receives an escalation from Sift, builds the evidence packet, and hands a SAR / no-SAR recommendation to Scribe.

How it runs
Bloodhound agent anatomy Bloodhound: system prompt and case context flow through the model plane into the agent core, which calls 7 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 Bloodhound Claude Sonnet · ≤32 turns sandboxed · no built-in tools tools 7 in-process MCP tools 5 read · 1 A2A · 1 commit OFAC SDN (via Cerberus) tool plane A2A boundary ↳ Cerberus · sanctions sub-agent compile_packet() InvestigationPacket · schema-validated structured outcome, type-checked invalid output is rejected data plane case journal gated mock · nothing real is committed governance seam — where a layer would inspect, redact, or block (shown ungoverned)

Methodology

  1. 1 Read the alert; pull the customer profile, the flagged transactions, and prior alerts.
  2. 2 Identify the material subjects: the account holder and the significant counterparties on the flagged flows.
  3. 3 For each material subject, run sanctions screening (delegating to Cerberus) and an adverse-media check.
  4. 4 Construct a dated timeline and name the typology, explaining how the facts fit it and noting exculpatory facts.
  5. 5 List the specific red flags, each grounded in a transaction, a profile mismatch, a screening result, or an adverse-media finding.
  6. 6 Recommend SAR, continue-monitoring, or no-SAR. Over-filing defensively is itself a failure; reserve SAR for an articulable basis for suspicion.

Sandboxed tools

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

get_alert read

The escalated alert.

get_customer read

The customer's KYC profile and expected activity.

get_transactions read

The customer's transactions (all, or specific ids).

get_prior_alerts read

Other alerts on the same customer.

screen_subject A2A OFAC SDN (via Cerberus)

Sanctions-screens a party; on a candidate match it delegates to Cerberus and returns its disposition.

search_adverse_media read

Checks a named party against the adverse-media corpus.

compile_packet commit

Compiles the final investigation packet. Called exactly once.

Outcome contract

A full investigation packet: subjects with their screening and media results, a timeline, the transactions, red flags, the typology, and a SAR / no-SAR recommendation.

the validated schema (InvestigationPacket)
type InvestigationPacket = {
  customer: { id, name, type, riskRating, country, profile }
  subjects: { name, role, sanctionsResult?, adverseMedia? }[]
  timeline: { date, event }[]
  transactions: { id, date, amount, currency, direction, method, counterparty? }[]
  redFlags: string[]
  typologyAssessment: string
  recommendation: "SAR" | "no-SAR" | "continue-monitoring"
  recommendationRationale: string
}

Grounding

synthetic Synthetic fixtures + adverse-media corpus. Customers, transactions, prior alerts, and a synthetic adverse-media corpus.
real Real OFAC SDN, via Cerberus. Screening runs against the real list through the A2A delegation, not a stub.

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 Bloodhound methodology plus the growing case file (alert, customer, transactions, screening results).

governor → Govern how much of the case the orchestrator may hold at once.

Tool plane
every call + the A2A hop

Each read's I/O, and the screen_subject call that spins up Cerberus as a real sub-agent and returns its disposition.

governor → See the delegation itself: which agent handed what to which, and govern the A2A boundary.

Data plane
the commit

The compiled packet written to the case journal and handed to Scribe.

governor → Require the packet to meet an evidentiary bar before it can feed a filing.

When Bloodhound screens a party, a real second agent (Cerberus) runs inside the tool call and returns its disposition. The tool plane is where one agent hands work to another, so it is exactly where a governance layer would observe and gate agent-to-agent delegation.

Evals & guardrails

5 / 5 golden Graded on recommendation posture and packet completeness.
  • No-SAR after investigation. Reconciles activity with a documented explanation and declines to file rather than defensively over-filing.
  • Sanctions nexus. Surfaces a Cerberus block into the packet's subjects and red flags rather than dropping it.

Orchestration

Orchestrator orchestrator-worker + A2A
  • Fed by Sift
  • Delegates screening to Cerberus (A2A)
  • Hands the packet to Scribe
Spec card
The building view, on its desk →
Run it live · local
Watch a real run in the console →