home / skills / plurigrid / asi / paypal-mcp
This skill bridges crypto to PayPal by provisioning MCP flows for invoices, orders, and settlements, enabling seamless fiat payouts.
npx playbooks add skill plurigrid/asi --skill paypal-mcpReview the files below or copy the command above to add this skill to your agents.
---
name: paypal-mcp
description: PayPal MCP server integration for invoices, payments, subscriptions, disputes, and transaction reporting via @paypal/mcp.
metadata:
trit: 0
color: "#26D826"
---
# paypal-mcp Skill
PayPal MCP server integration for invoices, payments, subscriptions, disputes, and transaction reporting via @paypal/mcp.
## GF(3) Assignment
```
Trit: 0 (ERGODIC)
Role: Coordinator - orchestrates payment flows between crypto and fiat
Color: #26D826 (green)
```
## MCP Server Setup
### Amp Configuration (~/.amp/servers.json)
```json
{
"paypal": {
"command": "npx",
"args": ["-y", "@paypal/mcp", "--tools=all"],
"env": {
"PAYPAL_ACCESS_TOKEN": "${PAYPAL_ACCESS_TOKEN}",
"PAYPAL_ENVIRONMENT": "SANDBOX"
}
}
}
```
### Claude Configuration (~/.claude.json)
```json
{
"mcpServers": {
"paypal": {
"command": "npx",
"args": ["-y", "@paypal/mcp", "--tools=all"],
"env": {
"PAYPAL_ACCESS_TOKEN": "${PAYPAL_ACCESS_TOKEN}",
"PAYPAL_ENVIRONMENT": "PRODUCTION"
}
}
}
}
```
## Token Generation
PayPal requires OAuth2 access tokens. Token validity:
- **Sandbox**: 3-8 hours
- **Production**: 8 hours
### Generate Access Token
```bash
# Sandbox
curl -X POST https://api-m.sandbox.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "${PAYPAL_CLIENT_ID}:${PAYPAL_CLIENT_SECRET}" \
-d "grant_type=client_credentials"
# Production
curl -X POST https://api-m.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "${PAYPAL_CLIENT_ID}:${PAYPAL_CLIENT_SECRET}" \
-d "grant_type=client_credentials"
```
### Token Refresh Script
```bash
#!/bin/bash
# paypal-token-refresh.sh
export PAYPAL_ACCESS_TOKEN=$(curl -s -X POST \
"https://api-m.${PAYPAL_ENVIRONMENT:-sandbox}.paypal.com/v1/oauth2/token" \
-H "Accept: application/json" \
-u "${PAYPAL_CLIENT_ID}:${PAYPAL_CLIENT_SECRET}" \
-d "grant_type=client_credentials" | jq -r '.access_token')
echo "Token refreshed: ${PAYPAL_ACCESS_TOKEN:0:20}..."
```
## Available Tools
### Invoices
| Tool | Description |
|------|-------------|
| `create_invoice` | Create a new invoice |
| `list_invoices` | List all invoices |
| `get_invoice` | Get invoice details by ID |
| `send_invoice` | Send invoice to recipient |
| `send_invoice_reminder` | Send payment reminder |
| `cancel_sent_invoice` | Cancel a sent invoice |
| `generate_invoice_qr_code` | Generate QR code for invoice payment |
### Payments
| Tool | Description |
|------|-------------|
| `create_order` | Create a payment order |
| `get_order` | Get order details |
| `pay_order` | Capture/execute payment |
| `create_refund` | Issue a refund |
| `get_refund` | Get refund status |
### Dispute Management
| Tool | Description |
|------|-------------|
| `list_disputes` | List all disputes |
| `get_dispute` | Get dispute details |
| `accept_dispute_claim` | Accept a dispute claim |
### Shipment Tracking
| Tool | Description |
|------|-------------|
| `create_shipment_tracking` | Add tracking info to transaction |
| `get_shipment_tracking` | Get tracking status |
### Catalog Management
| Tool | Description |
|------|-------------|
| `create_product` | Create product in catalog |
| `list_products` | List all products |
| `show_product_details` | Get product details |
| `update_product` | Update product info |
### Subscription Management
| Tool | Description |
|------|-------------|
| `create_subscription_plan` | Create billing plan |
| `update_plan` | Update plan details |
| `list_subscription_plans` | List all plans |
| `show_subscription_plan_details` | Get plan details |
| `create_subscription` | Create subscription for customer |
| `show_subscription_details` | Get subscription status |
| `update_subscription` | Modify subscription |
| `cancel_subscription` | Cancel active subscription |
### Reporting
| Tool | Description |
|------|-------------|
| `list_transactions` | List transactions with filters |
## Key Use Cases
### 1. Create and Send Invoice
```
User: Create an invoice for $150 consulting fee to [email protected]
Agent Flow:
1. create_invoice(amount: 150, currency: "USD", recipient: "[email protected]", description: "Consulting services")
2. send_invoice(invoice_id: "<returned_id>")
3. generate_invoice_qr_code(invoice_id: "<returned_id>")
```
### 2. Process Order Payment
```
User: Create an order for $99.99 and capture payment
Agent Flow:
1. create_order(amount: 99.99, currency: "USD", intent: "CAPTURE")
2. get_order(order_id: "<returned_id>") -- verify status
3. pay_order(order_id: "<returned_id>") -- capture funds
```
### 3. List Recent Transactions
```
User: Show me transactions from the last 7 days
Agent Flow:
1. list_transactions(start_date: "2024-12-24", end_date: "2024-12-31")
```
### 4. Subscription Workflow
```
User: Create a monthly $29 subscription plan
Agent Flow:
1. create_product(name: "Premium Service", type: "SERVICE")
2. create_subscription_plan(product_id: "<id>", name: "Monthly Premium", billing_cycles: [{frequency: "MONTH", price: 29}])
3. create_subscription(plan_id: "<plan_id>", subscriber_email: "[email protected]")
```
## APT → PYUSD → PayPal Integration Pattern
Bridge crypto (Aptos) to fiat (PayPal) via PYUSD stablecoin:
```
┌─────────────────────────────────────────────────────────────────┐
│ APT → PYUSD → PAYPAL FLOW │
└─────────────────────────────────────────────────────────────────┘
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ APT │────▶│ DEX │────▶│ PYUSD │────▶│ PayPal │
│ Wallet │ │ Swap │ │ Bridge │ │ Payout │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
│ │ │ │
│ aptos_swap │ liquidswap │ pyusd_redeem │ create_order
│ │ │ │ pay_order
```
### Triadic Flow (GF(3) Balanced)
```clojure
;; +1 GENERATOR: Aptos swap APT→PYUSD
(aptos_swap {:from "APT" :to "PYUSD" :amount 100})
;; 0 COORDINATOR: Bridge PYUSD to PayPal (this skill)
(create_order {:amount 100 :currency "USD" :funding "PYUSD"})
;; -1 VALIDATOR: Verify settlement
(get_order {:order_id order-id}) ;; Confirm COMPLETED status
```
### DuckDB Tracking
```sql
CREATE TABLE paypal_bridge_txns (
txn_id VARCHAR PRIMARY KEY,
aptos_txn_hash VARCHAR,
pyusd_amount DECIMAL(18,6),
usd_amount DECIMAL(10,2),
paypal_order_id VARCHAR,
status VARCHAR, -- PENDING, BRIDGED, SETTLED, FAILED
created_at TIMESTAMP,
settled_at TIMESTAMP,
gf3_trit INT CHECK (gf3_trit IN (-1, 0, 1))
);
```
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `PAYPAL_ACCESS_TOKEN` | Yes | OAuth2 access token |
| `PAYPAL_ENVIRONMENT` | Yes | `SANDBOX` or `PRODUCTION` |
| `PAYPAL_CLIENT_ID` | For refresh | App client ID |
| `PAYPAL_CLIENT_SECRET` | For refresh | App client secret |
## Error Handling
Common PayPal API errors:
- `AUTHENTICATION_FAILURE` - Token expired, refresh required
- `INVALID_RESOURCE_ID` - Invoice/order not found
- `PERMISSION_DENIED` - Scope not authorized
- `RATE_LIMIT_REACHED` - Too many requests, backoff
## Triadic Skill Composition
PayPal-MCP as ERGODIC (0) coordinator in payment triads:
```
┌─────────────────────────────────────────────────────────────────┐
│ PAYMENT TRIAD │
├─────────────────────────────────────────────────────────────────┤
│ +1 GENERATOR │ aptos-agent │ Create crypto txn │
│ 0 COORDINATOR │ paypal-mcp │ Bridge to fiat │
│ -1 VALIDATOR │ duckdb-ies │ Verify settlement │
├─────────────────────────────────────────────────────────────────┤
│ Σ trits = (+1) + (0) + (-1) = 0 ≡ 0 (mod 3) ✓ │
└─────────────────────────────────────────────────────────────────┘
```
## See Also
- `aptos-agent` - Aptos blockchain interactions
- `aptos-trading` - DEX swaps for APT→PYUSD
- `duckdb-ies` - Transaction tracking and analytics
- `google-workspace` - Invoice delivery via Gmail
## References
- [PayPal MCP Server](https://github.com/paypal/mcp)
- [PayPal REST API Docs](https://developer.paypal.com/docs/api/overview/)
- [PYUSD Documentation](https://www.paypal.com/pyusd)
This skill integrates a PayPal MCP server for invoices, payments, subscriptions, disputes, shipment tracking, catalog management, and transaction reporting via @paypal/mcp. It acts as the coordinator between crypto bridge flows (like PYUSD) and PayPal fiat settlement. The integration is designed for automated agent workflows and supports sandbox and production environments.
The skill exposes tools to create and manage invoices, orders, subscriptions, refunds, disputes, shipment tracking, products, and transaction reports. It uses OAuth2 access tokens (short-lived) to authenticate requests and supports token refresh automation. Agents call specific tool actions (create_invoice, create_order, create_subscription, list_transactions, etc.) to orchestrate full payment lifecycles and bridge crypto-to-fiat flows.
What credentials and env vars are required?
PAYPAL_ACCESS_TOKEN and PAYPAL_ENVIRONMENT are required. For automated refresh, also supply PAYPAL_CLIENT_ID and PAYPAL_CLIENT_SECRET.
How long is an access token valid?
Sandbox tokens typically last 3–8 hours; production tokens generally last about 8 hours. Use the refresh script to rotate tokens automatically.
How should I handle rate limits and auth failures?
Back off and retry on RATE_LIMIT_REACHED. On AUTHENTICATION_FAILURE, refresh the token and retry the failed call.