@aifinpay/mcp 2.11.4 → 2.12.2
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 +117 -93
- package/bin/aifinpay-mcp.js +44 -36
- package/dist/config.d.ts +38 -13
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +51 -19
- package/dist/config.js.map +1 -1
- package/dist/dashboard-policy.d.ts +47 -0
- package/dist/dashboard-policy.d.ts.map +1 -0
- package/dist/dashboard-policy.js +124 -0
- package/dist/dashboard-policy.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/merchant-site.d.ts +32 -0
- package/dist/merchant-site.d.ts.map +1 -0
- package/dist/merchant-site.js +58 -0
- package/dist/merchant-site.js.map +1 -0
- package/dist/server.d.ts +4 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +37 -10
- package/dist/server.js.map +1 -1
- package/dist/tools/agent-claim-self.d.ts +14 -7
- package/dist/tools/agent-claim-self.d.ts.map +1 -1
- package/dist/tools/agent-claim-self.js +76 -25
- package/dist/tools/agent-claim-self.js.map +1 -1
- package/dist/tools/payable-fetch.d.ts.map +1 -1
- package/dist/tools/payable-fetch.js +40 -12
- package/dist/tools/payable-fetch.js.map +1 -1
- package/dist/tools/payment-setup-status.d.ts +16 -9
- package/dist/tools/payment-setup-status.d.ts.map +1 -1
- package/dist/tools/payment-setup-status.js +83 -63
- package/dist/tools/payment-setup-status.js.map +1 -1
- package/package.json +3 -3
- package/skills/SKILL.md +99 -82
- package/smithery.yaml +7 -8
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join, resolve } from "node:path";
|
|
4
|
-
import { validatePaymentConfig } from "../config.js";
|
|
4
|
+
import { DEFAULT_DAILY_USD, DEFAULT_MAX_GAS_POL, DEFAULT_MAX_USD, validatePaymentConfig } from "../config.js";
|
|
5
5
|
import { independentNativeUsd } from "../native-price.js";
|
|
6
6
|
import { payChain } from "../pay-chains.js";
|
|
7
|
+
import { dashboardRefusal, dashboardSentence, readDashboardPolicy } from "../dashboard-policy.js";
|
|
7
8
|
/**
|
|
8
9
|
* The one read-only checklist between "server connected" and "first payment".
|
|
9
10
|
*
|
|
@@ -17,24 +18,22 @@ import { payChain } from "../pay-chains.js";
|
|
|
17
18
|
*/
|
|
18
19
|
/** The smallest AIFP-1 batch the backend sells, in USD. */
|
|
19
20
|
export const SMALLEST_BATCH_USD = 0.1;
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
// cap is a worst case at the current Polygon gas price, not the fee: 0.05 POL
|
|
27
|
-
// refused every payment at ~280 gwei.
|
|
28
|
-
export const PAYMENT_ENV = Object.freeze({
|
|
29
|
-
AIFINPAY_PAYMENTS_ENABLED: "1",
|
|
21
|
+
// Optional env the owner may add to narrow the defaults; none of it is needed
|
|
22
|
+
// for a first payment. init prints it as a reference and README "Optional
|
|
23
|
+
// overrides" shows the same block; a test keeps the two equal. The gas cap is a
|
|
24
|
+
// worst case at the current Polygon gas price, not the fee: 0.05 POL refused
|
|
25
|
+
// every payment at ~280 gwei, so the default is 0.3 POL.
|
|
26
|
+
export const PAYMENT_OVERRIDES = Object.freeze({
|
|
30
27
|
AIFINPAY_GATEWAY_ORIGINS: "https://merchant.example",
|
|
31
|
-
AIFINPAY_GATEWAY_PATH_MODE: "direct",
|
|
32
|
-
AIFINPAY_MAX_USD: "5",
|
|
33
|
-
AIFINPAY_DAILY_USD: "20",
|
|
34
28
|
AIFINPAY_MAX_GAS_POL: "0.3",
|
|
35
29
|
});
|
|
30
|
+
/** How payments work with nothing set, for init's output and the tool text. */
|
|
31
|
+
export const PAYMENTS_DEFAULT_NOTE = `Payments are on by default within a built-in ceiling of $${DEFAULT_MAX_USD} per payment and $${DEFAULT_DAILY_USD} per 24 hours, ` +
|
|
32
|
+
"only through a persistent wallet, only to merchants registered with AiFinPay via a quote signed by its backend; an unfunded wallet spends nothing. " +
|
|
33
|
+
"AIFINPAY_MAX_USD and AIFINPAY_DAILY_USD can only lower that ceiling; AIFINPAY_PAYMENTS_ENABLED=0 turns payments off; " +
|
|
34
|
+
"AIFINPAY_GATEWAY_ORIGINS, when set, is the only list of payable sites.";
|
|
36
35
|
/** Where the owner manages the working limits once the agent is claimed. */
|
|
37
|
-
export const CONTROLS_NOTE = "The
|
|
36
|
+
export const CONTROLS_NOTE = "The working limits are the dashboard Controls: once the agent is linked with agent_claim_self, the owner sets the per-payment cap, daily cap, pause and allowed merchants at https://dash.aifinpay.io, and AiFinPay enforces them on every quote and payment; this server's ceiling applies underneath.";
|
|
38
37
|
export const INIT_COMMAND = "npx @aifinpay/mcp init";
|
|
39
38
|
/** POSIX single quotes: the path reaches init byte for byte, spaces and quotes included. */
|
|
40
39
|
function shellQuote(value) {
|
|
@@ -86,10 +85,10 @@ function lockedKeystore(config) {
|
|
|
86
85
|
export function paymentSetupStatusTool() {
|
|
87
86
|
return {
|
|
88
87
|
name: "payment_setup_status",
|
|
89
|
-
description: "Read-only checklist for paying with payable_fetch: wallet (persistent or ephemeral), whether the
|
|
90
|
-
"First payment in five steps: (1) GET the resource and read its 402 (merchant, price, smallest batch); (2) call payment_setup_status; (3) no persistent wallet: run `npx @aifinpay/mcp init` without a terminal, put its printed env into the MCP client config,
|
|
91
|
-
|
|
92
|
-
"
|
|
88
|
+
description: "Read-only checklist for paying with payable_fetch: wallet (persistent or ephemeral), whether payments are on, the ceiling and each limit with its source (built-in default or the owner's env), the wallet's native balance on the pay chain when readable, the owner's dashboard Controls in `dashboard`, and next_step — exactly one instruction for the first unmet item. " +
|
|
89
|
+
"First payment in five steps: (1) GET the resource and read its 402 (merchant, price, smallest batch); (2) call payment_setup_status; (3) no persistent wallet: run `npx @aifinpay/mcp init` without a terminal, put its printed env into the MCP client config, then call agent_reload (no restart: payments are on by default); (4) tell the owner the address and the amount in `funding` (the smallest batch at today's rate plus the gas cap; if no rate could be read, ask for the batch price in the native currency at today's rate plus the gas cap and name no number), and offer the dashboard link so the owner can claim the agent (agent_claim_self) and set the working limits in Controls; (5) payable_fetch the URL. " +
|
|
90
|
+
PAYMENTS_DEFAULT_NOTE +
|
|
91
|
+
" Moves nothing and signs no payment: for a persistent wallet it signs one short AiFinPay read statement to fetch the owner's Controls. Never asks the owner's limits from the model.",
|
|
93
92
|
inputSchema: { type: "object", properties: {}, additionalProperties: false },
|
|
94
93
|
annotations: { readOnlyHint: true, openWorldHint: true, destructiveHint: false },
|
|
95
94
|
};
|
|
@@ -101,21 +100,32 @@ export async function runPaymentSetupStatus(ctx, _args) {
|
|
|
101
100
|
function limit(env, value) {
|
|
102
101
|
return value === undefined ? { env, set: false } : { env, set: true, value };
|
|
103
102
|
}
|
|
103
|
+
/** A USD limit with its source: the owner's env when they set it, otherwise the
|
|
104
|
+
* built-in ceiling (a programmatic value equal to the ceiling counts as it). */
|
|
105
|
+
function usdLimit(config, env, value, ceiling) {
|
|
106
|
+
if (value === undefined)
|
|
107
|
+
return { env, set: false };
|
|
108
|
+
const source = config.ownerOverrides?.includes(env) || value !== ceiling ? "env" : "default";
|
|
109
|
+
return { env, set: true, value, source };
|
|
110
|
+
}
|
|
104
111
|
function gasLimit(config, chain) {
|
|
105
112
|
if (chain.name === "solana")
|
|
106
113
|
return limit("AIFINPAY_MAX_FEE_LAMPORTS", config.maxFeeLamports);
|
|
107
114
|
if (config.maxGas !== undefined)
|
|
108
|
-
return limit("AIFINPAY_MAX_GAS", config.maxGas);
|
|
109
|
-
|
|
115
|
+
return { ...limit("AIFINPAY_MAX_GAS", config.maxGas), source: "env" };
|
|
116
|
+
if (config.maxGasPol !== undefined)
|
|
117
|
+
return { ...limit("AIFINPAY_MAX_GAS_POL", config.maxGasPol), source: "env" };
|
|
118
|
+
// validatePaymentConfig applies the same default on Polygon; another chain names its own cap.
|
|
119
|
+
if (chain.name === "polygon")
|
|
120
|
+
return { env: "AIFINPAY_MAX_GAS_POL", set: true, value: DEFAULT_MAX_GAS_POL, source: "default" };
|
|
121
|
+
return limit("AIFINPAY_MAX_GAS", undefined);
|
|
110
122
|
}
|
|
111
|
-
/**
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
...(config.dailyAmountUsd !== undefined ? { AIFINPAY_DAILY_USD: String(config.dailyAmountUsd) } : {}),
|
|
118
|
-
};
|
|
123
|
+
/** "the built-in ceiling" or which part of it the owner lowered. */
|
|
124
|
+
function ceilingWords(limits) {
|
|
125
|
+
const lowered = [limits.max_usd, limits.daily_usd].filter((l) => l.source === "env").map((l) => l.env);
|
|
126
|
+
return lowered.length
|
|
127
|
+
? `the built-in $${DEFAULT_MAX_USD} / $${DEFAULT_DAILY_USD} ceiling, lowered by the owner's ${lowered.join(" and ")}`
|
|
128
|
+
: "the built-in ceiling";
|
|
119
129
|
}
|
|
120
130
|
export async function paymentSetupStatus(ctx, options) {
|
|
121
131
|
const { config } = ctx;
|
|
@@ -132,8 +142,8 @@ export async function paymentSetupStatus(ctx, options) {
|
|
|
132
142
|
return unready(ctx, source, chain, error.message);
|
|
133
143
|
}
|
|
134
144
|
const limits = {
|
|
135
|
-
max_usd:
|
|
136
|
-
daily_usd:
|
|
145
|
+
max_usd: usdLimit(config, "AIFINPAY_MAX_USD", config.maxAmountUsd, DEFAULT_MAX_USD),
|
|
146
|
+
daily_usd: usdLimit(config, "AIFINPAY_DAILY_USD", config.dailyAmountUsd, DEFAULT_DAILY_USD),
|
|
137
147
|
gas_cap: gasLimit(config, chain),
|
|
138
148
|
origins: limit("AIFINPAY_GATEWAY_ORIGINS", config.gatewayOrigins),
|
|
139
149
|
};
|
|
@@ -152,6 +162,7 @@ export async function paymentSetupStatus(ctx, options) {
|
|
|
152
162
|
payments_enabled: Boolean(config.paymentsEnabled),
|
|
153
163
|
pay_chain: chain.name,
|
|
154
164
|
pay_asset: config.payAsset ?? chain.native,
|
|
165
|
+
ceiling: { max_usd: DEFAULT_MAX_USD, daily_usd: DEFAULT_DAILY_USD },
|
|
155
166
|
limits,
|
|
156
167
|
...(configError ? { config_error: configError } : {}),
|
|
157
168
|
balance: "unknown",
|
|
@@ -166,29 +177,36 @@ export async function paymentSetupStatus(ctx, options) {
|
|
|
166
177
|
: `Run \`${initCommand(config.walletHome)}\` (without a terminal it prints JSON; copy its "env" into this server's env in the MCP client config), reconnect the server, then call agent_reload and payment_setup_status again.`);
|
|
167
178
|
return status;
|
|
168
179
|
}
|
|
169
|
-
// The amount to fund is answered
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
//
|
|
180
|
+
// The amount to fund is answered whatever the env says: step 4 ("tell the
|
|
181
|
+
// owner the address and the amount") must not wait on it, and the 2026-10-19
|
|
182
|
+
// quote priced $0.10 at 1.08 POL while the guide still said 0.5 — no fixed
|
|
183
|
+
// rate survives, so the tool reads one now.
|
|
173
184
|
const gasCap = status.limits.gas_cap.set && Number(status.limits.gas_cap.value) > 0 ? String(status.limits.gas_cap.value) : undefined;
|
|
174
185
|
const rpc = config.rpcUrl ?? chain.defaultRpc;
|
|
175
186
|
if (options.readBalance && chain.name !== "solana") {
|
|
176
187
|
status.funding = await funding(ctx, chain, rpc, gasCap);
|
|
188
|
+
// The owner's Controls are the working limits once the agent is claimed;
|
|
189
|
+
// read them here so the agent can name them, or offer the link if there is none.
|
|
190
|
+
status.dashboard = await readDashboardPolicy(ctx);
|
|
177
191
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
+
const withDashboard = (text) => status.dashboard ? `${text} ${dashboardSentence(status.dashboard)}` : text;
|
|
193
|
+
// The env is read once, at start. An agent that saw agent_reload succeed and
|
|
194
|
+
// payments stay off concluded the settings were lost, and stopped: say what
|
|
195
|
+
// the owner changes and that the client must restart the server after.
|
|
196
|
+
const restart = "Env is read only when the server starts and agent_reload does not read it: once the owner has saved the change, have the client restart the aifinpay MCP server (restart the client, or disable and re-enable the server), then call payment_setup_status again.";
|
|
197
|
+
if (!config.paymentsEnabled) {
|
|
198
|
+
status.next_step = withDashboard(`Payments are off: the owner set AIFINPAY_PAYMENTS_ENABLED=0 for this server (they are on by default, within ${ceilingWords(limits)}). ` +
|
|
199
|
+
`To turn them on, the owner removes that variable from the server's env in the MCP client config. ${restart} ${CONTROLS_NOTE}`);
|
|
200
|
+
return status;
|
|
201
|
+
}
|
|
202
|
+
if (configError) {
|
|
203
|
+
status.next_step = withDashboard(`Owner setting refused: ${configError}. The owner fixes it in the server's env in the MCP client config. ` + restart);
|
|
204
|
+
return status;
|
|
205
|
+
}
|
|
206
|
+
// Paused or expired Controls refuse every quote; funding or paying now would only fail.
|
|
207
|
+
const refusal = status.dashboard && dashboardRefusal(status.dashboard);
|
|
208
|
+
if (refusal) {
|
|
209
|
+
status.next_step = refusal;
|
|
192
210
|
return status;
|
|
193
211
|
}
|
|
194
212
|
if (status.funding) {
|
|
@@ -197,10 +215,9 @@ export async function paymentSetupStatus(ctx, options) {
|
|
|
197
215
|
status.balance = { amount: formatNative(balance), asset: chain.native, chain: chain.name, rpc };
|
|
198
216
|
const needed = status.funding.amount !== undefined ? Number(status.funding.amount) : Number(gasCap);
|
|
199
217
|
if (Number(status.balance.amount) < needed) {
|
|
200
|
-
status.next_step =
|
|
201
|
-
status.funding.amount
|
|
202
|
-
|
|
203
|
-
: `Fund ${ctx.agent.evmAddress} on ${chain.label} with the batch price in ${chain.native} at today's rate plus the gas cap of ${gasCap} ${chain.native} (the rate could not be read here, so ask the owner to look it up; it holds ${status.balance.amount}), then call payment_setup_status again.`;
|
|
218
|
+
status.next_step = withDashboard(status.funding.amount !== undefined
|
|
219
|
+
? `Fund ${ctx.agent.evmAddress} on ${chain.label} with about ${status.funding.amount} ${chain.native} (the smallest batch is $${SMALLEST_BATCH_USD.toFixed(2)} ≈ ${status.funding.batch_native} ${chain.native} at today's rate plus up to ${gasCap} ${chain.native} gas; it holds ${status.balance.amount}), then call payment_setup_status again.`
|
|
220
|
+
: `Fund ${ctx.agent.evmAddress} on ${chain.label} with the batch price in ${chain.native} at today's rate plus the gas cap of ${gasCap} ${chain.native} (the rate could not be read here, so ask the owner to look it up; it holds ${status.balance.amount}), then call payment_setup_status again.`);
|
|
204
221
|
return status;
|
|
205
222
|
}
|
|
206
223
|
}
|
|
@@ -209,14 +226,16 @@ export async function paymentSetupStatus(ctx, options) {
|
|
|
209
226
|
}
|
|
210
227
|
}
|
|
211
228
|
status.ready = true;
|
|
212
|
-
|
|
213
|
-
`
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
229
|
+
const sites = config.gatewayOrigins?.length
|
|
230
|
+
? `on ${config.gatewayOrigins.join(" or ")}`
|
|
231
|
+
: "on any https site (the owner can narrow this with AIFINPAY_GATEWAY_ORIGINS)";
|
|
232
|
+
status.next_step = withDashboard(`Ready. Call payable_fetch({"url": "<HTTPS resource ${sites}>"}); ` +
|
|
233
|
+
`it pays at most $${config.maxAmountUsd} per call and $${config.dailyAmountUsd} per 24 hours (${ceilingWords(limits)}), with gas capped at ${status.limits.gas_cap.value} ${chain.native}, and only merchants registered with AiFinPay are ever paid. ` +
|
|
234
|
+
CONTROLS_NOTE +
|
|
235
|
+
(status.balance === "unknown"
|
|
236
|
+
? ` The wallet must hold the batch price plus up to the gas cap in ${chain.native} on ${chain.label}` +
|
|
237
|
+
(status.funding?.amount !== undefined ? ` (about ${status.funding.amount} ${chain.native} at today's rate).` : ".")
|
|
238
|
+
: ""));
|
|
220
239
|
return status;
|
|
221
240
|
}
|
|
222
241
|
/**
|
|
@@ -277,9 +296,10 @@ function unready(ctx, source, chain, error) {
|
|
|
277
296
|
payments_enabled: Boolean(ctx.config.paymentsEnabled),
|
|
278
297
|
pay_chain: String(ctx.config.payChain),
|
|
279
298
|
pay_asset: ctx.config.payAsset ?? chain.native,
|
|
299
|
+
ceiling: { max_usd: DEFAULT_MAX_USD, daily_usd: DEFAULT_DAILY_USD },
|
|
280
300
|
limits: {
|
|
281
|
-
max_usd:
|
|
282
|
-
daily_usd:
|
|
301
|
+
max_usd: usdLimit(ctx.config, "AIFINPAY_MAX_USD", ctx.config.maxAmountUsd, DEFAULT_MAX_USD),
|
|
302
|
+
daily_usd: usdLimit(ctx.config, "AIFINPAY_DAILY_USD", ctx.config.dailyAmountUsd, DEFAULT_DAILY_USD),
|
|
283
303
|
gas_cap: limit("AIFINPAY_MAX_GAS", ctx.config.maxGas),
|
|
284
304
|
origins: limit("AIFINPAY_GATEWAY_ORIGINS", ctx.config.gatewayOrigins),
|
|
285
305
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-setup-status.js","sourceRoot":"","sources":["../../src/tools/payment-setup-status.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"payment-setup-status.js","sourceRoot":"","sources":["../../src/tools/payment-setup-status.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aifinpay/mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.12.2",
|
|
4
4
|
"mcpName": "io.github.daochild/aifinpay",
|
|
5
5
|
"description": "AiFinPay MCP: persistent local agent wallets, owner-configured EVM and Solana payment adapters, durable budgets and receipt recovery.",
|
|
6
6
|
"type": "module",
|
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
"bugs": "https://github.com/AiFinPay/sdk/issues",
|
|
78
78
|
"dependencies": {
|
|
79
79
|
"@aifinpay/agent": "^2.9.0",
|
|
80
|
-
"@aifinpay/skill": "^2.
|
|
81
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
80
|
+
"@aifinpay/skill": "^2.11.0",
|
|
81
|
+
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
82
82
|
"bs58": "^6.0.0",
|
|
83
83
|
"tweetnacl": "^1.0.3"
|
|
84
84
|
},
|
package/skills/SKILL.md
CHANGED
|
@@ -6,7 +6,7 @@ description: Pay for x402-gated APIs and sites as an agent (AIFP-1 on an owner-s
|
|
|
6
6
|
wallet, payment history, prepaid quotas and Agent Passport records through
|
|
7
7
|
the AiFinPay MCP server or SDK.
|
|
8
8
|
license: MIT
|
|
9
|
-
version: 2.
|
|
9
|
+
version: 2.11.0
|
|
10
10
|
author: AiFinPay Support
|
|
11
11
|
metadata:
|
|
12
12
|
hermes:
|
|
@@ -61,7 +61,7 @@ your language. There is no "install together" scenario.
|
|
|
61
61
|
|
|
62
62
|
## Version and release status
|
|
63
63
|
|
|
64
|
-
Release target: MCP **2.
|
|
64
|
+
Release target: MCP **2.12.1**, Node SDK **2.9.0**, Python **2.7.1**.
|
|
65
65
|
This skill describes that coordinated package cohort. Check the installed
|
|
66
66
|
versions before using its additional-network instructions; a release target
|
|
67
67
|
does not establish npm/PyPI publication or production network activation.
|
|
@@ -71,7 +71,7 @@ Published packages remain usable within their documented capabilities.
|
|
|
71
71
|
|
|
72
72
|
| Surface | Can it pay? |
|
|
73
73
|
|---|---|
|
|
74
|
-
| MCP `@aifinpay/mcp` 2.
|
|
74
|
+
| MCP `@aifinpay/mcp` 2.12.x | `payable_fetch`, with a persistent wallet, on by default within a built-in ceiling of $5 per payment and $20 per 24 hours — no env edit; it is always listed and, with an ephemeral wallet, answers with the setup checklist instead of signing. `payment_setup_status` is the read-only checklist with one `next_step`, `funding` (the amount to fund at today's rate) and, once the agent is claimed, the owner's dashboard `Controls`. Polygon is the default; other networks require explicit `AIFINPAY_PAY_CHAIN`. The merchant and backend must authorize and serve that network. `scope: "merchant"` buys a site-wide batch. On 2.11.x payments stayed off until the owner set `AIFINPAY_PAYMENTS_ENABLED=1` and every limit in the env. |
|
|
75
75
|
| Node `@aifinpay/agent` 2.8.x | `fetchPaid` with a v14 journal, gas cap and owner budgets. Select another network with `v14.chain`; select a pinned stablecoin with `v14.asset`. Native payments require an independent native/USD rate. |
|
|
76
76
|
| Python `aifinpay-agent` 2.7.x | `agent.fetch_paid(url, allowed_origins=…, max_amount_usd=…, daily_amount_usd=…)`; use explicit `chain` and the chain's native gas cap for another network, or a pinned stablecoin `asset`. `agent.recover_paid(journal_path)` recovers the original transaction. |
|
|
77
77
|
|
|
@@ -166,71 +166,74 @@ or event log alone does not prove a valid paid request.
|
|
|
166
166
|
|
|
167
167
|
# AiFinPay agent workflow
|
|
168
168
|
|
|
169
|
-
Use the tools actually returned by MCP tools/list. MCP 2.
|
|
169
|
+
Use the tools actually returned by MCP tools/list. MCP 2.12.1 exposes
|
|
170
170
|
agent_address, agent_reload, agent_claim_self, agent_history, agent_quota,
|
|
171
171
|
agent_passport_resolve, settlement_routes, settlement_invoice,
|
|
172
172
|
deployment_info, `payment_setup_status` and `payable_fetch`. `payable_fetch`
|
|
173
|
-
is listed from the first start
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
173
|
+
is listed from the first start and pays by default from a persistent wallet,
|
|
174
|
+
within the built-in ceiling; with an ephemeral wallet, or when the owner
|
|
175
|
+
switched payments off with `AIFINPAY_PAYMENTS_ENABLED=0`, it returns the same
|
|
176
|
+
checklist as `payment_setup_status` and signs nothing. With AIFINPAY_MODE=dev
|
|
177
|
+
it also exposes dev_payment_quote. Never tell a user a payment was sent
|
|
178
|
+
because a quote or invoice was created.
|
|
177
179
|
|
|
178
180
|
`settlement_routes` lists the AIFP-1 v1.4 routes first (Polygon and Base,
|
|
179
181
|
`live: true` when served) and the older splitter v1.3 routes under
|
|
180
182
|
`legacy_v13`. Only the v1.4 section says whether `payable_fetch` can pay; a
|
|
181
183
|
v1.3 route marked not live does not mean the network is disabled.
|
|
182
184
|
|
|
183
|
-
## First payment in
|
|
184
|
-
|
|
185
|
-
A fresh install reaches its first payment in
|
|
186
|
-
single tool call or command; signing happens only in step
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
(`
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
missing. Follow `next_step`; do not skip ahead.
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
address.
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
expected, not a refusal — say so, ask the owner for the restart, and stop.
|
|
228
|
-
After it, `payment_setup_status` reports `ready: true`. Funding, origins
|
|
229
|
-
and limits are the owner's decisions; never choose them yourself.
|
|
230
|
-
5. **Pay.** `payable_fetch({"url":"<origin><path>"})` (add
|
|
185
|
+
## First payment in four steps
|
|
186
|
+
|
|
187
|
+
A fresh install reaches its first payment in four steps. Each one is a
|
|
188
|
+
single tool call or command; signing happens only in the last step, and only
|
|
189
|
+
from a persistent wallet. Nobody edits the MCP client config to enable
|
|
190
|
+
payments: they are on from the first start, within the built-in ceiling ($5
|
|
191
|
+
per payment, $20 per 24 hours). Do not improvise around a missing step — no
|
|
192
|
+
key handling of your own, no funding of an ephemeral address.
|
|
193
|
+
|
|
194
|
+
1. **Init.** Call `payment_setup_status`. It returns the wallet (`persistent`
|
|
195
|
+
or ephemeral), `payments_enabled`, the limits in force with their source
|
|
196
|
+
(`default` or `env`), the balance when the RPC answers, `funding` (what a
|
|
197
|
+
persistent wallet needs, priced now), `dashboard` (whether the agent is
|
|
198
|
+
linked and, if so, the owner's Controls), `ready`, and `next_step` — the
|
|
199
|
+
one thing still missing. Follow `next_step`; do not skip ahead. If
|
|
200
|
+
`wallet.persistent` is false, run the exact command in `next_step` (it is
|
|
201
|
+
`npx @aifinpay/mcp init`, prefixed with `AIFINPAY_HOME=…` when the server
|
|
202
|
+
uses its own wallet directory — keep that prefix, or the server will not
|
|
203
|
+
see the keystore). Without a terminal init does not prompt: it generates
|
|
204
|
+
the passphrase, writes the keystore and prints one JSON document with
|
|
205
|
+
`addresses` and an `env` block. Put that `env` into the `aifinpay` server
|
|
206
|
+
entry of the MCP client config (the passphrase is only there — the output
|
|
207
|
+
is a secret, and a second run never reprints it), then call
|
|
208
|
+
`agent_reload`: it reads the keystore, switches this server to the
|
|
209
|
+
persistent wallet and turns the payment journal on in the same connection
|
|
210
|
+
— no restart. If init answers that a keystore already exists and cannot
|
|
211
|
+
be opened, do not delete or replace it: follow its `next_step` and start
|
|
212
|
+
a new wallet directory. Never fund an ephemeral address.
|
|
213
|
+
2. **Fund.** Tell the owner `addresses.evm` and the amount: the batch price
|
|
214
|
+
in the pay chain's native currency at today's rate plus the gas cap. Take
|
|
215
|
+
it from `payment_setup_status` — its `funding` field prices the smallest
|
|
216
|
+
batch now and adds the gas cap into `amount`. The rate moves (on
|
|
217
|
+
2026-10-19 one `$0.10` batch was 1.08 POL), so never quote a remembered
|
|
218
|
+
number; if `funding` has a `rate_error` and no `amount`, ask the owner to
|
|
219
|
+
fund "the batch price in POL at today's rate plus the gas cap" and name
|
|
220
|
+
no number. Funding is the owner's decision; never choose the amount
|
|
221
|
+
yourself.
|
|
222
|
+
3. **Link.** Offer the dashboard (see "After creating a wallet"): the owner
|
|
223
|
+
generates a one-time URL at https://dash.aifinpay.io → My Agents → Claim
|
|
224
|
+
via MCP and pastes it; call `agent_claim_self`. From then on the owner
|
|
225
|
+
sets the working limits in Controls and `payment_setup_status` shows them
|
|
226
|
+
in `dashboard`. The owner may skip this for a first test; the ceiling
|
|
227
|
+
still applies.
|
|
228
|
+
4. **Pay.** `payable_fetch({"url":"<origin><path>"})` (add
|
|
231
229
|
`"scope":"merchant"` for a site-wide batch) buys the batch and returns the
|
|
232
230
|
content with the receipt summary. Later requests reuse the batch.
|
|
233
231
|
|
|
232
|
+
If `payment_setup_status` reports `payments_enabled: false`, the owner set
|
|
233
|
+
`AIFINPAY_PAYMENTS_ENABLED=0` in the server's env: say so and stop — only the
|
|
234
|
+
owner removes it, and the server has to be restarted afterwards (env is read
|
|
235
|
+
at start; `agent_reload` does not read it).
|
|
236
|
+
|
|
234
237
|
## "Buy access for this site"
|
|
235
238
|
|
|
236
239
|
The owner can start with one sentence — "buy access for this site", "get me
|
|
@@ -252,17 +255,18 @@ into ratersapp.com", "купи доступ до цього сайту". Handle
|
|
|
252
255
|
separate, in the selected network's native currency. Use the display rules
|
|
253
256
|
in "Transaction display" below.
|
|
254
257
|
4. **Check readiness.** Call `payment_setup_status`. If it is not `ready`,
|
|
255
|
-
follow its `next_step` through "First payment in
|
|
256
|
-
persistent wallet first, then the owner's funding and
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
does not read them. Adding a site, raising a limit and funding the wallet
|
|
262
|
-
are the owner's decisions; never make them on your own initiative.
|
|
258
|
+
follow its `next_step` through "First payment in four steps" above: a
|
|
259
|
+
persistent wallet first, then the owner's funding — and stop until the
|
|
260
|
+
owner has done their part. No environment block is needed: without an
|
|
261
|
+
owner allowlist, MCP 2.12.1 pays only a merchant that verified this very
|
|
262
|
+
site with AiFinPay. Raising a limit and funding the wallet are the owner's
|
|
263
|
+
decisions; never make them on your own initiative.
|
|
263
264
|
5. **Buy.** `payable_fetch({"url":"<origin><path>","scope":"merchant"})`, where
|
|
264
265
|
the path is what the owner wants to read, or a standard resource from the
|
|
265
|
-
discovery document.
|
|
266
|
+
discovery document. If it answers "Not paid: merchant … has not verified
|
|
267
|
+
its site" or "is verified for X, not Y", nothing was paid: tell the owner
|
|
268
|
+
the site's AiFinPay merchant has not verified this site, and stop. Do not
|
|
269
|
+
look for another way to pay it.
|
|
266
270
|
6. **Report and reuse.** Give the amount, the transaction hash with its
|
|
267
271
|
explorer link, the receipt id and the remaining units. Later requests to any
|
|
268
272
|
path on that origin go through `payable_fetch` and spend the same batch, with
|
|
@@ -278,27 +282,39 @@ default `scope`.
|
|
|
278
282
|
|
|
279
283
|
## Paying with payable_fetch
|
|
280
284
|
|
|
281
|
-
|
|
282
|
-
|
|
285
|
+
Nothing has to be configured to pay. The MCP server pays by default from a
|
|
286
|
+
persistent wallet within a built-in ceiling — **$5 per payment, $20 per
|
|
287
|
+
rolling 24 hours**, gas capped at 0.3 POL on Polygon — and only to a merchant
|
|
288
|
+
that verified the very site being fetched with AiFinPay (on the hosted
|
|
289
|
+
gateway, any verified merchant). The payee is the merchant the AiFinPay quote
|
|
290
|
+
names, never an address a `402` claims. The day-to-day limits —
|
|
291
|
+
per-payment cap, daily cap, pause, allowed merchants — are the dashboard
|
|
292
|
+
**Controls** once the agent is claimed (see "After creating a wallet" below);
|
|
293
|
+
the backend enforces them on every quote and payment, with no env change and
|
|
294
|
+
no server restart. A payment has to pass both.
|
|
295
|
+
|
|
296
|
+
The env values are optional overrides the owner may set in the MCP client
|
|
297
|
+
config (read when the server starts; the client then restarts the server):
|
|
283
298
|
|
|
284
299
|
```json
|
|
285
300
|
{
|
|
286
|
-
"
|
|
301
|
+
"AIFINPAY_MAX_USD": "2",
|
|
302
|
+
"AIFINPAY_DAILY_USD": "10",
|
|
287
303
|
"AIFINPAY_GATEWAY_ORIGINS": "https://merchant.example",
|
|
288
|
-
"AIFINPAY_GATEWAY_PATH_MODE": "direct",
|
|
289
|
-
"AIFINPAY_MAX_USD": "5",
|
|
290
|
-
"AIFINPAY_DAILY_USD": "20",
|
|
291
304
|
"AIFINPAY_MAX_GAS_POL": "0.3"
|
|
292
305
|
}
|
|
293
306
|
```
|
|
294
307
|
|
|
295
|
-
`AIFINPAY_MAX_USD`
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
308
|
+
Every override only narrows. `AIFINPAY_MAX_USD` / `AIFINPAY_DAILY_USD` can
|
|
309
|
+
lower the ceiling, never raise it: a value above $5 / $20 stops the server at
|
|
310
|
+
start with a message that points to the dashboard, and is never silently
|
|
311
|
+
clipped. A higher limit is a dashboard decision, or the Node SDK with its own
|
|
312
|
+
budgets. `AIFINPAY_GATEWAY_ORIGINS` narrows the sites to exact https origins;
|
|
313
|
+
`AIFINPAY_GATEWAY_PATH_MODE` is inferred from the origin (`gateway` for
|
|
314
|
+
gateway.aifinpay.io, `direct` elsewhere) unless set. `AIFINPAY_PAYMENTS_ENABLED=0`
|
|
315
|
+
switches payments off. Never ask the owner to add any of these to pay; only
|
|
316
|
+
mention them when the owner asks for a different ceiling or a site allowlist.
|
|
317
|
+
The smallest batch is **$0.10 plus gas** on **Polygon**;
|
|
302
318
|
`AIFINPAY_MAX_USD` only has to be at or above the batch. The gas cap has to cover the
|
|
303
319
|
worst-case fee: at ~280 gwei that is about 0.10 POL for a POL payment and
|
|
304
320
|
0.21 POL for USDC, and a lower cap refuses before anything is signed. The fee
|
|
@@ -389,10 +405,11 @@ Once the agent is claimed, the dashboard is where the owner manages its
|
|
|
389
405
|
working limits: **Controls** on the agent's page sets the per-payment cap, the
|
|
390
406
|
daily cap, pause and the allowed sites, and the backend enforces that policy
|
|
391
407
|
on every `/v1/quote` and `/v1/pay` for the claimed agent — no env change, no
|
|
392
|
-
server restart
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
408
|
+
server restart; `payment_setup_status` reads them back as `dashboard`. The
|
|
409
|
+
MCP's local ceiling ($5 per payment and $20 per day, or the owner's
|
|
410
|
+
`AIFINPAY_MAX_USD` / `AIFINPAY_DAILY_USD`) stays underneath; it does not
|
|
411
|
+
replace the dashboard, and the dashboard does not replace it — a payment has
|
|
412
|
+
to pass both. Dashboard controls do not reach transactions sent
|
|
396
413
|
directly outside AiFinPay. After `agent_claim_self`, point the owner at
|
|
397
414
|
Controls rather than at the config file when they want to change a limit.
|
|
398
415
|
|