@clawpay-hedera/hak-plugin 1.0.0 → 1.0.1
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.
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* clawpay_call_paid_tool — Call a paid MCP tool and pay USDC automatically via x402.
|
|
3
|
+
*
|
|
4
|
+
* Supports two x402 response formats:
|
|
5
|
+
* 1. HTTP 402 with X-Payment header (raw x402 spec)
|
|
6
|
+
* 2. MCP-wrapped: HTTP 200 with payment requirements in result._meta["x402/error"] (ClawPay proxy)
|
|
3
7
|
*/
|
|
4
8
|
import { z } from "zod";
|
|
5
9
|
import type { ClawPayPluginConfig } from "../config.js";
|
|
@@ -23,6 +27,8 @@ export declare function callPaidToolExecute(config: ClawPayPluginConfig, params:
|
|
|
23
27
|
result: unknown;
|
|
24
28
|
receipt: null;
|
|
25
29
|
error?: undefined;
|
|
30
|
+
requiresPayment?: undefined;
|
|
31
|
+
requirements?: undefined;
|
|
26
32
|
amount?: undefined;
|
|
27
33
|
recipient?: undefined;
|
|
28
34
|
} | {
|
|
@@ -30,6 +36,38 @@ export declare function callPaidToolExecute(config: ClawPayPluginConfig, params:
|
|
|
30
36
|
paid?: undefined;
|
|
31
37
|
result?: undefined;
|
|
32
38
|
receipt?: undefined;
|
|
39
|
+
requiresPayment?: undefined;
|
|
40
|
+
requirements?: undefined;
|
|
41
|
+
amount?: undefined;
|
|
42
|
+
recipient?: undefined;
|
|
43
|
+
} | {
|
|
44
|
+
requiresPayment: boolean;
|
|
45
|
+
error: string;
|
|
46
|
+
requirements: {
|
|
47
|
+
payTo: string;
|
|
48
|
+
asset: string;
|
|
49
|
+
maxAmountRequired: string;
|
|
50
|
+
network?: string;
|
|
51
|
+
};
|
|
52
|
+
paid?: undefined;
|
|
53
|
+
result?: undefined;
|
|
54
|
+
receipt?: undefined;
|
|
55
|
+
amount?: undefined;
|
|
56
|
+
recipient?: undefined;
|
|
57
|
+
} | {
|
|
58
|
+
paid: boolean;
|
|
59
|
+
error: string;
|
|
60
|
+
requirements: {
|
|
61
|
+
payTo: string;
|
|
62
|
+
asset: string;
|
|
63
|
+
maxAmountRequired: string;
|
|
64
|
+
network?: string;
|
|
65
|
+
};
|
|
66
|
+
receipt: {
|
|
67
|
+
txId: string;
|
|
68
|
+
};
|
|
69
|
+
result?: undefined;
|
|
70
|
+
requiresPayment?: undefined;
|
|
33
71
|
amount?: undefined;
|
|
34
72
|
recipient?: undefined;
|
|
35
73
|
} | {
|
|
@@ -41,5 +79,7 @@ export declare function callPaidToolExecute(config: ClawPayPluginConfig, params:
|
|
|
41
79
|
txId: string;
|
|
42
80
|
};
|
|
43
81
|
error?: undefined;
|
|
82
|
+
requiresPayment?: undefined;
|
|
83
|
+
requirements?: undefined;
|
|
44
84
|
}>;
|
|
45
85
|
//# sourceMappingURL=call-paid-tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-paid-tool.d.ts","sourceRoot":"","sources":["../../src/tools/call-paid-tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"call-paid-tool.d.ts","sourceRoot":"","sources":["../../src/tools/call-paid-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,eAAO,MAAM,cAAc,2BAA2B,CAAC;AAEvD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC;AAEH,eAAO,MAAM,uBAAuB,0TAGsC,CAAC;AA2E3E,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;eAtEpC,MAAM;eAAS,MAAM;2BAAqB,MAAM;kBAAY,MAAM;;;;;;;;;;;eAAlE,MAAM;eAAS,MAAM;2BAAqB,MAAM;kBAAY,MAAM;;;;;;;;;;;;;;;;;;;;GAwJ7E"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* clawpay_call_paid_tool — Call a paid MCP tool and pay USDC automatically via x402.
|
|
3
|
+
*
|
|
4
|
+
* Supports two x402 response formats:
|
|
5
|
+
* 1. HTTP 402 with X-Payment header (raw x402 spec)
|
|
6
|
+
* 2. MCP-wrapped: HTTP 200 with payment requirements in result._meta["x402/error"] (ClawPay proxy)
|
|
3
7
|
*/
|
|
4
8
|
import { z } from "zod";
|
|
5
9
|
export const CALL_PAID_TOOL = "clawpay_call_paid_tool";
|
|
@@ -12,10 +16,63 @@ export const callPaidToolDescription = `Call a paid tool on a ClawPay MCP server
|
|
|
12
16
|
The payment is handled transparently — the agent's Hedera wallet signs a USDC transfer,
|
|
13
17
|
and the Blocky402 facilitator submits it gaslessly.
|
|
14
18
|
Use clawpay_discover_agents first to find the MCP endpoint and tool name.`;
|
|
19
|
+
/** Extract x402 payment requirements from either HTTP 402 or MCP-wrapped response */
|
|
20
|
+
function extractPaymentRequirements(httpStatus, headers, body) {
|
|
21
|
+
// Format 1: HTTP 402 with x-payment header
|
|
22
|
+
if (httpStatus === 402) {
|
|
23
|
+
const raw = headers.get("x-payment");
|
|
24
|
+
if (raw) {
|
|
25
|
+
try {
|
|
26
|
+
return JSON.parse(Buffer.from(raw, "base64").toString());
|
|
27
|
+
}
|
|
28
|
+
catch { /* fall through */ }
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Format 2: MCP-wrapped — result._meta["x402/error"].accepts[0]
|
|
32
|
+
const x402Error = body?.result?._meta?.["x402/error"] || body?._meta?.["x402/error"];
|
|
33
|
+
if (x402Error?.accepts?.[0]) {
|
|
34
|
+
return x402Error.accepts[0];
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/** Sign a USDC payment on Hedera and return the base64-encoded payment token */
|
|
39
|
+
async function signPayment(config, requirements) {
|
|
40
|
+
const { Client, TransferTransaction, AccountId, TokenId, PrivateKey, TransactionId, Timestamp } = await import("@hashgraph/sdk");
|
|
41
|
+
const pk = PrivateKey.fromStringECDSA((config.operatorKey || "").replace(/^0x/, ""));
|
|
42
|
+
const payerId = AccountId.fromString(config.operatorId || "0.0.6514537");
|
|
43
|
+
const payTo = requirements.payTo || requirements.pay_to;
|
|
44
|
+
const recipientId = payTo.startsWith("0.0.")
|
|
45
|
+
? AccountId.fromString(payTo)
|
|
46
|
+
: AccountId.fromEvmAddress(0, 0, payTo);
|
|
47
|
+
const asset = requirements.asset;
|
|
48
|
+
const tokenEntityNum = parseInt(asset.replace(/^0x/, ""), 16);
|
|
49
|
+
const tokenId = TokenId.fromString(`0.0.${tokenEntityNum}`);
|
|
50
|
+
const amount = Number(requirements.maxAmountRequired || requirements.amount);
|
|
51
|
+
const feePayerAccountId = config.facilitatorFeePayer
|
|
52
|
+
? AccountId.fromString(config.facilitatorFeePayer)
|
|
53
|
+
: payerId;
|
|
54
|
+
const hederaClient = config.network === "testnet" ? Client.forTestnet() : Client.forMainnet();
|
|
55
|
+
const txId = TransactionId.withValidStart(feePayerAccountId, Timestamp.generate());
|
|
56
|
+
const tx = new TransferTransaction()
|
|
57
|
+
.addTokenTransfer(tokenId, payerId, -amount)
|
|
58
|
+
.addTokenTransfer(tokenId, recipientId, amount)
|
|
59
|
+
.setTransactionId(txId)
|
|
60
|
+
.setMaxTransactionFee(2_000_000)
|
|
61
|
+
.setTransactionValidDuration(180);
|
|
62
|
+
const frozenTx = tx.freezeWith(hederaClient);
|
|
63
|
+
const signedTx = await frozenTx.sign(pk);
|
|
64
|
+
const txBytes = signedTx.toBytes();
|
|
65
|
+
const paymentToken = Buffer.from(JSON.stringify({
|
|
66
|
+
x402Version: 1,
|
|
67
|
+
payload: { transaction: Buffer.from(txBytes).toString("base64") },
|
|
68
|
+
})).toString("base64");
|
|
69
|
+
hederaClient.close();
|
|
70
|
+
return { paymentToken, txId: txId.toString(), amount, payTo };
|
|
71
|
+
}
|
|
15
72
|
export async function callPaidToolExecute(config, params) {
|
|
16
73
|
const { mcpEndpoint, toolName, args } = params;
|
|
17
74
|
try {
|
|
18
|
-
// Step 1: Call the MCP endpoint
|
|
75
|
+
// Step 1: Call the MCP endpoint without payment
|
|
19
76
|
const initRes = await fetch(mcpEndpoint, {
|
|
20
77
|
method: "POST",
|
|
21
78
|
headers: { "Content-Type": "application/json" },
|
|
@@ -26,79 +83,61 @@ export async function callPaidToolExecute(config, params) {
|
|
|
26
83
|
params: { name: toolName, arguments: args || {} },
|
|
27
84
|
}),
|
|
28
85
|
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
86
|
+
const body = await initRes.json();
|
|
87
|
+
// Check for payment requirements (both HTTP 402 and MCP-wrapped formats)
|
|
88
|
+
const requirements = extractPaymentRequirements(initRes.status, initRes.headers, body);
|
|
89
|
+
// No payment required — return result directly
|
|
90
|
+
if (!requirements) {
|
|
91
|
+
if (initRes.ok)
|
|
92
|
+
return { paid: false, result: body, receipt: null };
|
|
93
|
+
return { error: `Unexpected status ${initRes.status}: ${JSON.stringify(body).slice(0, 200)}` };
|
|
33
94
|
}
|
|
34
|
-
//
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
:
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const hederaClient = config.network === "testnet"
|
|
60
|
-
? Client.forTestnet()
|
|
61
|
-
: Client.forMainnet();
|
|
62
|
-
const txId = TransactionId.withValidStart(feePayerAccountId, Timestamp.generate());
|
|
63
|
-
const tx = new TransferTransaction()
|
|
64
|
-
.addTokenTransfer(tokenId, payerId, -amount)
|
|
65
|
-
.addTokenTransfer(tokenId, recipientId, amount)
|
|
66
|
-
.setTransactionId(txId)
|
|
67
|
-
.setMaxTransactionFee(2_000_000)
|
|
68
|
-
.setTransactionValidDuration(180);
|
|
69
|
-
const frozenTx = tx.freezeWith(hederaClient);
|
|
70
|
-
const signedTx = await frozenTx.sign(pk);
|
|
71
|
-
const txBytes = signedTx.toBytes();
|
|
72
|
-
const paymentHeader = Buffer.from(JSON.stringify({
|
|
73
|
-
x402Version: 1,
|
|
74
|
-
payload: { transaction: Buffer.from(txBytes).toString("base64") },
|
|
75
|
-
})).toString("base64");
|
|
76
|
-
hederaClient.close();
|
|
77
|
-
// Step 2: Retry the call with payment header
|
|
78
|
-
const paidRes = await fetch(mcpEndpoint, {
|
|
79
|
-
method: "POST",
|
|
80
|
-
headers: {
|
|
81
|
-
"Content-Type": "application/json",
|
|
82
|
-
"X-PAYMENT": paymentHeader,
|
|
83
|
-
"X-PAYMENT-VERSION": "1",
|
|
95
|
+
// Payment required — sign and retry
|
|
96
|
+
if (!config.operatorKey) {
|
|
97
|
+
return {
|
|
98
|
+
requiresPayment: true,
|
|
99
|
+
error: "Payment required but no HEDERA_OPERATOR_KEY configured",
|
|
100
|
+
requirements,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
const payment = await signPayment(config, requirements);
|
|
104
|
+
// Step 2: Retry with payment — send both as HTTP header AND MCP _meta
|
|
105
|
+
const paidRes = await fetch(mcpEndpoint, {
|
|
106
|
+
method: "POST",
|
|
107
|
+
headers: {
|
|
108
|
+
"Content-Type": "application/json",
|
|
109
|
+
"X-PAYMENT": payment.paymentToken,
|
|
110
|
+
"X-PAYMENT-VERSION": "1",
|
|
111
|
+
},
|
|
112
|
+
body: JSON.stringify({
|
|
113
|
+
jsonrpc: "2.0",
|
|
114
|
+
id: 2,
|
|
115
|
+
method: "tools/call",
|
|
116
|
+
params: {
|
|
117
|
+
name: toolName,
|
|
118
|
+
arguments: args || {},
|
|
119
|
+
_meta: { "x402/payment": payment.paymentToken },
|
|
84
120
|
},
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
});
|
|
92
|
-
const result = await paidRes.json();
|
|
121
|
+
}),
|
|
122
|
+
});
|
|
123
|
+
const result = await paidRes.json();
|
|
124
|
+
// Check if the retry also returned a payment error (e.g. insufficient funds)
|
|
125
|
+
const retryReqs = extractPaymentRequirements(paidRes.status, paidRes.headers, result);
|
|
126
|
+
if (retryReqs) {
|
|
93
127
|
return {
|
|
94
|
-
paid:
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
receipt: { txId: txId.toString() },
|
|
128
|
+
paid: false,
|
|
129
|
+
error: "Payment was signed but server still requires payment (verification may have failed)",
|
|
130
|
+
requirements: retryReqs,
|
|
131
|
+
receipt: { txId: payment.txId },
|
|
99
132
|
};
|
|
100
133
|
}
|
|
101
|
-
return {
|
|
134
|
+
return {
|
|
135
|
+
paid: true,
|
|
136
|
+
amount: `${(payment.amount / 1_000_000).toFixed(4)} USDC`,
|
|
137
|
+
recipient: payment.payTo,
|
|
138
|
+
result,
|
|
139
|
+
receipt: { txId: payment.txId },
|
|
140
|
+
};
|
|
102
141
|
}
|
|
103
142
|
catch (error) {
|
|
104
143
|
return { error: `Tool call failed: ${error.message}` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-paid-tool.js","sourceRoot":"","sources":["../../src/tools/call-paid-tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"call-paid-tool.js","sourceRoot":"","sources":["../../src/tools/call-paid-tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED