Skip to content

← Back to work

Agentic Solutions Platform

A governed boundary letting a third-party product’s AI agents use bank data without anyone losing custody of it.

Duration:
2025
Role:
Lead Engineer
At:
Macquarie
AWS LambdaSNSSQSDynamoDBS3MCP ServerParquet

Problem

The problem


A third-party product promised to automate business processes with AI agents. For any of it to work, those agents needed the bank’s data, and they needed to act on it: read, reason, send and receive email, produce reports the business would rely on.

So the question was not whether the agents were clever. It was whether a bank could let someone else’s agents near its data at all.

Challenge

What made it hard


My team owned the infrastructure, the data access design, the mail path and execution, for agents we had not written, running on a product we did not control, against data we did not own. Source teams provided datasets on their terms: parquet files, objects on S3, database access. We were accountable for what happened next.

The approach in place solved it per agent. Each solution got its own data pattern, and each pattern carried manual governance checks and auditability as an optional extra. Add an agent, duplicate the pattern. Add ten, and you have ten slightly different answers to the question "was this access allowed", none reviewable the same way twice.

Governance that depends on someone remembering is not governance. So I built a proof of concept for the alternative: an MCP layer giving agents a single generic pattern for querying these sources, with authentication, authorisation and audit as properties of the path rather than steps someone performs.

Architecture

How it is put together


Event-driven ingestion pulls from heterogeneous internal sources and normalises them into a retrievable layer. An MCP server is the only access surface agents get. Scoped retrieval runs through an internal RAG-as-a-Service built and owned by another team, which we integrated with rather than rebuilt, so agents receive retrieved context instead of credentials and a query language. AWS serverless throughout.

The most important line in the diagram is the one that is not there: no path from an agent to a source system.

Governed data access: source systems, the platform boundary, and third-party agents with no direct path to the sources
One door, and no second door. The crossed edge is the important one.

Tradeoffs

What we chose, and what it cost


We chose

One generic access pattern over many bespoke integrations. Agents were given scoped, brokered context through MCP rather than credentials and a query language. Every access became something we could authorise and record, in the same shape every time.

We gave up

Bespoke solutions and separate infrastructure per agent. Per-agent infrastructure buys isolation: one agent’s load or failure cannot reach another, and each can be tuned to its own consumer. A shared access layer trades that for consistency, so the path becomes something that must not fall over. Genericity also costs design time before the first use case ships. Right trade when the number of agents is going up. Wrong trade for three agents that never change.

Outcome

What changed


  • By construction

    governance and auditability are properties of the access path, not manual checks

    Design intent, not a measured result.

  • One pattern

    onboarding an agentic solution becomes adoption, not an integration project

    Design intent, not a measured result.

  • Flat maintenance

    the surface stops multiplying with the number of agents

    Design intent, not a measured result.

Lessons learned

What this changed


The interesting problem in enterprise AI is not capability, it is custody. Anyone can connect an agent to data. The work is being able to say afterwards, precisely, what it saw and why it was allowed to.

Which turns the design question from "what can this agent do" into "what capability should the platform offer so every agent gets custody for free". Governance you have to remember to perform will eventually not be performed. It has to be the easy path, or solutions route around it.


Read alongside