> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getovra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# LangGraph

> Ovra mit LangGraph für stateful Agent-Payment-Workflows nutzen.

[LangGraph](https://github.com/langchain-ai/langgraph) ist graphbasierte Agent-Orchestrierung mit first-class Checkpointing. Ovras MCP-Tools pluggen via `langchain-mcp-adapters` als native LangChain-Tools ein — deine Nodes können Intents deklarieren, Credentials minten und zahlen ohne den Graph zu verlassen.

<Note>
  Heute Sandbox-only. `sk_sandbox_*` oder `sk_test_*` Key verwenden.
</Note>

## Installation

```bash theme={}
pip install langchain-mcp-adapters langgraph langchain-openai
```

## Setup

```python theme={}
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 sk_sandbox_..."},
    }
}) as client:
    tools = client.get_tools()  # alle 19 ovra_* Tools als LangChain-Tool-Objekte
    agent = create_react_agent(llm, tools)

    result = await agent.ainvoke({
        "messages": [
            {"role": "user", "content": "Kauf einen USB-C Hub unter EUR 30 auf amazon.de"}
        ]
    })
```

## Human-in-the-Loop mit Checkpointing

LangGraphs Checkpointer paart natürlich mit Ovras `enforcementLevel: "approve"` Policy-Mode — wenn ein Intent in `pending_approval` landet, pausiert der Graph; deine Approval-Surface flippt ihn auf `approved`; der Graph resumiert.

```python theme={}
from langgraph.checkpoint.memory import MemorySaver

agent = create_react_agent(llm, tools, checkpointer=MemorySaver())
```

Für Production `MemorySaver` durch `PostgresSaver` ersetzen damit der Graph Restarts überlebt.

## Multi-Step-Beispiel

```text theme={}
[node: research] -> finde besten USB-C Hub unter EUR 30 auf amazon.de
[node: declare ] -> ovra_intent { action: "declare", ... }
[node: gate    ] -> warte auf intent.status == "approved"
[node: pay     ] -> ovra_pay { action: "checkout", ... }
[node: verify  ] -> ovra_intent { action: "verify", actualAmountEuros, actualMerchant }
[node: report  ] -> ovra_outcome { action: "report", type: "purchase_completed", ... }
```

## Warum LangGraph

* **Stateful Workflows** — Checkpointing für Multi-Step Payment-Flows
* **Human-in-the-Loop** built in — paart mit Ovras `approve`-Enforcement-Level
* **Multi-Agent** — Purchaser, Auditor, Researcher in einem Graph
* **Streaming + async** für long-running Flows

## Empfohlene Tools

| Tool               | Zweck                                                |
| ------------------ | ---------------------------------------------------- |
| `ovra_pay`         | Voller Flow in einem Call                            |
| `ovra_intent`      | Deklarieren, verifizieren, auf Approval-Status gaten |
| `ovra_credential`  | Feingranulare Lifecycle                              |
| `ovra_transaction` | History + Memos                                      |
| `ovra_policy`      | Vor Deklaration lesen                                |
| `ovra_outcome`     | Erfolg für Policy-Learning melden                    |

## Weiter

<CardGroup cols={2}>
  <Card title="MCP-Übersicht" icon="info" href="/de/mcp/overview">
    Architektur und volle 19-Tool-Liste.
  </Card>

  <Card title="OpenAI Agents" icon="brain" href="/de/integrations/openai-agents">
    Hosted MCP-Integration.
  </Card>

  <Card title="CrewAI" icon="users" href="/de/integrations/crewai">
    Rollen-basierte Multi-Agent-Teams.
  </Card>
</CardGroup>
