Enterprise Agentic AI System for Financial Services

By Amar Kumar

This brief proposes a production enterprise agentic AI system for financial services: role-specific LangGraph agents that reason over governed enterprise data via a credential-isolated access layer, integrate Snowflake Cortex and MCP tool servers, and ship with eval gates on every agent before production release.

Proposed outcome: A multi-agent platform where business users interact with specialist agents — research, operations, compliance — that retrieve answers and take approved actions through API-mediated data access, never raw database credentials, with CI eval regression, full audit traces, and deployment on AWS Bedrock or Azure AI Foundry.

Scenario

This is a proposed solution for an enterprise financial services client with an existing architecture and design spec — an execution-focused build where a senior agentic AI developer ships against clear requirements, not open-ended strategy.

Problem

Enterprise financial services teams cannot deploy agent prototypes that embed warehouse credentials, bypass row-level security, or ship without regression tests. The gap between a LangGraph demo and a SOC-ready production system is governance, eval discipline, and standardized tool access — not more prompt tweaking.

Requirements

Functional

Non-functional

Architecture

The design separates orchestration (LangGraph supervisor and role agents), tooling (MCP servers), and data access (governed gateway to Snowflake Cortex and internal APIs). Agents hold no warehouse passwords — they receive short-lived scoped tokens and call MCP tools that enforce policy server-side.

flowchart TB classDef user fill:#fef3c7,stroke:#d97706,color:#92400e classDef orch fill:#ede9fe,stroke:#7c3aed,color:#5b21b6 classDef tool fill:#dbeafe,stroke:#2563eb,color:#1e3a8a classDef gov fill:#dcfce7,stroke:#16a34a,color:#14532d classDef data fill:#f1f5f9,stroke:#64748b,color:#334155 classDef cloud fill:#fce7f3,stroke:#db2777,color:#9d174d BU["Business user\nweb / Teams embed"]:::user API["Agent API\nFastAPI + auth"]:::orch SUP["LangGraph supervisor\nintent router + A2A"]:::orch R1["Research agent\nCortex tools"]:::orch R2["Operations agent\nworkflow MCP"]:::orch R3["Compliance agent\npolicy RAG only"]:::orch BU --> API --> SUP SUP --> R1 SUP --> R2 SUP --> R3 MCP1["MCP: snowflake-governed\nAnalyst + Search"]:::tool MCP2["MCP: salesforce-read\nCRM lookup"]:::tool MCP3["MCP: internal-workflows\nticket / report APIs"]:::tool R1 --> MCP1 R2 --> MCP2 R2 --> MCP3 R3 --> MCP1 GAL["Governed access layer\nentitlements + audit"]:::gov MCP1 --> GAL MCP2 --> GAL MCP3 --> GAL SF["Snowflake\nCortex + warehouse RLS"]:::data CRM["Salesforce\nOAuth API"]:::data INT["Internal APIs\nservice accounts"]:::data GAL --> SF GAL --> CRM GAL --> INT BR["AWS Bedrock /\nAzure AI Foundry"]:::cloud R1 --> BR R2 --> BR R3 --> BR EV["Eval CI + Langfuse\ntraces + datasets"]:::gov API --> EV

Enterprise architecture — LangGraph role agents invoke MCP tool servers through a governed access layer; LLM inference routes to Bedrock or Azure; eval CI gates every deploy

sequenceDiagram autonumber participant User as Business user participant Agent as Research agent participant MCP as MCP snowflake-governed participant GAL as Governed access layer participant Cortex as Snowflake Cortex Analyst participant Eval as Audit + Langfuse User->>Agent: "AUM trend for mandate X?" Agent->>MCP: cortex_analyst(query, session_token) MCP->>GAL: validate token + entitlements GAL->>Cortex: governed NL to SQL Cortex->>GAL: result rows (RLS applied) GAL->>MCP: redacted response + query_id MCP->>Agent: structured JSON + lineage Agent->>User: answer with citation Agent->>Eval: log tools, sources, model_id alt policy denial GAL->>MCP: 403 entitlement_denied MCP->>Agent: refusal payload Agent->>User: cannot access this dataset end

Governed tool-call sequence — MCP server validates session token; access layer enforces entitlements before Cortex executes; denials produce agent refusals, not credential errors

Component map by platform layer — orchestration, tooling, governance, data, and cloud inference

End-to-end flow

Production request path — write actions pause at human approval; every path emits an auditable trace for compliance review

Indicative agent routing mix after three role agents are live — supervisor directs traffic by classified intent

Per-agent eval thresholds required before production promotion

Recommendation: LangGraph for orchestration, MCP for tool standardization, Snowflake Cortex for governed retrieval and SQL, a custom governed access layer (FastAPI) for entitlements, and AWS Bedrock / Azure AI Foundry for model hosting — with Langfuse and pytest eval packages gating every deploy.

LayerTechnologyWhy
OrchestrationLangGraphCheckpointed state graphs, HITL interrupts, conditional routing, A2A handoffs — proven for production agents
Tool protocolMCP (Model Context Protocol)Domain teams ship versioned tool servers; agents discover tools without bespoke SDK sprawl
Governed dataSnowflake Cortex Analyst + SearchNL→SQL with warehouse RLS; managed search without exporting credentials to agent pods
Access layerFastAPI + policy engine (OPA or custom)Session tokens, entitlement checks, SQL allowlists, immutable audit log
LLM hostingAWS Bedrock + Azure AI FoundryEnterprise VPC endpoints, model choice per task, contractual compliance
RAG indexingLlamaIndex pipelines → Cortex SearchChunk and embed approved corpora; align metadata to semantic layer entities
Semantic layerdbt metrics + optional Neo4j graphConsistent entity definitions shared by Cortex Analyst and agents
RuntimePython 3.11+, FastAPI, TemporalLong-running agent jobs with durable execution and retry policies
Evalspytest + Langfuse datasets + LLM-as-judgePer-agent golden tasks run in CI; production traces sampled back into datasets
InfraAWS EKS/ECS or Azure Container AppsTerraform modules; secrets in AWS Secrets Manager / Azure Key Vault
ObservabilityLangfuse + CloudWatch / Azure MonitorEnd-to-end traces: graph node → MCP call → Cortex query → model token usage

Why MCP over bespoke tool JSON schemas? In a multi-team enterprise, CRM, warehouse, and workflow APIs are owned by different groups. MCP lets each team publish a versioned server; agent developers consume a stable protocol instead of merging API clients into every graph.

Why a governed access layer? Regulated finance requires entitlements enforced outside the LLM. An agent that receives a user session token can only invoke MCP tools the access layer validates — warehouse service accounts never appear in agent environment variables.

Why LangGraph over CrewAI or AutoGen? Explicit graph edges, checkpoint persistence, and interrupt() for HITL map directly to approval workflows auditors expect. Crew-style role play is harder to eval deterministically.

Bedrock vs Azure Foundry? Use whichever matches the client’s existing cloud contract; a thin model router abstracts provider SDKs so agents reference model_id not vendor-specific clients.

Agent & component design

1 — LangGraph supervisor (router)

2 — Research analyst agent

3 — Operations agent

4 — Compliance Q&A agent

5 — MCP server: snowflake-governed (illustrative)

from mcp.server import Server
from mcp.types import Tool, TextContent

server = Server("snowflake-governed")

@server.tool()
async def cortex_analyst(query: str, session_token: str) -> list[TextContent]:
    claims = access_layer.validate(session_token)
    if "analyst" not in claims.allowed_tools:
        raise PermissionError("entitlement_denied")
    result = await cortex_client.analyst(
        query=query,
        role=claims.snowflake_role,
        warehouse=claims.warehouse,
    )
    access_layer.audit(user=claims.user_id, tool="cortex_analyst", query_id=result.id)
    return [TextContent(type="text", text=result.to_json())]

6 — Per-agent eval package (CI gate)

@pytest.mark.agent("research_analyst")
@pytest.mark.parametrize("case", load_golden_cases("research_analyst"))
async def test_research_agent(case, agent_runner):
    result = await agent_runner.run(case.user_message, context=case.context)
    assert result.tools_called == case.expected_tools
    assert citation_present(result.answer)
    if case.expect_refusal:
        assert result.refused and not result.tools_called
    else:
        score = await llm_judge relevance(case.expected_facts, result.answer)
        assert score >= 0.85

7 — Model router

TaskModel (illustrative)Provider
Supervisor intent routingClaude 3.5 Haiku / GPT-4o miniBedrock or Azure
Research synthesisClaude Sonnet / GPT-4oBedrock or Azure
Compliance answersClaude Sonnet (low temperature)Bedrock
Eval LLM-as-judgeGPT-4o miniAzure Foundry

Typical interactive turn latency budget — p95 target under 8 seconds including governed Cortex call

Agent promotion funnel — every role agent passes eval CI before staging and production

Implementation plan

Phase 1 — Platform foundation (week 1–3)

Scaffold LangGraph monorepo, governed access layer with session token issuance, first MCP server skeleton, Langfuse project, and CI eval harness template. Deploy dev environment on AWS or Azure with Bedrock/Foundry connectivity and Snowflake service account (access layer only — not in agent pods).

Risk: Snowflake Cortex region availability — confirm Cortex Analyst enabled in client account. Rollback: mock Cortex responses in MCP server for parallel frontend work.

Phase 2 — First role agent: research analyst (week 4–6)

Implement research agent graph, snowflake-governed MCP with Cortex Analyst + Search, 30-task golden eval set, streaming API endpoint. Internal UAT with 5 analyst users on read-only entitlements.

Risk: Cortex Analyst generates SQL outside allowlist — add post-generation SQL parser gate. Rollback: disable Analyst tool; Search-only mode for UAT.

Phase 3 — Supervisor + A2A routing (week 7–9)

Build supervisor graph with intent classifier, handoff protocol, and shared context compression. Expand eval set with routing cases. Define streaming UX contract (partial tool status, citation cards) with frontend team.

Risk: Context loss on A2A handoff — pass structured handoff packet, not raw chat. Rollback: single-agent mode bypassing supervisor.

Phase 4 — Operations + compliance agents (week 10–13)

Ship operations agent with HITL write approval, Salesforce-read MCP, workflow MCP. Ship compliance agent with policy-only search corpus. Separate eval packages (30+ tasks each) gating staging promotion.

Risk: Write tool idempotency — require client-supplied idempotency keys. Rollback: operations agent read-only until HITL UI signed off.

Phase 5 — Production hardening (week 14–16)

Pen test findings, audit log export for compliance, load test 100 concurrent sessions, Terraform prod modules, secrets rotation runbook, model router config for multi-provider failover.

Risk: Audit log volume — partition by date, archive to S3/Blob with retention policy. Rollback: blue/green agent deployment with traffic switch via API gateway.

Phase 6 — Eval flywheel + semantic layer (week 17–18)

Sample production traces into Langfuse datasets; weekly eval triage; connect dbt semantic layer entities to Cortex Analyst context; document prompt version registry and agent rollback procedure.

Risk: Eval set drift from real usage — auto-promote flagged prod traces to golden candidates. Rollback: pin prior prompt version in model registry.

Reporting & ops

SignalSourceCadence
Eval pass rate per agentCI pytest + Langfuse dataset runsEvery deploy (blocking)
Tool call error rateMCP server logs + access layer 5xxReal-time PagerDuty if > 2%
Cortex entitlement denial rateGoverned access layer auditDaily — tune routing if spikes
HITL approval latencyLangGraph checkpoint timestampsWeekly ops review
User negative feedback → evalThumbs-down API → dataset queueWeekly triage
p95 agent turn latencyOpenTelemetry on FastAPI + graph nodesLive dashboard
Model cost by agent/roleLangfuse cost attributionMonthly FinOps review
Prompt/version in prodModel registry + git tagChange log on every promotion

Ops cadence would include daily failed-tool review, weekly eval dataset curation from production samples, and monthly security review of MCP server permissions. The senior agent developer would own eval standards — no agent merges without a green CI eval run and signed checklist.

Proposed deliverables

Following the phased plan, a build would ship these artifacts:

Effort estimate

Indicative effort for platform foundation plus three role agents through production hardening (assumes existing architecture spec, Snowflake Cortex enabled, and client SSO available):

ScopeHours (range)
Phases 1–6 (platform + supervisor + 3 role agents + hardening)400–560 hrs
Additional role agent with MCP tools and evals (each)+60–90 hrs
Knowledge graph semantic layer (Neo4j + dbt sync)+80–120 hrs
Dual-cloud active-active (Bedrock + Foundry failover)+40–60 hrs
Ongoing eval curation, prompt updates, model rotation12–20 hrs/month
Platform costs (indicative monthly at institutional pilot scale)Snowflake Cortex, Bedrock/Azure tokens, infra — typically USD 5,000–15,000

The $15K fixed-price signal in the sourcing context would realistically scope Phase 1–2 (foundation + first research agent with evals) or a time-boxed MVP milestone — not the full six-phase platform. A production system with three governed role agents, HITL writes, and compliance audit typically lands in the 400+ hour range above.

Glossary

TermMeaning
MCPModel Context Protocol — open standard for agents to discover and invoke external tool servers
A2AAgent-to-agent delegation — supervisor handing a sub-task to a specialist agent with context packet
Governed access layerAPI middleware that enforces entitlements and audit; agents never hold warehouse credentials
Cortex AnalystSnowflake feature that translates natural language to SQL executed under caller’s warehouse role and RLS
Cortex SearchSnowflake managed hybrid search over approved document corpora indexed in the account
HITLHuman-in-the-loop — LangGraph interrupt pausing execution until a user approves a proposed action
LangGraphLibrary for building stateful, checkpointed agent workflows as explicit directed graphs
Eval gateCI threshold that blocks production deploy when an agent’s golden task success rate regresses
Semantic layerdbt-defined business metrics and entities providing consistent definitions for SQL and agents
Bedrock / AI FoundryAWS and Azure managed LLM hosting platforms with enterprise VPC and compliance options