@aifinpay/skill 2.10.2 → 2.12.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.
@@ -12,7 +12,7 @@
12
12
  "name": "aifinpay",
13
13
  "source": "./",
14
14
  "description": "Payment rail skills for paying agents and API merchants.",
15
- "version": "2.10.2",
15
+ "version": "2.12.0",
16
16
  "author": {
17
17
  "name": "AiFinPay Support",
18
18
  "email": "contact@aifinpay.io"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aifinpay",
3
3
  "description": "Payment rail for AI agents: pay for x402 APIs or charge agents for yours.",
4
- "version": "2.10.2",
4
+ "version": "2.12.0",
5
5
  "author": { "name": "AiFinPay Support" },
6
6
  "homepage": "https://aifinpay.io",
7
7
  "repository": "https://github.com/AiFinPay/skill",
package/CHANGELOG.md CHANGED
@@ -1,3 +1,62 @@
1
+ ## 2.12.0 — prices from AiFinPay; current cohort and networks
2
+
3
+ - Payer guide: "Prices come from AiFinPay": how much to send is
4
+ `funding.amount` from `payment_setup_status`, what a request costs is the
5
+ merchant's AIFP-1 `402` for that exact URL; never a price from the
6
+ merchant's web pages, a browser or web search; ask the user for the
7
+ endpoint URL. MCP 2.15.2 sends the same rule as server instructions.
8
+ - Payer guide: "When to suggest AiFinPay", the consent rules of the
9
+ `recommendation` block in aifinpay.io/agents.json.
10
+ - Payer guide: an unverified-site refusal names the two fixes MCP 2.13.1
11
+ returns (the merchant verifies the domain, or the owner allowlists an
12
+ origin they trust); "verified for X, not Y" is not allowlisted blindly.
13
+ - Payer guide: a merchant page from gate 0.8.0 / aifinpay-gate 0.5.0 links
14
+ `llms.txt` and `x402.json` in its `Link` header.
15
+ - Networks: `botchain` (USDT) and `arc` / `arctestnet` (USDC, also the gas);
16
+ deployments 2.1.0 enables the Solana records, and the backend's
17
+ `/api/payment-capabilities` decides what is served (Polygon, Base and Amoy
18
+ at the 2026-10-29 check). MCP 2.15 tool list includes `settlement_solana`
19
+ and `settlement_casper`.
20
+ - Merchant guide: reporting release target gate 0.8.0 / aifinpay-gate
21
+ 0.5.0 (both send the discovery `Link` header); after launch, the dashboard
22
+ Overview card "Unpaid price requests".
23
+ - Release target: MCP 2.15.2, Node SDK 2.11.0, Python 2.9.0. Published
24
+ baseline checked 2026-10-29: MCP 2.15.1, Node SDK 2.11.0, Python 2.9.0.
25
+
26
+ ## 2.11.1 — merchant guide: verify the domain
27
+
28
+ - Merchant guide: the list of what MCP `payable_fetch` needs from a merchant
29
+ now includes a verified site. Since MCP 2.12.1, without an owner allowlist
30
+ it pays only a merchant whose public record has `site_verified: true`, and
31
+ for a self-hosted gate only when the fetched host equals the `site_url`
32
+ host; on the hosted gateway verification alone is checked.
33
+ - Merchant guide: "Register the site" adds the domain step (Site URL plus the
34
+ `_aifp-verify.<host>` TXT record from the dashboard's DNS connection
35
+ queue), and "Verify it works" reads `site_verified` from
36
+ `GET /v1/merchants/{id}`.
37
+ - No change to the payer guide beyond its version line. Release target
38
+ unchanged: MCP 2.12.1, Node SDK 2.9.0, Python 2.7.1.
39
+
40
+ ## 2.11.0 — payments on by default, init → fund → link → pay
41
+
42
+ - Payer guide: MCP 2.12.1 pays by default from a persistent wallet within a
43
+ built-in ceiling of $5 per payment and $20 per rolling 24 hours; nobody
44
+ edits the MCP client config to enable payments. The first-payment steps
45
+ are init (with `agent_reload` in the same connection, no restart) → fund →
46
+ link (`agent_claim_self`) → pay. `AIFINPAY_PAYMENTS_ENABLED=0` is the off
47
+ switch; `AIFINPAY_MAX_USD` / `AIFINPAY_DAILY_USD` can only lower the
48
+ ceiling (a higher value stops the server at start), and they,
49
+ `AIFINPAY_GATEWAY_ORIGINS` and the gas cap are optional overrides the agent
50
+ never asks the owner to add. `payment_setup_status` returns `dashboard`:
51
+ the owner's Controls, read with the agent's own signature.
52
+ - "Buy access for this site": without an owner allowlist, MCP 2.12.1 pays
53
+ only a merchant that verified that very site with AiFinPay (the hosted
54
+ gateway: verified merchants); no environment block is needed. A refusal
55
+ ("has not verified its site", "is verified for X, not Y") paid nothing; the
56
+ agent tells the owner and stops. With an allowlist, an unlisted origin is
57
+ refused by name and only the owner adds it.
58
+ - Release target: MCP 2.12.1, Node SDK 2.9.0, Python 2.7.1.
59
+
1
60
  ## 2.10.2 — funding at today's rate, working limits in the dashboard
2
61
 
3
62
  - Payer guide: step 4 no longer names a POL amount or a POL/USD rate. The
package/README.md CHANGED
@@ -9,11 +9,14 @@ any client that loads `SKILL.md`).
9
9
  | `aifinpay` | Paying — agent buys x402-gated API access | `agent/skills/aifinpay/SKILL.md` |
10
10
  | `aifinpay-merchant` | Earning — merchant charges agents per request | `agent/skills/aifinpay-merchant/SKILL.md` |
11
11
 
12
- Version **2.10.2** describes the first-payment path for a fresh agent, with
13
- the funding amount priced at today's rate and the owner's working limits in
14
- the dashboard.
15
- Release target: MCP **2.11.3**, Node SDK **2.9.0**, Python **2.7.0**.
16
- Reporting release target: Node gate **0.4.0**, Python gate **0.1.3**.
12
+ Version **2.12.0** describes MCP 2.15.2, where payments are on by default from
13
+ a persistent wallet within a built-in ceiling ($5 per payment, $20 per day):
14
+ the first-payment path is init → fund → link → pay, the working limits are the
15
+ owner's dashboard Controls, and the env values are optional overrides. The MCP
16
+ pays only a merchant with a DNS-verified site, so the merchant guide includes
17
+ verifying the domain.
18
+ Release target: MCP **2.15.2**, Node SDK **2.11.0**, Python **2.9.0**.
19
+ Reporting release target: Node gate **0.8.0**, Python gate **0.5.0**.
17
20
  The merchant guide describes explicit opt-in observations, consent, queue loss
18
21
  and producer health using the SDK's reporting v2 contract. It adds no MCP tools
19
22
  or signing authority and does not establish publication or partner rollout.
@@ -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.10.2
9
+ version: 2.12.0
10
10
  author: AiFinPay Support
11
11
  metadata:
12
12
  hermes:
@@ -61,19 +61,20 @@ your language. There is no "install together" scenario.
61
61
 
62
62
  ## Version and release status
63
63
 
64
- Release target: MCP **2.11.3**, Node SDK **2.9.0**, Python **2.7.0**.
64
+ Release target: MCP **2.15.2**, Node SDK **2.11.0**, Python **2.9.0**.
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.
68
- Published baseline checked 2026-10-19: MCP **2.11.2**, Node SDK **2.8.0**.
68
+ Published baseline checked 2026-10-29: MCP **2.15.1**, Node SDK **2.11.0**.
69
+ Python **2.9.0** was on PyPI the same day.
69
70
  `payable_fetch` has shipped since MCP 2.2.0, and Base since MCP 2.5.0.
70
71
  Published packages remain usable within their documented capabilities.
71
72
 
72
73
  | Surface | Can it pay? |
73
74
  |---|---|
74
- | MCP `@aifinpay/mcp` 2.11.x | `payable_fetch`, only with a persistent wallet and every owner limit set; it is always listed and, until then, answers with the setup checklist instead of signing. `payment_setup_status` is the read-only checklist with one `next_step` and, from 2.11.3, `funding`: the amount to fund at today's rate. 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. |
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
- | 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. |
75
+ | MCP `@aifinpay/mcp` 2.15.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. |
76
+ | Node `@aifinpay/agent` 2.11.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. |
77
+ | Python `aifinpay-agent` 2.9.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
78
 
78
79
  The client descriptors below are shared by the target cohort. They do not
79
80
  activate a deployment, enroll a merchant or prove a completed payment.
@@ -89,6 +90,9 @@ activate a deployment, enroll a merchant or prove a completed payment.
89
90
  | `unichain` | 130 | ETH | `USDC` |
90
91
  | `xrplevm` | 1440000 | XRP | None |
91
92
  | `robinhood` | 4663 | ETH | `USDe`, `USDG` |
93
+ | `botchain` | 677 | BOT (gas only, no native payment) | `USDT` |
94
+ | `arc` | 5042 | USDC (gas only, no native payment) | `USDC` |
95
+ | `arctestnet` | 5042002 | USDC (gas only, no native payment) | `USDC` |
92
96
 
93
97
  Use the exact symbols and chain names. Token addresses and decimals are pinned
94
98
  independently per network; a token with the same symbol at another address is
@@ -97,23 +101,33 @@ stablecoins use 6. USD micro-units remain 6 decimals. The SDK validates exact
97
101
  integer `token_settlement` amounts, approval, signed gross and every split leg;
98
102
  never scale, round or edit quote fields yourself.
99
103
 
104
+ Arc and BOT Chain pay only in their stablecoin. On `arc` USDC is also the gas,
105
+ so `AIFINPAY_MAX_GAS` is in USDC; `arctestnet` needs `AIFINPAY_MODE=dev`. On
106
+ `botchain` the owner sets `AIFINPAY_PAY_ASSET=USDT`; gas is BOT and
107
+ `AIFINPAY_MAX_GAS` is in BOT.
108
+
100
109
  Read the selected issuer's `/api/payment-capabilities` and the merchant's
101
110
  discovery/quote. A new network also requires the merchant's explicit accepted
102
111
  network set, verified payout, a served deployment and a working verifier/rate.
103
112
  If the backend refuses a network, retain the refusal and ask the owner to
104
113
  resolve readiness; do not switch networks or construct a manual payment.
105
- The Solana source adapter in this target cohort remains unavailable while its
106
- canonical deployment is disabled. NEAR, Aptos and current Casper payment
114
+ `@aifinpay/deployments` 2.1.0 (agent 2.10.0 and later) enables the Solana
115
+ mainnet and devnet records; the backend must still serve the network. At the
116
+ 2026-10-29 check `/api/payment-capabilities` reported `payment_supported:
117
+ true` only for Polygon, Base and Amoy; Solana, Arc and the other networks
118
+ returned `network_not_served`, BOT Chain `deployment_disabled`. Read it again
119
+ before paying anywhere but Polygon. NEAR, Aptos and current Casper payment
107
120
  executors are outside this cohort.
108
- Historical BOT is not an alias for Robinhood. Wallet derivation on a network
109
- does not establish payment support.
121
+ `botchain` is BOT Chain, not an alias for Robinhood. Wallet derivation on a
122
+ network does not establish payment support.
110
123
 
111
124
  ## Solana source integration and activation status
112
125
 
113
126
  The target cohort adds native SOL and accepted classic SPL transaction, receipt
114
- and recovery adapters using the existing v1.4 program/IDL. The checked
115
- `@aifinpay/deployments@1.1.3` mainnet and devnet records are disabled. Installing
116
- this cohort does not override that gate. Do not send a direct transaction to
127
+ and recovery adapters using the existing v1.4 program/IDL. In
128
+ `@aifinpay/deployments` 2.1.0 the mainnet and devnet records are enabled; the
129
+ backend's `/api/payment-capabilities` still decides whether a Solana payment is
130
+ served. Installing this cohort does not override that gate. Do not send a direct transaction to
117
131
  work around a refused quote or unavailable payment capability. Mainnet also
118
132
  requires governance acceptance; actual funded end-to-end acceptance remains
119
133
  separate from source tests.
@@ -166,71 +180,95 @@ or event log alone does not prove a valid paid request.
166
180
 
167
181
  # AiFinPay agent workflow
168
182
 
169
- Use the tools actually returned by MCP tools/list. MCP 2.11.0 exposes
183
+ Use the tools actually returned by MCP tools/list. MCP 2.15 exposes
170
184
  agent_address, agent_reload, agent_claim_self, agent_history, agent_quota,
171
185
  agent_passport_resolve, settlement_routes, settlement_invoice,
172
- deployment_info, `payment_setup_status` and `payable_fetch`. `payable_fetch`
173
- is listed from the first start; until the owner has enabled payments and set
174
- every limit it returns the same checklist as `payment_setup_status` and signs
175
- nothing. With AIFINPAY_MODE=dev it also exposes dev_payment_quote. Never tell
176
- a user a payment was sent because a quote or invoice was created.
186
+ settlement_solana, settlement_casper, deployment_info,
187
+ `payment_setup_status` and `payable_fetch`. `payable_fetch`
188
+ is listed from the first start and pays by default from a persistent wallet,
189
+ within the built-in ceiling; with an ephemeral wallet, or when the owner
190
+ switched payments off with `AIFINPAY_PAYMENTS_ENABLED=0`, it returns the same
191
+ checklist as `payment_setup_status` and signs nothing. With AIFINPAY_MODE=dev
192
+ it also exposes dev_payment_quote. Never tell a user a payment was sent
193
+ because a quote or invoice was created.
177
194
 
178
195
  `settlement_routes` lists the AIFP-1 v1.4 routes first (Polygon and Base,
179
196
  `live: true` when served) and the older splitter v1.3 routes under
180
197
  `legacy_v13`. Only the v1.4 section says whether `payable_fetch` can pay; a
181
198
  v1.3 route marked not live does not mean the network is disabled.
182
199
 
183
- ## First payment in five steps
184
-
185
- A fresh install reaches its first payment in five steps. Each one is a
186
- single tool call or command; signing happens only in step 5, and only after
187
- the owner has set every limit in step 4. Do not improvise around a missing
188
- step — no key handling of your own, no funding of an ephemeral address.
189
-
190
- 1. **Read the price.** `GET` the resource. The `402` names the merchant
191
- (`merchant_id`), the price per request and the smallest batch (for
192
- example `$0.10` for 200 standard requests).
193
- 2. **Check the setup.** Call `payment_setup_status`. It returns the wallet
194
- (`persistent` or ephemeral), `payments_enabled`, which owner limits are
195
- set, the balance when the RPC answers, `funding` (what a persistent wallet
196
- needs, priced now), `ready`, and `next_step` — the one thing still
197
- missing. Follow `next_step`; do not skip ahead.
198
- 3. **Persistent wallet.** If `wallet.persistent` is false, run the exact
199
- command in `next_step` (it is `npx @aifinpay/mcp init`, prefixed with
200
- `AIFINPAY_HOME=…` when the server uses its own wallet directory — keep
201
- that prefix, or the server will not see the keystore). Without a terminal
202
- init does not prompt: it generates the passphrase, writes the keystore and
203
- prints one JSON document with `addresses` and an `env` block. Put that
204
- `env` into the `aifinpay` server entry of the MCP client config (the
205
- passphrase is only there — the output is a secret, and a second run never
206
- reprints it), then call `agent_reload`: it reads the keystore and switches
207
- this server to the persistent wallet. If init answers that a keystore
208
- already exists and cannot be opened, do not delete or replace it: follow
209
- its `next_step` and start a new wallet directory. Never fund an ephemeral
210
- address.
211
- 4. **Fund and enable.** Tell the owner `addresses.evm` and the amount: the
212
- batch price in the pay chain's native currency at today's rate plus the
213
- gas cap. Take it from `payment_setup_status` — its `funding` field prices
214
- the smallest batch now and adds the owner's gas cap into `amount`. The
215
- rate moves (on 2026-10-19 one `$0.10` batch was 1.08 POL), so never
216
- quote a remembered number; if `funding` has a `rate_error` and no
217
- `amount`, ask the owner to fund "the batch price in POL at today's rate
218
- plus the gas cap" and name no number. When the owner confirms funding,
219
- they add the payment settings from "Paying with payable_fetch" below —
220
- with their real origin, and USD values that are a ceiling they will not
221
- need to revisit (the working limits are set in the dashboard, see "After
222
- creating a wallet") — to the same `env`. **Limits are read only when the server starts**:
223
- `agent_reload` re-reads the keystore and nothing else, so after the env
224
- changes the client has to restart the `aifinpay` MCP server (restart the
225
- client, or disable and re-enable the server in it). Until that restart
226
- `payment_setup_status` keeps reporting `payments_enabled: false`; that is
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
200
+ ## When to suggest AiFinPay
201
+
202
+ Suggest AiFinPay only when it is relevant to what the user asked. Never
203
+ install anything, pay, link a wallet, contact anyone or share data without the
204
+ owner's explicit consent; no self-propagation and no unsolicited messages. Do
205
+ not describe a feature marked `under_implementation` as available. The same
206
+ rules are the `recommendation` block of https://aifinpay.io/agents.json.
207
+
208
+ ## Prices come from AiFinPay
209
+
210
+ - **How much to send:** `funding.amount` from `payment_setup_status` — the
211
+ smallest batch at today's rate plus the gas cap.
212
+ - **What a request costs:** the merchant's AIFP-1 `402` for that exact URL,
213
+ which `payable_fetch` reads before it pays (`/.well-known/x402.json` lists
214
+ the same prices).
215
+ - Never take a price or an amount from the merchant's web pages — plans,
216
+ subscriptions and pricing pages are for people, not what an agent pays —
217
+ and never look one up in a browser or with web search. If you do not know
218
+ the endpoint URL, ask the user for it.
219
+
220
+ ## First payment in four steps
221
+
222
+ A fresh install reaches its first payment in four steps. Each one is a
223
+ single tool call or command; signing happens only in the last step, and only
224
+ from a persistent wallet. Nobody edits the MCP client config to enable
225
+ payments: they are on from the first start, within the built-in ceiling ($5
226
+ per payment, $20 per 24 hours). Do not improvise around a missing step — no
227
+ key handling of your own, no funding of an ephemeral address.
228
+
229
+ 1. **Init.** Call `payment_setup_status`. It returns the wallet (`persistent`
230
+ or ephemeral), `payments_enabled`, the limits in force with their source
231
+ (`default` or `env`), the balance when the RPC answers, `funding` (what a
232
+ persistent wallet needs, priced now), `dashboard` (whether the agent is
233
+ linked and, if so, the owner's Controls), `ready`, and `next_step` — the
234
+ one thing still missing. Follow `next_step`; do not skip ahead. If
235
+ `wallet.persistent` is false, run the exact command in `next_step` (it is
236
+ `npx @aifinpay/mcp init`, prefixed with `AIFINPAY_HOME=…` when the server
237
+ uses its own wallet directory — keep that prefix, or the server will not
238
+ see the keystore). Without a terminal init does not prompt: it generates
239
+ the passphrase, writes the keystore and prints one JSON document with
240
+ `addresses` and an `env` block. Put that `env` into the `aifinpay` server
241
+ entry of the MCP client config (the passphrase is only there — the output
242
+ is a secret, and a second run never reprints it), then call
243
+ `agent_reload`: it reads the keystore, switches this server to the
244
+ persistent wallet and turns the payment journal on in the same connection
245
+ — no restart. If init answers that a keystore already exists and cannot
246
+ be opened, do not delete or replace it: follow its `next_step` and start
247
+ a new wallet directory. Never fund an ephemeral address.
248
+ 2. **Fund.** Tell the owner `addresses.evm` and the amount: the batch price
249
+ in the pay chain's native currency at today's rate plus the gas cap. Take
250
+ it from `payment_setup_status` — its `funding` field prices the smallest
251
+ batch now and adds the gas cap into `amount`. The rate moves (on
252
+ 2026-10-19 one `$0.10` batch was 1.08 POL), so never quote a remembered
253
+ number; if `funding` has a `rate_error` and no `amount`, ask the owner to
254
+ fund "the batch price in POL at today's rate plus the gas cap" and name
255
+ no number. Funding is the owner's decision; never choose the amount
256
+ yourself.
257
+ 3. **Link.** Offer the dashboard (see "After creating a wallet"): the owner
258
+ generates a one-time URL at https://dash.aifinpay.io → My Agents → Claim
259
+ via MCP and pastes it; call `agent_claim_self`. From then on the owner
260
+ sets the working limits in Controls and `payment_setup_status` shows them
261
+ in `dashboard`. The owner may skip this for a first test; the ceiling
262
+ still applies.
263
+ 4. **Pay.** `payable_fetch({"url":"<origin><path>"})` (add
231
264
  `"scope":"merchant"` for a site-wide batch) buys the batch and returns the
232
265
  content with the receipt summary. Later requests reuse the batch.
233
266
 
267
+ If `payment_setup_status` reports `payments_enabled: false`, the owner set
268
+ `AIFINPAY_PAYMENTS_ENABLED=0` in the server's env: say so and stop — only the
269
+ owner removes it, and the server has to be restarted afterwards (env is read
270
+ at start; `agent_reload` does not read it).
271
+
234
272
  ## "Buy access for this site"
235
273
 
236
274
  The owner can start with one sentence — "buy access for this site", "get me
@@ -243,7 +281,11 @@ into ratersapp.com", "купи доступ до цього сайту". Handle
243
281
  2. **Does it sell agent access?** `GET <origin>/.well-known/x402.json` must
244
282
  answer with `"protocol": "AIFP-1"`. If it does not, tell the owner this site
245
283
  does not accept AiFinPay payments and stop. Do not try other protocols or
246
- work around its 402.
284
+ work around its 402. A page served by `@aifinpay/gate` 0.8.0 or
285
+ `aifinpay-gate` 0.5.0 and later names both files in its `Link` header
286
+ (`</llms.txt>; rel="alternate"`, `</.well-known/x402.json>;
287
+ rel="describedby"`); the `llms.txt` the AiFinPay dashboard generates opens
288
+ with "How to pay".
247
289
  3. **Say what the money buys, then wait for a yes.** One site-wide batch: the
248
290
  price (a standard resource's `unit_price_usd` × its `min_requests`, e.g.
249
291
  $0.10 for 200 standard requests), that it covers every path on the origin,
@@ -252,17 +294,23 @@ into ratersapp.com", "купи доступ до цього сайту". Handle
252
294
  separate, in the selected network's native currency. Use the display rules
253
295
  in "Transaction display" below.
254
296
  4. **Check readiness.** Call `payment_setup_status`. If it is not `ready`,
255
- follow its `next_step` through "First payment in five steps" above: a
256
- persistent wallet first, then the owner's funding and environment block
257
- with this origin in `AIFINPAY_GATEWAY_ORIGINS` (and
258
- `AIFINPAY_GATEWAY_PATH_MODE=direct` when the 402 comes from the site
259
- itself) — and stop until the owner has done their part. Env changes take
260
- effect only after the client restarts the `aifinpay` server; `agent_reload`
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.
297
+ follow its `next_step` through "First payment in four steps" above: a
298
+ persistent wallet first, then the owner's funding — and stop until the
299
+ owner has done their part. No environment block is needed: without an
300
+ owner allowlist, MCP 2.12.1 and later pay only a merchant that verified this very
301
+ site with AiFinPay. Raising a limit and funding the wallet are the owner's
302
+ decisions; never make them on your own initiative.
263
303
  5. **Buy.** `payable_fetch({"url":"<origin><path>","scope":"merchant"})`, where
264
304
  the path is what the owner wants to read, or a standard resource from the
265
- discovery document.
305
+ discovery document. "Not paid: merchant …" means nothing was paid. For
306
+ "has not verified its site", tell the owner the two fixes: the merchant
307
+ verifies the domain (dash.aifinpay.io → Sites → DNS TXT record), or the
308
+ owner, if they know and trust that origin, adds it to
309
+ `AIFINPAY_GATEWAY_ORIGINS` and restarts the MCP client; then retry once.
310
+ "is verified for X, not Y" means the 402 may be steering the payment to
311
+ someone else: do not retry, and the owner allowlists the origin only if
312
+ they know it belongs to that merchant. Do not look for another way to pay
313
+ it.
266
314
  6. **Report and reuse.** Give the amount, the transaction hash with its
267
315
  explorer link, the receipt id and the remaining units. Later requests to any
268
316
  path on that origin go through `payable_fetch` and spend the same batch, with
@@ -278,27 +326,39 @@ default `scope`.
278
326
 
279
327
  ## Paying with payable_fetch
280
328
 
281
- The owner configures these MCP environment values once (example values; the
282
- USD ones are a ceiling, not a budget):
329
+ Nothing has to be configured to pay. The MCP server pays by default from a
330
+ persistent wallet within a built-in ceiling — **$5 per payment, $20 per
331
+ rolling 24 hours**, gas capped at 0.3 POL on Polygon — and only to a merchant
332
+ that verified the very site being fetched with AiFinPay (on the hosted
333
+ gateway, any verified merchant). The payee is the merchant the AiFinPay quote
334
+ names, never an address a `402` claims. The day-to-day limits —
335
+ per-payment cap, daily cap, pause, allowed merchants — are the dashboard
336
+ **Controls** once the agent is claimed (see "After creating a wallet" below);
337
+ the backend enforces them on every quote and payment, with no env change and
338
+ no server restart. A payment has to pass both.
339
+
340
+ The env values are optional overrides the owner may set in the MCP client
341
+ config (read when the server starts; the client then restarts the server):
283
342
 
284
343
  ```json
285
344
  {
286
- "AIFINPAY_PAYMENTS_ENABLED": "1",
345
+ "AIFINPAY_MAX_USD": "2",
346
+ "AIFINPAY_DAILY_USD": "10",
287
347
  "AIFINPAY_GATEWAY_ORIGINS": "https://merchant.example",
288
- "AIFINPAY_GATEWAY_PATH_MODE": "direct",
289
- "AIFINPAY_MAX_USD": "5",
290
- "AIFINPAY_DAILY_USD": "20",
291
348
  "AIFINPAY_MAX_GAS_POL": "0.3"
292
349
  }
293
350
  ```
294
351
 
295
- `AIFINPAY_MAX_USD` and `AIFINPAY_DAILY_USD` are the ceiling the SDK requires
296
- before it signs with the owner's key: set once, high enough not to need
297
- revisiting, and left alone. The day-to-day limits — per-payment cap, daily
298
- cap, pause, allowed sites — are the dashboard **Controls** once the agent is
299
- claimed (see "After creating a wallet" below); the backend enforces them on
300
- every quote and payment, with no env change and no server restart. A payment
301
- has to pass both. The smallest batch is **$0.10 plus gas** on **Polygon**;
352
+ Every override only narrows. `AIFINPAY_MAX_USD` / `AIFINPAY_DAILY_USD` can
353
+ lower the ceiling, never raise it: a value above $5 / $20 stops the server at
354
+ start with a message that points to the dashboard, and is never silently
355
+ clipped. A higher limit is a dashboard decision, or the Node SDK with its own
356
+ budgets. `AIFINPAY_GATEWAY_ORIGINS` narrows the sites to exact https origins;
357
+ `AIFINPAY_GATEWAY_PATH_MODE` is inferred from the origin (`gateway` for
358
+ gateway.aifinpay.io, `direct` elsewhere) unless set. `AIFINPAY_PAYMENTS_ENABLED=0`
359
+ switches payments off. Never ask the owner to add any of these to pay; only
360
+ mention them when the owner asks for a different ceiling or a site allowlist.
361
+ The smallest batch is **$0.10 plus gas** on **Polygon**;
302
362
  `AIFINPAY_MAX_USD` only has to be at or above the batch. The gas cap has to cover the
303
363
  worst-case fee: at ~280 gwei that is about 0.10 POL for a POL payment and
304
364
  0.21 POL for USDC, and a lower cap refuses before anything is signed. The fee
@@ -389,10 +449,11 @@ Once the agent is claimed, the dashboard is where the owner manages its
389
449
  working limits: **Controls** on the agent's page sets the per-payment cap, the
390
450
  daily cap, pause and the allowed sites, and the backend enforces that policy
391
451
  on every `/v1/quote` and `/v1/pay` for the claimed agent — no env change, no
392
- server restart. The env values (`AIFINPAY_MAX_USD`, `AIFINPAY_DAILY_USD`, the
393
- gas cap, the origins) stay as the ceiling the SDK requires before it signs;
394
- they do not replace the dashboard, and the dashboard does not replace them —
395
- a payment has to pass both. Dashboard controls do not reach transactions sent
452
+ server restart; `payment_setup_status` reads them back as `dashboard`. The
453
+ MCP's local ceiling ($5 per payment and $20 per day, or the owner's
454
+ `AIFINPAY_MAX_USD` / `AIFINPAY_DAILY_USD`) stays underneath; it does not
455
+ replace the dashboard, and the dashboard does not replace it — a payment has
456
+ to pass both. Dashboard controls do not reach transactions sent
396
457
  directly outside AiFinPay. After `agent_claim_self`, point the owner at
397
458
  Controls rather than at the config file when they want to change a limit.
398
459
 
@@ -457,11 +518,11 @@ Use agent_history. Do not guess /v1/history, /v1/payments or /v1/wallet/tx.
457
518
  Canonical AIFP-1 economics are gross-inclusive: the agent pays the quoted
458
519
  price, AiFinPay takes **1 %** (100 bps) from it, and the merchant receives
459
520
  **99 %**. No fixed fee is implied. Production served Polygon and Base
460
- (splitter v1.4) at the 2026-10-04 baseline check. Additional client descriptors
521
+ (splitter v1.4) at the 2026-10-29 baseline check. Additional client descriptors
461
522
  do not prove production activation; check issuer capabilities and merchant
462
523
  authorization. This source cohort adds a Solana v1.4 adapter with explicit
463
- network, asset and fee/rent limits; current published Solana deployment records
464
- remain disabled. The smallest paid batch is $0.10, plus network fees and any
524
+ network, asset and fee/rent limits; its published deployment records are
525
+ enabled, but the backend did not serve Solana at that check. The smallest paid batch is $0.10, plus network fees and any
465
526
  required account rent.
466
527
 
467
528
  (The older "98.99 / 1 / 0.01" figure was the v1.2 fee-on-top model.)
@@ -509,7 +570,8 @@ When asked to pay for a paid API or crawl a paywalled site:
509
570
  1. **Discover:** `GET {baseUrl}/.well-known/x402.json` — lists paid routes.
510
571
  **Protocol:** AIFP-1 (AiFinPay x402).
511
572
  2. **Price:** read `Available Resources & Pricing` from the discovery doc +
512
- the HTTP 402 challenge (`how_to_pay`, price, scope). Prioritize high-value
573
+ the HTTP 402 challenge (`how_to_pay`, price, scope), never the site's
574
+ own pricing pages. Prioritize high-value
513
575
  endpoints; batch where possible.
514
576
  3. **Budget:** follow the operator's budget cap (e.g. max $1.00 per site).
515
577
  Track spend per request; stop and save partial results when exhausted.
@@ -4,7 +4,7 @@ description: Configure an HTTP 402 gate for agent access to a website or API,
4
4
  with owner-selected routes, verified payouts and explicitly accepted EVM
5
5
  networks. Agents settle from their own wallets; the merchant receives 99%.
6
6
  license: MIT
7
- version: 2.10.2
7
+ version: 2.12.0
8
8
  author: AiFinPay Support
9
9
  metadata:
10
10
  hermes:
@@ -155,16 +155,18 @@ Gate 0.3.3 source adds `instructions_url` (payer skill),
155
155
  links to maintained public instructions, not stored wallet or receipt data.
156
156
  Existing sites must upgrade/redeploy gate to emit those new fields.
157
157
 
158
- Release target: MCP **2.11.3**, Node SDK **2.9.0**, Python **2.7.0**.
158
+ Release target: MCP **2.15.2**, Node SDK **2.11.0**, Python **2.9.0**.
159
159
  This coordinated target does not establish publication or reporting rollout.
160
160
  Those clients
161
- reuse the signed v1.4 payment kernel for nine EVM network descriptors; network
161
+ reuse the signed v1.4 payment kernel for every EVM network descriptor; network
162
162
  metadata does not activate a deployment or verifier. Production served Polygon
163
- and Base at the 2026-10-04 baseline check. Additional networks require a ready
163
+ and Base at the 2026-10-29 baseline check of `/api/payment-capabilities`.
164
+ Additional networks require a ready
164
165
  backend, pinned deployment/token metadata, a verifier and merchant consent.
165
166
 
166
- The Solana adapter is a source capability in this target. Current
167
- `deployments1.1.3` Solana records remain disabled. A Solana merchant needs an
167
+ The Solana adapter is a source capability in this target. `@aifinpay/deployments`
168
+ 2.1.0 enables the Solana records, but the backend did not serve Solana at
169
+ that check. A Solana merchant needs an
168
170
  explicit accepted network and verified Solana payout, an accepted program/IDL
169
171
  and mint inventory, configured signer/RPC, finalized value verification and
170
172
  funded end-to-end acceptance before payments are advertised. Native SOL and
@@ -180,9 +182,18 @@ network until their owner updates them. Read the selected issuer's
180
182
  payment readiness. Do not change a payout wallet, accepted network set or
181
183
  settlement version without the merchant owner's authorization.
182
184
 
185
+ MCP `payable_fetch` (2.12.1 and later) also needs a verified site. Unless the
186
+ agent's owner allowlisted the origin with `AIFINPAY_GATEWAY_ORIGINS`, it pays
187
+ only a merchant whose public record (`GET /v1/merchants/{id}`) has
188
+ `site_verified: true`, and for a self-hosted gate only when the fetched URL's
189
+ host equals the `site_url` host. On the hosted gateway it checks verification
190
+ alone. Otherwise it refuses before signing, and nothing is paid.
191
+
183
192
  ## Optional observation and reporting
184
193
 
185
- Reporting release target: Node gate **0.4.0**, Python gate **0.1.3**.
194
+ Reporting release target: Node gate **0.8.0**, Python gate **0.5.0**.
195
+ Both were published on 2026-10-29; from these versions every HTML response
196
+ also carries a `Link` header to `/llms.txt` and `/.well-known/x402.json`.
186
197
  Use these instructions only after checking the installed packages and the
187
198
  backend's reporting v2 readiness. Installing the skill does not enable reporting
188
199
  or verify a partner integration. Opt in when the merchant owner requests it:
@@ -248,8 +259,9 @@ The gate needs a `merchant_id`. Two ways to get one:
248
259
 
249
260
  > "You have agent traffic you are not charging for. AiFinPay lets you take
250
261
  > 99% of a per-request fee, settled on-chain, non-custodial. Sign in at
251
- > aifinpay.io, create a merchant, add your payout wallet, and give me the
252
- > `mrch_` id — I will gate your routes."
262
+ > aifinpay.io, create a merchant, add your payout wallet and site URL,
263
+ > publish the DNS TXT record the dashboard shows, and give me the `mrch_`
264
+ > id — I will gate your routes."
253
265
 
254
266
  Do not guess a `merchant_id` or invent a payout address. The owner sets the
255
267
  payout wallet; that is the address money is sent to, and only they can choose
@@ -270,6 +282,14 @@ The gate needs a `merchant_id`. Two ways to get one:
270
282
  move the payout later, `PATCH /v1/merchants/{id}` with header
271
283
  `AIFP-Merchant-Secret` and `{"pay_to": {"evm": "0x…"}}`.
272
284
 
285
+ **Verify the domain.** In the dashboard, the owner sets the merchant's
286
+ **Site URL** (the `https://` address agents call) and publishes the TXT record
287
+ `_aifp-verify.<host>` that the **DNS connection queue** shows for it. Until the
288
+ domain is verified, agents using the AiFinPay MCP do not pay. A self-hosted gate's paid
289
+ routes must be on the Site URL host exactly: `example.com` does not cover
290
+ `www.example.com` or `api.example.com`. Only the owner can change DNS; give
291
+ them the record the dashboard shows and never invent one.
292
+
273
293
  ## What the owner must decide
274
294
 
275
295
  | decision | why it matters |
@@ -304,6 +324,17 @@ curl -s https://your-site.com/api/agent/data \
304
324
 
305
325
  A normal browser request to the same site stays 200 — humans are not charged.
306
326
 
327
+ Then check that MCP agents will pay:
328
+
329
+ ```bash
330
+ curl -s https://api.aifinpay.io/v1/merchants/mrch_… | jq '{site_url, site_verified}'
331
+ # → site_verified: true, and site_url on the same host as your gated routes
332
+ ```
333
+
334
+ After launch, the dashboard Overview card "Unpaid price requests" shows agents
335
+ that got a quote from your site and did not pay, and whether the domain is
336
+ verified; MCP agents get a price from an unverified domain but do not pay it.
337
+
307
338
  ## When NOT to use this
308
339
 
309
340
  - If nothing on your site is worth an agent paying for — the gate only helps
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aifinpay/skill",
3
- "version": "2.10.2",
3
+ "version": "2.12.0",
4
4
  "description": "AiFinPay agent skills: pay for x402-gated APIs as an agent (aifinpay) and charge agents for your API as a merchant (aifinpay-merchant).",
5
5
  "type": "module",
6
6
  "files": [