# AI asistanları (MCP)

> Claude Code, Cursor ya da Codex'ten tek istekle sat: kendi anahtarınla yerel bir MCP sunucusu üzerinden ürünler, fiyatlar, ödeme bağlantıları ve test ödemeleri.

`perly-pay-mcp`, asistanının Perly Pay'i senin yerine kurmasını sağlar: bir ürün ve fiyat oluşturmak, bir ödeme bağlantısı paylaşmak, onu [test modunda](https://pay.perly.io/docs/test-mode.md) ödemek ve neyin geldiğini göstermek. Senin bilgisayarında çalışır ve kendi anahtarınla yalnızca Perly Pay API'siyle konuşur. Arada bize ait hiçbir şey yok.

## Kurulum

1. **Test anahtarını al** — Dashboard → Developers → API keys: `sk_test_…`. Onunla geliştir — gerçek para hareket etmez.
2. **Sunucuyu ekle** — Claude Code'da tek satır ya da Cursor veya Codex yapılandırmasında birkaç satır. Node 20 ya da daha yenisi gerekir.
3. **İste** — "Bir saatlik danışmanlığı ödeme bağlantısıyla $49'a sat, sonra test modunda öde ve ödemeyi göster."

**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_…" }
```

> **Dikkat:** Anahtarı git'e koyma: projedeki yapılandırma dosyası çoğu zaman commit'lenir.

| Değişken | Nedir |
| --- | --- |
| `PERLY_PAY_SECRET_KEY` | Geliştirirken `sk_test_…`. `sk_live_…` yalnızca okur (aşağıya bakın). |
| `PERLY_PAY_API` | Varsayılan `https://pay.perly.io`. |
| `PERLY_PAY_WEBHOOK_SECRET` | İsteğe bağlı: `verify_webhook_signature` için `whsec_…`. |

## Araçlar

[API](https://pay.perly.io/docs/api.md)'nin kendi tanımından üretilir, bu yüzden her argüman API'nin kabul ettiğidir. Tutarlar sent cinsinden tam sayıdır: `4900`, $49.00 demek.

| Araçlar | Ne için |
| --- | --- |
| `create_product`, `list_products`, `update_product`, `create_price`, `list_prices`, `update_price` | ürünler ve fiyatlar |
| `create_payment_link`, `list_payment_links`, `update_payment_link` | ödeme bağlantıları |
| `create_invoice`, `list_invoices`, `retrieve_invoice`, `cancel_invoice`, `create_checkout_session`, `retrieve_checkout_session` | faturalar ve ödeme |
| `create_customer`, `list_customers`, `retrieve_customer` | müşteriler |
| `create_subscription`, `list_subscriptions`, `retrieve_subscription` | abonelikler |
| `check_entitlement`, `list_entitlements`, `consume_entitlement_credits`, `list_credit_usage` | erişim ve krediler |
| `list_payments`, `retrieve_payment`, `list_receipts`, `retrieve_receipt`, `list_events` | ödemeler, makbuzlar, olaylar |
| `create_refund`, `list_refunds` | iadeler |
| `create_webhook_endpoint`, `list_webhook_endpoints`, `delete_webhook_endpoint` | webhook'lar |
| `simulate_payment` | test modu |
| `verify_webhook_signature`, `pay_links` | senin bilgisayarında |

`simulate_payment` bir faturayı öder ya da bir ödeme bağlantısıyla satın alıp öder; böylece teslimat, makbuzlar ve [webhook'lar](https://pay.perly.io/docs/webhooks.md) gerçek bir alıcıdaki gibi çalışır. `pay_links`, yalnızca senin yapabileceğin işler için panel sayfalarını verir.

## Neyi yapmaz

- **Canlı anahtarla yalnızca okur.** Yazan her araç reddedilir: yeni fatura, ödeme oturumu, ürün, fiyat, müşteri, bağlantı ve abonelik; değişiklik, iptal, iade, kredi harcama ve webhook. Araç nedenini söyler; bunu panelde ya da uygulamanızın kendi kodunda yaparsınız. Neden: bir alıcının yazdığı metin asistana ulaşabilir ve sunucuya gelen hiçbir şey canlı bir değişikliği modelin değil sizin onayladığınızı kanıtlayamaz.
- **Cüzdanlar, API anahtarları, faturan, canlı moda geçiş ve iki faktörlü giriş** için araç yok. Bunları panelde sen yaparsın; `pay_links` sayfaları verir.
- **Geri alınamayan işlemler** — fatura iptali, iade açma, webhook silme — `confirm: true` bekler; asistan bunu yalnızca senin onayından sonra gönderir.
- **Gizli anahtarın asla tekrarlanmaz**, ne yanıtta ne de günlükte.

## Canlı moda geçiş

1. **Cüzdanını bağla** — Açık anahtarını ya da adresini, panelde. Seed ifadesini ya da özel anahtarı asla istemeyiz. Bkz. [Cüzdanlar](https://pay.perly.io/docs/wallets.md).
2. **Canlı modu aç** — Panelde, cüzdan bağlanır bağlanmaz.
3. **Anahtarı değiştir** — Uygulamanın sunucusunda `sk_test_…` yerine `sk_live_…` koy. Asistanda test anahtarı kalabilir.
