@xodn348/clawpay 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -4
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +24 -2
- package/dist/config.js.map +1 -1
- package/dist/guardrails.d.ts +13 -1
- package/dist/guardrails.d.ts.map +1 -1
- package/dist/guardrails.js +37 -0
- package/dist/guardrails.js.map +1 -1
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -1
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +39 -10
- package/dist/installer.js.map +1 -1
- package/dist/paypal.d.ts +5 -0
- package/dist/paypal.d.ts.map +1 -0
- package/dist/paypal.js +140 -0
- package/dist/paypal.js.map +1 -0
- package/dist/setup-paypal.d.ts +5 -0
- package/dist/setup-paypal.d.ts.map +1 -0
- package/dist/setup-paypal.js +38 -0
- package/dist/setup-paypal.js.map +1 -0
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
[](https://github.com/xodn348/clawpay/actions/workflows/ci.yml)
|
|
3
3
|
[](LICENSE)
|
|
4
4
|
[](https://stripe.com)
|
|
5
|
+
[](https://paypal.com)
|
|
5
6
|
[](https://modelcontextprotocol.io)
|
|
6
7
|
|
|
7
8
|
# ClawPay
|
|
@@ -32,7 +33,7 @@ clawpay install
|
|
|
32
33
|
3. Patches their MCP config files to register ClawPay
|
|
33
34
|
4. Confirms the connection
|
|
34
35
|
|
|
35
|
-
Once installed, open your AI assistant and say: **"set up payment method"** to register a card through Stripe Checkout.
|
|
36
|
+
Once installed, open your AI assistant and say: **"set up payment method"** to register a card through Stripe Checkout. Then (optional) say **"set up PayPal"** to link your PayPal account for P2P sending.
|
|
36
37
|
|
|
37
38
|
---
|
|
38
39
|
|
|
@@ -67,7 +68,9 @@ If auto-detection doesn't find your client, add ClawPay manually.
|
|
|
67
68
|
"type": "local",
|
|
68
69
|
"command": ["clawpay"],
|
|
69
70
|
"environment": {
|
|
70
|
-
"STRIPE_SECRET_KEY": "sk_test_..."
|
|
71
|
+
"STRIPE_SECRET_KEY": "sk_test_...",
|
|
72
|
+
"PAYPAL_CLIENT_ID": "your-paypal-client-id",
|
|
73
|
+
"PAYPAL_CLIENT_SECRET": "your-paypal-client-secret"
|
|
71
74
|
}
|
|
72
75
|
}
|
|
73
76
|
}
|
|
@@ -83,7 +86,9 @@ If auto-detection doesn't find your client, add ClawPay manually.
|
|
|
83
86
|
"command": "clawpay",
|
|
84
87
|
"args": [],
|
|
85
88
|
"env": {
|
|
86
|
-
"STRIPE_SECRET_KEY": "sk_test_..."
|
|
89
|
+
"STRIPE_SECRET_KEY": "sk_test_...",
|
|
90
|
+
"PAYPAL_CLIENT_ID": "your-paypal-client-id",
|
|
91
|
+
"PAYPAL_CLIENT_SECRET": "your-paypal-client-secret"
|
|
87
92
|
}
|
|
88
93
|
}
|
|
89
94
|
}
|
|
@@ -96,11 +101,13 @@ Same format as Claude Desktop above.
|
|
|
96
101
|
|
|
97
102
|
Replace `sk_test_...` with your actual Stripe secret key. Use a test key (`sk_test_`) during development and a live key (`sk_live_`) only in production.
|
|
98
103
|
|
|
104
|
+
PayPal credentials are optional. Required only to use the `send_paypal` tool.
|
|
105
|
+
|
|
99
106
|
---
|
|
100
107
|
|
|
101
108
|
## MCP Tools Reference
|
|
102
109
|
|
|
103
|
-
ClawPay exposes
|
|
110
|
+
ClawPay exposes seven tools over the MCP stdio protocol.
|
|
104
111
|
|
|
105
112
|
### `setup_payment`
|
|
106
113
|
|
|
@@ -144,6 +151,26 @@ Issues a full refund for a previous payment.
|
|
|
144
151
|
|
|
145
152
|
Returns a `RefundResult` with fields: `success`, `refundId`, `amount`, `status`, `error`. Partial refunds are not supported.
|
|
146
153
|
|
|
154
|
+
### `setup_paypal`
|
|
155
|
+
|
|
156
|
+
Links your PayPal account by saving Client ID and Client Secret to `~/.clawpay/config.json`. Set `PAYPAL_CLIENT_ID` and `PAYPAL_CLIENT_SECRET` environment variables, or ClawPay will read them from the config file. No parameters.
|
|
157
|
+
|
|
158
|
+
### `send_paypal`
|
|
159
|
+
|
|
160
|
+
Sends money via PayPal Payouts to an email address or phone number.
|
|
161
|
+
|
|
162
|
+
| Parameter | Type | Required | Default | Description |
|
|
163
|
+
|-----------|------|----------|---------|-------------|
|
|
164
|
+
| `recipientEmail` | string | no* | | PayPal email address of recipient |
|
|
165
|
+
| `recipientPhone` | string | no* | | Phone number of recipient (E.164 format) |
|
|
166
|
+
| `amount` | integer | yes | | Amount in cents (e.g., `2000` for $20.00) |
|
|
167
|
+
| `currency` | string | no | `"usd"` | ISO 4217 currency code |
|
|
168
|
+
| `note` | string | no | | Optional note to recipient |
|
|
169
|
+
|
|
170
|
+
*One of `recipientEmail` or `recipientPhone` is required.
|
|
171
|
+
|
|
172
|
+
Returns a `SendMoneyResult` with fields: `success`, `payoutBatchId`, `amount`, `currency`, `status`, `error`.
|
|
173
|
+
|
|
147
174
|
---
|
|
148
175
|
|
|
149
176
|
## Guardrails Configuration
|
package/dist/config.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { ClawPayConfig, GuardrailCheck } from "./types.js";
|
|
|
2
2
|
export declare function loadConfig(): ClawPayConfig;
|
|
3
3
|
export declare function saveConfig(config: ClawPayConfig): void;
|
|
4
4
|
export declare function isConfigured(): boolean;
|
|
5
|
+
export declare function isPayPalConfigured(): boolean;
|
|
5
6
|
export declare function getDailySpend(): number;
|
|
6
7
|
export declare function recordSpend(amountCents: number): void;
|
|
7
8
|
export declare function checkGuardrails(amountCents: number, currency: string): GuardrailCheck;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAY9E,wBAAgB,UAAU,IAAI,aAAa,CAkC1C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAGtD;AAED,wBAAgB,YAAY,IAAI,OAAO,CAGtC;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AA4BD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,CAmCrF"}
|
package/dist/config.js
CHANGED
|
@@ -11,20 +11,38 @@ function ensureConfigDir() {
|
|
|
11
11
|
}
|
|
12
12
|
export function loadConfig() {
|
|
13
13
|
ensureConfigDir();
|
|
14
|
+
const paypalFromEnv = {};
|
|
15
|
+
if (process.env.PAYPAL_CLIENT_ID)
|
|
16
|
+
paypalFromEnv.clientId = process.env.PAYPAL_CLIENT_ID;
|
|
17
|
+
if (process.env.PAYPAL_CLIENT_SECRET)
|
|
18
|
+
paypalFromEnv.clientSecret = process.env.PAYPAL_CLIENT_SECRET;
|
|
19
|
+
if (process.env.PAYPAL_ENVIRONMENT === "production") {
|
|
20
|
+
paypalFromEnv.environment = "production";
|
|
21
|
+
}
|
|
14
22
|
if (!existsSync(CONFIG_FILE)) {
|
|
15
|
-
|
|
23
|
+
const defaults = JSON.parse(JSON.stringify(DEFAULT_CONFIG));
|
|
24
|
+
if (defaults.paypal) {
|
|
25
|
+
defaults.paypal = { ...defaults.paypal, ...paypalFromEnv };
|
|
26
|
+
}
|
|
27
|
+
return defaults;
|
|
16
28
|
}
|
|
17
29
|
try {
|
|
18
30
|
const raw = readFileSync(CONFIG_FILE, "utf-8");
|
|
19
31
|
const saved = JSON.parse(raw);
|
|
32
|
+
const paypalConfig = { ...DEFAULT_CONFIG.paypal, ...saved.paypal, ...paypalFromEnv };
|
|
20
33
|
return {
|
|
21
34
|
stripe: { ...DEFAULT_CONFIG.stripe, ...saved.stripe },
|
|
22
35
|
server: { ...DEFAULT_CONFIG.server, ...saved.server },
|
|
23
36
|
guardrails: { ...DEFAULT_CONFIG.guardrails, ...saved.guardrails },
|
|
37
|
+
paypal: paypalConfig,
|
|
24
38
|
};
|
|
25
39
|
}
|
|
26
40
|
catch {
|
|
27
|
-
|
|
41
|
+
const defaults = JSON.parse(JSON.stringify(DEFAULT_CONFIG));
|
|
42
|
+
if (defaults.paypal) {
|
|
43
|
+
defaults.paypal = { ...defaults.paypal, ...paypalFromEnv };
|
|
44
|
+
}
|
|
45
|
+
return defaults;
|
|
28
46
|
}
|
|
29
47
|
}
|
|
30
48
|
export function saveConfig(config) {
|
|
@@ -35,6 +53,10 @@ export function isConfigured() {
|
|
|
35
53
|
const config = loadConfig();
|
|
36
54
|
return Boolean(config.stripe.customerId && config.stripe.paymentMethodId);
|
|
37
55
|
}
|
|
56
|
+
export function isPayPalConfigured() {
|
|
57
|
+
const config = loadConfig();
|
|
58
|
+
return Boolean(config.paypal?.clientId && config.paypal?.clientSecret);
|
|
59
|
+
}
|
|
38
60
|
function todayKey() {
|
|
39
61
|
return new Date().toISOString().slice(0, 10);
|
|
40
62
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEpD,SAAS,eAAe;IACtB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/guardrails.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type AuditAction = "pay" | "refund" | "balance" | "list_transactions" | "setup_payment";
|
|
1
|
+
type AuditAction = "pay" | "refund" | "balance" | "list_transactions" | "setup_payment" | "paypal_send" | "setup_paypal";
|
|
2
2
|
interface AuditEntry {
|
|
3
3
|
timestamp: string;
|
|
4
4
|
action: AuditAction;
|
|
@@ -6,6 +6,8 @@ interface AuditEntry {
|
|
|
6
6
|
currency?: string;
|
|
7
7
|
paymentIntentId?: string;
|
|
8
8
|
refundId?: string;
|
|
9
|
+
payoutBatchId?: string;
|
|
10
|
+
recipientMasked?: string;
|
|
9
11
|
status: "success" | "failed" | "blocked";
|
|
10
12
|
reason?: string;
|
|
11
13
|
}
|
|
@@ -24,5 +26,15 @@ export declare function auditRefund(opts: {
|
|
|
24
26
|
reason?: string;
|
|
25
27
|
}): void;
|
|
26
28
|
export declare function auditSetup(status: "success" | "failed", reason?: string): void;
|
|
29
|
+
export declare function auditPayPalSend(opts: {
|
|
30
|
+
amount: number;
|
|
31
|
+
currency: string;
|
|
32
|
+
recipientEmail?: string;
|
|
33
|
+
recipientPhone?: string;
|
|
34
|
+
payoutBatchId?: string;
|
|
35
|
+
status: "success" | "failed" | "blocked";
|
|
36
|
+
reason?: string;
|
|
37
|
+
}): void;
|
|
38
|
+
export declare function auditPayPalSetup(status: "success" | "failed", reason?: string): void;
|
|
27
39
|
export {};
|
|
28
40
|
//# sourceMappingURL=guardrails.d.ts.map
|
package/dist/guardrails.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardrails.d.ts","sourceRoot":"","sources":["../src/guardrails.ts"],"names":[],"mappings":"AAOA,KAAK,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,mBAAmB,GAAG,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"guardrails.d.ts","sourceRoot":"","sources":["../src/guardrails.ts"],"names":[],"mappings":"AAOA,KAAK,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,mBAAmB,GAAG,eAAe,GAAG,aAAa,GAAG,cAAc,CAAC;AAEzH,UAAU,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAMhD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,IAAI,CAUP;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,IAAI,CASP;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAO9E;AAcD,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,IAAI,CAgBP;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAOpF"}
|
package/dist/guardrails.js
CHANGED
|
@@ -39,4 +39,41 @@ export function auditSetup(status, reason) {
|
|
|
39
39
|
reason,
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
+
function maskEmail(email) {
|
|
43
|
+
const atIdx = email.indexOf("@");
|
|
44
|
+
if (atIdx <= 0)
|
|
45
|
+
return "***";
|
|
46
|
+
return email[0] + "***" + email.slice(atIdx);
|
|
47
|
+
}
|
|
48
|
+
function maskPhone(phone) {
|
|
49
|
+
const digits = phone.replace(/\D/g, "");
|
|
50
|
+
if (digits.length < 4)
|
|
51
|
+
return "***";
|
|
52
|
+
return `***-***-${digits.slice(-4)}`;
|
|
53
|
+
}
|
|
54
|
+
export function auditPayPalSend(opts) {
|
|
55
|
+
const recipientMasked = opts.recipientEmail
|
|
56
|
+
? maskEmail(opts.recipientEmail)
|
|
57
|
+
: opts.recipientPhone
|
|
58
|
+
? maskPhone(opts.recipientPhone)
|
|
59
|
+
: undefined;
|
|
60
|
+
auditLog({
|
|
61
|
+
timestamp: new Date().toISOString(),
|
|
62
|
+
action: "paypal_send",
|
|
63
|
+
amount: opts.amount,
|
|
64
|
+
currency: opts.currency,
|
|
65
|
+
payoutBatchId: opts.payoutBatchId,
|
|
66
|
+
recipientMasked,
|
|
67
|
+
status: opts.status,
|
|
68
|
+
reason: opts.reason,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export function auditPayPalSetup(status, reason) {
|
|
72
|
+
auditLog({
|
|
73
|
+
timestamp: new Date().toISOString(),
|
|
74
|
+
action: "setup_paypal",
|
|
75
|
+
status,
|
|
76
|
+
reason,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
42
79
|
//# sourceMappingURL=guardrails.js.map
|
package/dist/guardrails.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../src/guardrails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"guardrails.js","sourceRoot":"","sources":["../src/guardrails.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
5
5
|
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
6
6
|
import { isConfigured } from "./config.js";
|
|
7
7
|
import { createPayment, getBalance, listTransactions, refundPayment } from "./stripe.js";
|
|
8
|
+
import { sendMoney } from "./paypal.js";
|
|
8
9
|
const require = createRequire(import.meta.url);
|
|
9
10
|
const packageJson = require("../package.json");
|
|
10
11
|
const VERSION = typeof packageJson.version === "string" ? packageJson.version : "0.0.0";
|
|
@@ -52,6 +53,14 @@ async function getRunSetup() {
|
|
|
52
53
|
}
|
|
53
54
|
return runSetup;
|
|
54
55
|
}
|
|
56
|
+
async function getRunPayPalSetup() {
|
|
57
|
+
const setupModule = (await import("./setup-paypal.js"));
|
|
58
|
+
const runPayPalSetup = setupModule["runPayPalSetup"];
|
|
59
|
+
if (typeof runPayPalSetup !== "function") {
|
|
60
|
+
throw new Error("setup_paypal is not available: runPayPalSetup() is not implemented in ./setup-paypal.js.");
|
|
61
|
+
}
|
|
62
|
+
return runPayPalSetup;
|
|
63
|
+
}
|
|
55
64
|
async function runInstallerAction(action) {
|
|
56
65
|
const installerModule = (await import("./installer.js"));
|
|
57
66
|
const candidates = action === "install"
|
|
@@ -132,6 +141,31 @@ async function runServer() {
|
|
|
132
141
|
additionalProperties: false,
|
|
133
142
|
},
|
|
134
143
|
},
|
|
144
|
+
{
|
|
145
|
+
name: "setup_paypal",
|
|
146
|
+
description: "Link PayPal account using Client ID and Client Secret. Reads credentials from PAYPAL_CLIENT_ID and PAYPAL_CLIENT_SECRET environment variables or config file.",
|
|
147
|
+
inputSchema: {
|
|
148
|
+
type: "object",
|
|
149
|
+
properties: {},
|
|
150
|
+
additionalProperties: false,
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: "send_paypal",
|
|
155
|
+
description: "Send money via PayPal Payouts to an email address or phone number.",
|
|
156
|
+
inputSchema: {
|
|
157
|
+
type: "object",
|
|
158
|
+
properties: {
|
|
159
|
+
recipientEmail: { type: "string", description: "PayPal email address of recipient." },
|
|
160
|
+
recipientPhone: { type: "string", description: "Phone number of recipient in E.164 format." },
|
|
161
|
+
amount: { type: "number", description: "Amount in cents (e.g. 2000 for $20.00)." },
|
|
162
|
+
currency: { type: "string", description: "ISO 4217 currency code (default: usd)." },
|
|
163
|
+
note: { type: "string", description: "Optional note to recipient." },
|
|
164
|
+
},
|
|
165
|
+
required: ["amount"],
|
|
166
|
+
additionalProperties: false,
|
|
167
|
+
},
|
|
168
|
+
},
|
|
135
169
|
],
|
|
136
170
|
}));
|
|
137
171
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
@@ -189,6 +223,33 @@ async function runServer() {
|
|
|
189
223
|
return errorResult(error);
|
|
190
224
|
}
|
|
191
225
|
}
|
|
226
|
+
case "setup_paypal": {
|
|
227
|
+
try {
|
|
228
|
+
const runPayPalSetup = await getRunPayPalSetup();
|
|
229
|
+
const result = await runPayPalSetup();
|
|
230
|
+
return successResult(result);
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
return errorResult(error);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
case "send_paypal": {
|
|
237
|
+
try {
|
|
238
|
+
const recipientEmail = typeof args["recipientEmail"] === "string" ? args["recipientEmail"] : undefined;
|
|
239
|
+
const recipientPhone = typeof args["recipientPhone"] === "string" ? args["recipientPhone"] : undefined;
|
|
240
|
+
if (!recipientEmail && !recipientPhone) {
|
|
241
|
+
return errorResult(new Error("Either recipientEmail or recipientPhone is required."));
|
|
242
|
+
}
|
|
243
|
+
const amount = requireNumber(args["amount"], "amount");
|
|
244
|
+
const currency = typeof args["currency"] === "string" ? args["currency"] : "usd";
|
|
245
|
+
const note = typeof args["note"] === "string" ? args["note"] : undefined;
|
|
246
|
+
const result = await sendMoney({ recipientEmail, recipientPhone, amountCents: amount, currency, note });
|
|
247
|
+
return successResult(result);
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
return errorResult(error);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
192
253
|
default:
|
|
193
254
|
return errorResult(new Error(`Unknown tool: ${name}`));
|
|
194
255
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAuB,MAAM,oCAAoC,CAAC;AACxH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/installer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAqHA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAqHhD;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAiClD"}
|
package/dist/installer.js
CHANGED
|
@@ -66,25 +66,35 @@ function getMcpClients() {
|
|
|
66
66
|
},
|
|
67
67
|
];
|
|
68
68
|
}
|
|
69
|
-
function buildClawPayEntry(stripeKey, mcpKey) {
|
|
69
|
+
function buildClawPayEntry(stripeKey, mcpKey, paypalClientId, paypalClientSecret) {
|
|
70
70
|
if (mcpKey === "mcp") {
|
|
71
|
+
const environment = {
|
|
72
|
+
STRIPE_SECRET_KEY: stripeKey,
|
|
73
|
+
};
|
|
74
|
+
if (paypalClientId)
|
|
75
|
+
environment["PAYPAL_CLIENT_ID"] = paypalClientId;
|
|
76
|
+
if (paypalClientSecret)
|
|
77
|
+
environment["PAYPAL_CLIENT_SECRET"] = paypalClientSecret;
|
|
71
78
|
return {
|
|
72
79
|
clawpay: {
|
|
73
80
|
type: "local",
|
|
74
81
|
command: ["clawpay"],
|
|
75
|
-
environment
|
|
76
|
-
STRIPE_SECRET_KEY: stripeKey,
|
|
77
|
-
},
|
|
82
|
+
environment,
|
|
78
83
|
},
|
|
79
84
|
};
|
|
80
85
|
}
|
|
86
|
+
const env = {
|
|
87
|
+
STRIPE_SECRET_KEY: stripeKey,
|
|
88
|
+
};
|
|
89
|
+
if (paypalClientId)
|
|
90
|
+
env["PAYPAL_CLIENT_ID"] = paypalClientId;
|
|
91
|
+
if (paypalClientSecret)
|
|
92
|
+
env["PAYPAL_CLIENT_SECRET"] = paypalClientSecret;
|
|
81
93
|
return {
|
|
82
94
|
clawpay: {
|
|
83
95
|
command: "clawpay",
|
|
84
96
|
args: [],
|
|
85
|
-
env
|
|
86
|
-
STRIPE_SECRET_KEY: stripeKey,
|
|
87
|
-
},
|
|
97
|
+
env,
|
|
88
98
|
},
|
|
89
99
|
};
|
|
90
100
|
}
|
|
@@ -97,6 +107,15 @@ export async function runInstall() {
|
|
|
97
107
|
// Never log the full key — show a masked version only
|
|
98
108
|
const maskedKey = `sk_...${stripeKey.slice(-4)}`;
|
|
99
109
|
console.log(`\nConfiguring MCP clients with key ${maskedKey}...`);
|
|
110
|
+
let paypalClientId;
|
|
111
|
+
let paypalClientSecret;
|
|
112
|
+
const configurePaypal = await askQuestion("\nDo you want to configure PayPal? (y/N): ");
|
|
113
|
+
if (configurePaypal === "y" || configurePaypal === "Y") {
|
|
114
|
+
paypalClientId = await askQuestion("Enter your PayPal Client ID: ");
|
|
115
|
+
paypalClientSecret = await askQuestion("Enter your PayPal Client Secret: ");
|
|
116
|
+
const maskedPaypalId = `${paypalClientId.slice(0, 8)}...`;
|
|
117
|
+
console.log(` PayPal Client ID: ${maskedPaypalId}`);
|
|
118
|
+
}
|
|
100
119
|
const clients = getMcpClients();
|
|
101
120
|
let configuredCount = 0;
|
|
102
121
|
for (const client of clients) {
|
|
@@ -113,7 +132,7 @@ export async function runInstall() {
|
|
|
113
132
|
configuredCount++;
|
|
114
133
|
continue;
|
|
115
134
|
}
|
|
116
|
-
const entry = buildClawPayEntry(stripeKey, client.mcpKey);
|
|
135
|
+
const entry = buildClawPayEntry(stripeKey, client.mcpKey, paypalClientId, paypalClientSecret);
|
|
117
136
|
config[client.mcpKey] = { ...mcpSection, ...entry };
|
|
118
137
|
await fs.writeFile(client.configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
119
138
|
console.log(` ✓ ${client.name} configured`);
|
|
@@ -121,13 +140,23 @@ export async function runInstall() {
|
|
|
121
140
|
}
|
|
122
141
|
if (configuredCount === 0) {
|
|
123
142
|
console.log("\nNo MCP client config files found. Add clawpay manually:");
|
|
143
|
+
const openCodeEnv = { STRIPE_SECRET_KEY: maskedKey };
|
|
144
|
+
if (paypalClientId)
|
|
145
|
+
openCodeEnv["PAYPAL_CLIENT_ID"] = paypalClientId;
|
|
146
|
+
if (paypalClientSecret)
|
|
147
|
+
openCodeEnv["PAYPAL_CLIENT_SECRET"] = paypalClientSecret;
|
|
148
|
+
const desktopEnv = { STRIPE_SECRET_KEY: maskedKey };
|
|
149
|
+
if (paypalClientId)
|
|
150
|
+
desktopEnv["PAYPAL_CLIENT_ID"] = paypalClientId;
|
|
151
|
+
if (paypalClientSecret)
|
|
152
|
+
desktopEnv["PAYPAL_CLIENT_SECRET"] = paypalClientSecret;
|
|
124
153
|
console.log("\nOpenCode (~/.config/opencode/config.json):");
|
|
125
154
|
console.log(JSON.stringify({
|
|
126
155
|
mcp: {
|
|
127
156
|
clawpay: {
|
|
128
157
|
type: "local",
|
|
129
158
|
command: ["clawpay"],
|
|
130
|
-
environment:
|
|
159
|
+
environment: openCodeEnv,
|
|
131
160
|
},
|
|
132
161
|
},
|
|
133
162
|
}, null, 2));
|
|
@@ -137,7 +166,7 @@ export async function runInstall() {
|
|
|
137
166
|
clawpay: {
|
|
138
167
|
command: "clawpay",
|
|
139
168
|
args: [],
|
|
140
|
-
env:
|
|
169
|
+
env: desktopEnv,
|
|
141
170
|
},
|
|
142
171
|
},
|
|
143
172
|
}, null, 2));
|
package/dist/installer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQ1C,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe;IACxC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,eAAe,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,OAAO;QACL;YACE,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC;YAC5D,MAAM,EAAE,KAAK;SACd;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,UAAU,EAAE,IAAI,CACd,IAAI,EACJ,SAAS,EACT,qBAAqB,EACrB,QAAQ,EACR,4BAA4B,CAC7B;YACD,MAAM,EAAE,YAAY;SACrB;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC;YACzE,MAAM,EAAE,YAAY;SACrB;QACD;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC;YAC7C,MAAM,EAAE,YAAY;SACrB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,SAAiB,EACjB,MAA4B;
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/paypal.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SendMoneyRequest, SendMoneyResult } from "./types.js";
|
|
2
|
+
export declare function getAccessToken(): Promise<string>;
|
|
3
|
+
export declare function verifyPayPalConnection(): Promise<boolean>;
|
|
4
|
+
export declare function sendMoney(request: SendMoneyRequest): Promise<SendMoneyResult>;
|
|
5
|
+
//# sourceMappingURL=paypal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paypal.d.ts","sourceRoot":"","sources":["../src/paypal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AASpE,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAsCtD;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO/D;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyGnF"}
|
package/dist/paypal.js
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { loadConfig, checkGuardrails, recordSpend } from "./config.js";
|
|
2
|
+
import { auditPayPalSend } from "./guardrails.js";
|
|
3
|
+
let tokenCache = null;
|
|
4
|
+
export async function getAccessToken() {
|
|
5
|
+
if (tokenCache && Date.now() < tokenCache.expiresAt - 60_000) {
|
|
6
|
+
return tokenCache.accessToken;
|
|
7
|
+
}
|
|
8
|
+
const config = loadConfig();
|
|
9
|
+
const clientId = config.paypal?.clientId ?? process.env.PAYPAL_CLIENT_ID;
|
|
10
|
+
const clientSecret = config.paypal?.clientSecret ?? process.env.PAYPAL_CLIENT_SECRET;
|
|
11
|
+
if (!clientId || !clientSecret) {
|
|
12
|
+
throw new Error("PayPal credentials not configured. Run setup_paypal first.");
|
|
13
|
+
}
|
|
14
|
+
const env = config.paypal?.environment ?? "sandbox";
|
|
15
|
+
const baseUrl = env === "production" ? "https://api-m.paypal.com" : "https://api-m.sandbox.paypal.com";
|
|
16
|
+
const credentials = Buffer.from(`${clientId}:${clientSecret}`).toString("base64");
|
|
17
|
+
const response = await fetch(`${baseUrl}/v1/oauth2/token`, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: {
|
|
20
|
+
Authorization: `Basic ${credentials}`,
|
|
21
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
22
|
+
Accept: "application/json",
|
|
23
|
+
},
|
|
24
|
+
body: "grant_type=client_credentials",
|
|
25
|
+
});
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
throw new Error(`PayPal OAuth failed: ${response.status} ${response.statusText}`);
|
|
28
|
+
}
|
|
29
|
+
const data = (await response.json());
|
|
30
|
+
tokenCache = {
|
|
31
|
+
accessToken: data.access_token,
|
|
32
|
+
expiresAt: Date.now() + data.expires_in * 1000,
|
|
33
|
+
};
|
|
34
|
+
return tokenCache.accessToken;
|
|
35
|
+
}
|
|
36
|
+
export async function verifyPayPalConnection() {
|
|
37
|
+
try {
|
|
38
|
+
await getAccessToken();
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export async function sendMoney(request) {
|
|
46
|
+
const guardrail = checkGuardrails(request.amountCents, request.currency);
|
|
47
|
+
if (!guardrail.allowed) {
|
|
48
|
+
auditPayPalSend({
|
|
49
|
+
amount: request.amountCents,
|
|
50
|
+
currency: request.currency,
|
|
51
|
+
recipientEmail: request.recipientEmail,
|
|
52
|
+
recipientPhone: request.recipientPhone,
|
|
53
|
+
status: "blocked",
|
|
54
|
+
reason: guardrail.reason,
|
|
55
|
+
});
|
|
56
|
+
return { success: false, error: guardrail.reason };
|
|
57
|
+
}
|
|
58
|
+
if (!request.recipientEmail && !request.recipientPhone) {
|
|
59
|
+
return { success: false, error: "Either recipientEmail or recipientPhone is required." };
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
const accessToken = await getAccessToken();
|
|
63
|
+
const config = loadConfig();
|
|
64
|
+
const env = config.paypal?.environment ?? "sandbox";
|
|
65
|
+
const baseUrl = env === "production" ? "https://api-m.paypal.com" : "https://api-m.sandbox.paypal.com";
|
|
66
|
+
const receiverType = request.recipientEmail ? "EMAIL" : "PHONE";
|
|
67
|
+
const receiverValue = request.recipientEmail ?? request.recipientPhone;
|
|
68
|
+
const batchId = `clawpay-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
69
|
+
const amountDecimal = (request.amountCents / 100).toFixed(2);
|
|
70
|
+
const payload = {
|
|
71
|
+
sender_batch_header: {
|
|
72
|
+
sender_batch_id: batchId,
|
|
73
|
+
email_subject: "You have a payment",
|
|
74
|
+
email_message: request.note ?? "Payment sent via ClawPay",
|
|
75
|
+
},
|
|
76
|
+
items: [
|
|
77
|
+
{
|
|
78
|
+
recipient_type: receiverType,
|
|
79
|
+
receiver: receiverValue,
|
|
80
|
+
amount: {
|
|
81
|
+
value: amountDecimal,
|
|
82
|
+
currency: request.currency.toUpperCase(),
|
|
83
|
+
},
|
|
84
|
+
note: request.note ?? "",
|
|
85
|
+
sender_item_id: `item-${batchId}`,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
const response = await fetch(`${baseUrl}/v1/payments/payouts`, {
|
|
90
|
+
method: "POST",
|
|
91
|
+
headers: {
|
|
92
|
+
Authorization: `Bearer ${accessToken}`,
|
|
93
|
+
"Content-Type": "application/json",
|
|
94
|
+
},
|
|
95
|
+
body: JSON.stringify(payload),
|
|
96
|
+
});
|
|
97
|
+
if (!response.ok) {
|
|
98
|
+
const errorBody = await response.text();
|
|
99
|
+
auditPayPalSend({
|
|
100
|
+
amount: request.amountCents,
|
|
101
|
+
currency: request.currency,
|
|
102
|
+
recipientEmail: request.recipientEmail,
|
|
103
|
+
recipientPhone: request.recipientPhone,
|
|
104
|
+
status: "failed",
|
|
105
|
+
reason: `PayPal API error ${response.status}: ${errorBody}`,
|
|
106
|
+
});
|
|
107
|
+
return { success: false, error: `PayPal API error: ${response.status}` };
|
|
108
|
+
}
|
|
109
|
+
const result = (await response.json());
|
|
110
|
+
recordSpend(request.amountCents);
|
|
111
|
+
auditPayPalSend({
|
|
112
|
+
amount: request.amountCents,
|
|
113
|
+
currency: request.currency,
|
|
114
|
+
recipientEmail: request.recipientEmail,
|
|
115
|
+
recipientPhone: request.recipientPhone,
|
|
116
|
+
payoutBatchId: result.batch_header.payout_batch_id,
|
|
117
|
+
status: "success",
|
|
118
|
+
});
|
|
119
|
+
return {
|
|
120
|
+
success: true,
|
|
121
|
+
payoutBatchId: result.batch_header.payout_batch_id,
|
|
122
|
+
amount: request.amountCents,
|
|
123
|
+
currency: request.currency,
|
|
124
|
+
status: result.batch_header.batch_status,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
const errorMessage = err instanceof Error ? err.message : "Unknown error";
|
|
129
|
+
auditPayPalSend({
|
|
130
|
+
amount: request.amountCents,
|
|
131
|
+
currency: request.currency,
|
|
132
|
+
recipientEmail: request.recipientEmail,
|
|
133
|
+
recipientPhone: request.recipientPhone,
|
|
134
|
+
status: "failed",
|
|
135
|
+
reason: errorMessage,
|
|
136
|
+
});
|
|
137
|
+
return { success: false, error: errorMessage };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=paypal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paypal.js","sourceRoot":"","sources":["../src/paypal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-paypal.d.ts","sourceRoot":"","sources":["../src/setup-paypal.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAwCrF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { loadConfig, saveConfig } from "./config.js";
|
|
2
|
+
import { auditPayPalSetup } from "./guardrails.js";
|
|
3
|
+
import { verifyPayPalConnection } from "./paypal.js";
|
|
4
|
+
export async function runPayPalSetup() {
|
|
5
|
+
const envClientId = process.env.PAYPAL_CLIENT_ID;
|
|
6
|
+
const envClientSecret = process.env.PAYPAL_CLIENT_SECRET;
|
|
7
|
+
const envEnvironment = process.env.PAYPAL_ENVIRONMENT;
|
|
8
|
+
const credentialsFromEnv = Boolean(envClientId && envClientSecret);
|
|
9
|
+
if (!credentialsFromEnv) {
|
|
10
|
+
const config = loadConfig();
|
|
11
|
+
if (!config.paypal?.clientId || !config.paypal?.clientSecret) {
|
|
12
|
+
return {
|
|
13
|
+
success: false,
|
|
14
|
+
message: "PayPal credentials not found. Set PAYPAL_CLIENT_ID and PAYPAL_CLIENT_SECRET environment variables.",
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const connected = await verifyPayPalConnection();
|
|
19
|
+
if (!connected) {
|
|
20
|
+
const errorMessage = "PayPal connection failed. Check your Client ID and Client Secret.";
|
|
21
|
+
auditPayPalSetup("failed", errorMessage);
|
|
22
|
+
return { success: false, message: errorMessage };
|
|
23
|
+
}
|
|
24
|
+
if (credentialsFromEnv) {
|
|
25
|
+
const config = loadConfig();
|
|
26
|
+
const environment = envEnvironment === "production" ? "production" : "sandbox";
|
|
27
|
+
const paypalConfig = {
|
|
28
|
+
...(config.paypal ?? { environment: "sandbox" }),
|
|
29
|
+
clientId: envClientId,
|
|
30
|
+
clientSecret: envClientSecret,
|
|
31
|
+
environment,
|
|
32
|
+
};
|
|
33
|
+
saveConfig({ ...config, paypal: paypalConfig });
|
|
34
|
+
}
|
|
35
|
+
auditPayPalSetup("success");
|
|
36
|
+
return { success: true, message: "PayPal configured successfully." };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=setup-paypal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-paypal.js","sourceRoot":"","sources":["../src/setup-paypal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAGrD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACjD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACzD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,IAAI,eAAe,CAAC,CAAC;IAEnE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;YAC7D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EACL,oGAAoG;aACvG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAEjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,mEAAmE,CAAC;QACzF,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,WAAW,GACf,cAAc,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7D,MAAM,YAAY,GAAiB;YACjC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;YAChD,QAAQ,EAAE,WAAY;YACtB,YAAY,EAAE,eAAgB;YAC9B,WAAW;SACZ,CAAC;QACF,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;AACvE,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
export interface PayPalConfig {
|
|
2
|
+
clientId?: string;
|
|
3
|
+
clientSecret?: string;
|
|
4
|
+
environment: "sandbox" | "production";
|
|
5
|
+
}
|
|
6
|
+
export interface SendMoneyRequest {
|
|
7
|
+
recipientEmail?: string;
|
|
8
|
+
recipientPhone?: string;
|
|
9
|
+
amountCents: number;
|
|
10
|
+
currency: string;
|
|
11
|
+
note?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SendMoneyResult {
|
|
14
|
+
success: boolean;
|
|
15
|
+
payoutBatchId?: string;
|
|
16
|
+
amount?: number;
|
|
17
|
+
currency?: string;
|
|
18
|
+
status?: string;
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
1
21
|
export interface ClawPayConfig {
|
|
2
22
|
stripe: {
|
|
3
23
|
customerId?: string;
|
|
@@ -12,6 +32,7 @@ export interface ClawPayConfig {
|
|
|
12
32
|
allowedCurrencies: string[];
|
|
13
33
|
requireConfirmation: boolean;
|
|
14
34
|
};
|
|
35
|
+
paypal?: PayPalConfig;
|
|
15
36
|
}
|
|
16
37
|
export declare const DEFAULT_CONFIG: ClawPayConfig;
|
|
17
38
|
export interface PaymentRequest {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,UAAU,EAAE;QACV,4BAA4B,EAAE,MAAM,CAAC;QACrC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,SAAS,GAAG,YAAY,CAAC;CAEvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,UAAU,EAAE;QACV,4BAA4B,EAAE,MAAM,CAAC;QACrC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC;IACF,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,EAAE,aAY5B,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
package/dist/types.js
CHANGED
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAyCA,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACtB,UAAU,EAAE;QACV,4BAA4B,EAAE,KAAK;QACnC,kBAAkB,EAAE,KAAK;QACzB,iBAAiB,EAAE,CAAC,KAAK,CAAC;QAC1B,mBAAmB,EAAE,KAAK;KAC3B;IACD,MAAM,EAAE;QACN,WAAW,EAAE,SAAkB;KAChC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xodn348/clawpay",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Open-source Stripe MCP Server for AI agents",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Open-source Stripe and PayPal MCP Server for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"keywords": [
|
|
26
26
|
"stripe",
|
|
27
|
+
"paypal",
|
|
27
28
|
"mcp",
|
|
28
29
|
"ai",
|
|
29
30
|
"payment"
|