Skip to main content

Overview

LangGraph is the most production-hardened agent framework, built by LangChain. It uses graph-based orchestration for complex stateful workflows. With langchain-mcp-adapters, Ovra’s payment tools integrate as native LangChain tools.

Install

pip install langchain-mcp-adapters langgraph langchain-openai

Setup

from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4.1")

async with MultiServerMCPClient({
    "ovra": {
        "url": "https://api.getovra.com/api/mcp",
        "transport": "streamable_http",
        "headers": {
            "Authorization": "Bearer <OVRA_AGENT_TOKEN>"
        },
    }
}) as client:
    tools = client.get_tools()
    agent = create_react_agent(llm, tools)

    result = await agent.ainvoke({
        "messages": [
            {"role": "user", "content": "Buy a USB-C hub under €30 on amazon.de"}
        ]
    })

Why LangGraph

  • Stateful workflows — graph-based execution with checkpointing, ideal for multi-step payment flows
  • Human-in-the-loop — built-in approval steps pair well with Ovra’s approve enforcement level
  • Multi-agent — orchestrate specialized agents (researcher, purchaser, auditor) in a single graph
  • Production-ready — used by Klarna, Uber, LinkedIn

Payment Flow

LangGraph agents follow Ovra’s standard credential flow:
User request
  → Agent node: ovra_intent (create) → policy check
  → Agent node: ovra_credential (issue) → get DPAN
  → Agent node: pay at merchant
  → Agent node: ovra_credential (confirm)
  → Response to user

Human Approval Example

Use LangGraph’s interrupt mechanism with Ovra’s approve enforcement level:
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import MemorySaver

agent = create_react_agent(
    llm,
    tools,
    checkpointer=MemorySaver(),
)
When a policy has enforcementLevel: "approve", Ovra returns a pending approval. Your LangGraph agent can pause execution at a checkpoint and wait for human confirmation before proceeding.

Key Tools

ToolPurpose
ovra_agentList agents, check balance
ovra_intentDeclare purchase intent (auto policy check)
ovra_credentialGet DPAN, confirm payment
ovra_transactionView transaction history
ovra_policyCheck if a purchase would be allowed