> ## 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.

# CrewAI

> Einem CrewAI-Team Ovra-Payment-Capabilities mit Rollen-Trennung geben.

[CrewAI](https://crewai.com) orchestriert spezialisierte Agents als Team — Purchaser, Auditor, Reporter. Ovras MCP-Server connected nativ; jede Rolle bekommt dieselbe Tool-Surface aber mit anderen Instructions und Goals.

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

## Installation

```bash theme={}
pip install crewai mcp
```

## Setup

```python theme={}
from crewai import Agent, Task, Crew
from crewai.mcp import MCPServerHTTP

ovra_server = MCPServerHTTP(
    url="https://api.getovra.com/api/mcp",
    headers={"Authorization": "Bearer sk_sandbox_..."},
    streamable=True,
)

purchasing = Agent(
    role="Purchasing Agent",
    goal="Produkte unter Budget finden und kaufen",
    backstory="Erfahrener Online-Shopper mit Payment-Authority",
    mcps=[ovra_server],
)

auditor = Agent(
    role="Compliance Auditor",
    goal="Jeden Kauf gegen Policy verifizieren und Receipt anhängen",
    backstory="Financial-Controls-Specialist",
    mcps=[ovra_server],
)
```

## Multi-Agent-Workflow

```python theme={}
purchase_task = Task(
    description="Kauf einen USB-C Hub unter EUR 30 auf amazon.de",
    expected_output="Order-Bestätigung mit Transaction-ID",
    agent=purchasing,
)

audit_task = Task(
    description=(
        "Verifiziere dass der Kauf Policy-konform ist und hänge die Receipt an. "
        "Surface jegliche Policy-Advisories."
    ),
    expected_output="Compliance-Report mit Intent-ID, Transaction-ID und Policy-Decision",
    agent=auditor,
)

crew = Crew(
    agents=[purchasing, auditor],
    tasks=[purchase_task, audit_task],
    verbose=True,
)

result = crew.kickoff()
```

## Tool-Usage pro Rolle

```text theme={}
Purchasing:
  ovra_intent { declare }
  ovra_pay    { checkout }   <- MPP-aware Merchant
  ovra_intent { verify }

Auditor:
  ovra_transaction { get }
  ovra_policy      { get }
  ovra_receipt     { upload }   <- hängt PDF-Evidence an
  ovra_outcome     { report }
```

## Warum CrewAI

* **Rollen-basierte Agents** — Purchasing, Auditing, Reporting separieren
* **Policy-Enforcement** — Ovra validiert jede Charge unabhängig vom triggerden Agent
* **Receipt-Chain** — Auditor hängt Receipts an; Chain ist audit-logged

## Empfohlene Tools

| Tool               | Zweck                        |
| ------------------ | ---------------------------- |
| `ovra_pay`         | Voller Flow in einem Call    |
| `ovra_intent`      | Deklarieren und verifizieren |
| `ovra_credential`  | Feingranulare Lifecycle      |
| `ovra_transaction` | Audit-History                |
| `ovra_receipt`     | Evidence anhängen            |
| `ovra_policy`      | Vor Deklaration lesen        |
| `ovra_outcome`     | Ergebnisse 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="LangGraph" icon="diagram-project" href="/de/integrations/langgraph">
    Stateful Graph-Workflows.
  </Card>
</CardGroup>
