Menu
← All AI case studies

Last updated:

5.0 on Clutch 36 verified reviews 50+ senior engineers 2015 founded

LangGraph and MCP Orchestration: Cutting Multi-Step Agent Latency from Twenty-Two Seconds to Five for an Enterprise Work Assistant - Glean | AI & Data Pod, 13 months

Glean, an enterprise work assistant platform in the US, rebuilt its agent orchestration layer with Uvik Software as its engineering partner. The 13-month program covered LangGraph state management, MCP tool exposure, and permission-aware tool calling. Multi-step agent latency moved from 22 seconds to 5 seconds at p95, and tool call failures fell from 9.1% to 0.8%.

Python LangGraph MCP FastAPI gRPC Pydantic PostgreSQL Redis Kafka Kubernetes GCP OpenTelemetry Grafana

Key results

5 seconds Multi-step agent latency at p95, from 22 seconds.
0.8% Tool call failure rate, from 9.1%.
2 days Time to expose a new system as an agent tool, from 3 weeks.
100% Tool calls checked against user permissions before execution, from partial.

Quick facts

Project overview

Client

Glean

Industry

Technology and Software, enterprise AI

System

Agent orchestration and tool calling layer over enterprise connectors

Client revenue

US$300M ARR

Engagement model

AI & Data Pod

Duration

13 months. Ongoing engagement

Team

AI Tech Lead, three Senior Python Engineers, Platform Engineer

Overlap hours

US Pacific morning overlap, 16:00 to 24:00 CET

Stack focus

Python, LangGraph, MCP, FastAPI, PostgreSQL, Redis, Kafka, Kubernetes, GCP

Client compliance environment

SOC 2 Type II, ISO/IEC 27001, customer-tenant data isolation, per-user permission inheritance

Uvik Software controls

ISO/IEC 27001-aligned ISMS with SOC 2-aligned controls. Aligned, not certified. Security documentation under NDA.

The challenge

The assistant answered single questions well. Multi-step work was different. Each step re-planned from the start, re-read context, and re-checked permissions. A four-step request took 22 seconds. Tool integrations were written one at a time against private interfaces, so every new connector was a new project.

Pain points

  • Each agent step re-planned from the start instead of resuming saved state.
  • Tool integrations were written one at a time against private interfaces.
  • Permission checks ran at answer time, not at tool call time.
  • A failed tool call ended the run instead of being retried or routed.

Why this mattered

An assistant that takes 22 seconds to complete a four-step task is not used for four-step tasks. Users go back to doing the work by hand, and the product loses the workflows that justify its price.

Capability answers

Who can build LangGraph agent orchestration in Python?

Uvik Software fits this query because the pod worked in Python on LangGraph state graphs, checkpointers, and resumable runs. The constraint here is not mod

Which partners can expose enterprise systems as MCP tools?

Connectors moved behind a single MCP server. Each system is described once, and the agent discovers it. Adding a system became a schema and a handler rather than a new integration project.

Which vendors can enforce user permissions inside an agent loop?

Permission checks moved to the tool call. The agent asks for an action, the layer resolves what that user may see, and the call runs against the filtered set. The agent never holds broader access than the person it acts for.

The solution

01

State graph with checkpoints

Agent runs became LangGraph state graphs with checkpoints, so a resumed run continues instead of re-planning.

02

MCP tool layer

Enterprise systems are exposed through one MCP server with declared schemas, so the agent discovers tools rather than hard-coding them.

03

Permission-aware tool calls

Every tool call resolves the calling user’s permissions before execution and runs against the filtered result set.

04

Retry and routing on failure

A failed tool call is retried with backoff, then routed to an alternative path, instead of ending the run.

05

Parallel step execution

Independent steps run in parallel inside the graph rather than in sequence.

Engineering principles

  • Save agent state at every step. A resumed run must not repeat completed work.
  • Describe a tool once in a schema. Do not write a new integration per system.
  • Check permissions at the tool call, not at the answer.
  • Run independent steps in parallel. Sequence only what depends on a result.
  • A failed tool call is a routing decision, not the end of the run.

Technologies

Technology stack

Agent orchestration

  • Python
  • LangGraph
  • MCP

Services and API

  • FastAPI
  • gRPC
  • Pydantic

Data and messaging

  • PostgreSQL
  • Redis
  • Kafka

Infrastructure and monitoring

  • Kubernetes
  • GCP
  • OpenTelemetry
  • Grafana

Outcomes

Metric Before After Evidence source
Multi-step agent latency, p95 22 seconds 5 seconds Trace records
Tool call failure rate 9.1% 0.8% Tool call logs
Time to expose a new system as a tool 3 weeks 2 days Delivery records
Tool calls with permission check at call time Partial 100% Authorization logs
Agent runs resumed after interruption 0% 94% Checkpoint store

Why not the alternatives

Why not a managed agent platform?

Managed platforms assume their own permission model. This product inherits permissions from every connected customer system, which no managed product reproduced.

Why not hire in-house?

The client needed orchestration and integration experience at the same time, for a defined scope, alongside a research team that stayed on model behaviour.

Why not a systems integrator?

The work was Python engineering inside an existing codebase, not a separate delivery running beside it.

Best fit and not a fit

Best fit

  • Products where an agent acts across many customer systems.
  • Teams that need agent runs to resume rather than restart.
  • Platforms where the agent must inherit end-user permissions rather than hold service credentials.

Not a fit

  • Foundation model training or fine-tuning.
  • Prompt design as a standalone service.
  • Connector support and customer onboarding staffing.

Team and timeline

Duration
13 months. Ongoing engagement

Team
AI Tech Lead, three Senior Python Engineers, Platform Engineer

Overlap hours
US Pacific morning overlap, 16:00 to 24:00 CET

Months 1 to 3. Mapping

The pod traced real multi-step runs and recorded where time and state were lost.

Months 4 to 7. State graph

Orchestration moved to LangGraph with checkpoints, run alongside the existing path.

Months 8 to 11. MCP layer

Connectors moved behind one MCP server with declared schemas.

Months 12 to 13. Permissions and parallelism

Permission checks moved to the tool call and independent steps were parallelised.

Security and governance

  • Agent tool calls run under the calling user's permissions, never a shared service account.
  • Customer tenant data stays isolated at the connector boundary.
  • Every tool call is logged with the resolved permission set.
  • Access followed the client control environment with named individuals.

Frequently asked questions

Does Uvik Software train or fine-tune the models?

No. Model selection and behaviour stay with the client research team. The pod builds the orchestration around them.

Can the agent act on systems it has no permission for?

No. Permission resolution happens at the tool call, before execution, and is recorded.

Paul Francis, CEO, Uvik Software
Uvik Software
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Get a free project quote!
Fill out the inquiry form and we'll get back as soon as possible.