# AI-Assistenten (MCP)

> Verkaufen Sie aus Claude Code, Cursor oder Codex mit einer Bitte: Produkte, Preise, Zahlungslinks und Testzahlungen über einen lokalen MCP-Server mit Ihrem eigenen Schlüssel.

`perly-pay-mcp` lässt Ihren Assistenten Perly Pay für Sie einrichten: ein Produkt und einen Preis anlegen, einen Zahlungslink teilen, ihn im [Testmodus](https://pay.perly.io/docs/test-mode.md) bezahlen und zeigen, was angekommen ist. Er läuft auf Ihrem Rechner und spricht nur mit der API von Perly Pay, mit Ihrem Schlüssel. Nichts von uns sitzt dazwischen.

## Einrichten

1. **Testschlüssel holen** — Dashboard → Developers → API keys: `sk_test_…`. Bauen Sie damit – echtes Geld bewegt sich nicht.
2. **Server hinzufügen** — Eine Zeile in Claude Code oder ein paar in der Konfiguration von Cursor oder Codex. Node 20 oder neuer nötig.
3. **Bitten** — „Verkaufe eine einstündige Beratung für $49 über einen Zahlungslink, bezahle sie dann im Testmodus und zeig mir die Zahlung.“

**Claude Code**

```bash
claude mcp add perly-pay --env PERLY_PAY_SECRET_KEY=sk_test_… -- npx -y perly-pay-mcp
```

**Cursor**

```json
// ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
  "mcpServers": {
    "perly-pay": {
      "command": "npx",
      "args": ["-y", "perly-pay-mcp"],
      "env": { "PERLY_PAY_SECRET_KEY": "sk_test_…" }
    }
  }
}
```

**Codex**

```toml
# ~/.codex/config.toml
[mcp_servers.perly-pay]
command = "npx"
args = ["-y", "perly-pay-mcp"]
env = { PERLY_PAY_SECRET_KEY = "sk_test_…" }
```

> **Achtung:** Legen Sie den Schlüssel nicht in git: Eine Konfigurationsdatei im Projekt wird oft committet.

| Variable | Was es ist |
| --- | --- |
| `PERLY_PAY_SECRET_KEY` | `sk_test_…`, solange Sie bauen. `sk_live_…` liest nur (siehe unten). |
| `PERLY_PAY_API` | Standard: `https://pay.perly.io`. |
| `PERLY_PAY_WEBHOOK_SECRET` | Optional: `whsec_…` für `verify_webhook_signature`. |

## Tools

Erzeugt aus der Beschreibung der [API](https://pay.perly.io/docs/api.md) selbst, daher ist jedes Argument eines, das die API annimmt. Beträge sind ganze Zahlen in Cent: `4900` sind $49.00.

| Tools | Wofür |
| --- | --- |
| `create_product`, `list_products`, `update_product`, `create_price`, `list_prices`, `update_price` | Produkte und Preise |
| `create_payment_link`, `list_payment_links`, `update_payment_link` | Zahlungslinks |
| `create_invoice`, `list_invoices`, `retrieve_invoice`, `cancel_invoice`, `create_checkout_session`, `retrieve_checkout_session` | Rechnungen und Checkout |
| `create_customer`, `list_customers`, `retrieve_customer` | Kunden |
| `create_subscription`, `list_subscriptions`, `retrieve_subscription` | Abos |
| `check_entitlement`, `list_entitlements`, `consume_entitlement_credits`, `list_credit_usage` | Zugang und Credits |
| `list_payments`, `retrieve_payment`, `list_receipts`, `retrieve_receipt`, `list_events` | Zahlungen, Belege, Ereignisse |
| `create_refund`, `list_refunds` | Erstattungen |
| `create_webhook_endpoint`, `list_webhook_endpoints`, `delete_webhook_endpoint` | Webhooks |
| `simulate_payment` | Testmodus |
| `verify_webhook_signature`, `pay_links` | auf Ihrem Rechner |

`simulate_payment` bezahlt eine Rechnung oder kauft über einen Zahlungslink und bezahlt ihn, sodass Erfüllung, Belege und [Webhooks](https://pay.perly.io/docs/webhooks.md) auslösen wie bei einem echten Käufer. `pay_links` liefert die Dashboard-Seiten für das, was nur Sie tun können.

## Was er nicht tut

- **Mit einem Live-Schlüssel nur lesen.** Jedes Tool, das schreibt, wird abgelehnt: neue Rechnungen, Checkout-Sitzungen, Produkte, Preise, Kunden, Links und Abos, Änderungen, Stornos, Erstattungen, Verbrauch von Credits und Webhooks. Das Tool sagt, warum; Sie erledigen es im Dashboard oder im Code Ihrer App. Warum: Text, den ein Käufer tippt, kann den Assistenten erreichen, und nichts, was beim Server ankommt, beweist, dass Sie und nicht das Modell eine Live-Änderung freigegeben haben.
- **Wallets, API-Schlüssel, Abrechnung, Wechsel in den Live-Modus und Zwei-Faktor-Anmeldung** haben keine Tools. Das erledigen Sie im Dashboard; `pay_links` liefert die Seiten.
- **Was sich nicht rückgängig machen lässt** – eine Rechnung stornieren, eine Erstattung eröffnen, einen Webhook löschen – wartet auf `confirm: true`, das der Assistent erst nach Ihrem Ja sendet.
- **Ihr geheimer Schlüssel wird nie wiederholt**, weder in einer Antwort noch in einem Log.

## Live gehen

1. **Wallet verbinden** — Ihr öffentlicher Schlüssel oder ihre Adresse, im Dashboard. Wir fragen nie nach einer Seed-Phrase oder einem privaten Schlüssel. Siehe [Wallets](https://pay.perly.io/docs/wallets.md).
2. **Live-Modus einschalten** — Im Dashboard, sobald eine Wallet verbunden ist.
3. **Schlüssel tauschen** — Setzen Sie auf dem Server Ihrer App `sk_live_…` statt `sk_test_…`. Der Assistent kann den Testschlüssel behalten.
