xytara 3.9.5 → 3.9.7

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.
Files changed (2) hide show
  1. package/RELEASE_NOTES.md +10 -5
  2. package/package.json +1 -1
package/RELEASE_NOTES.md CHANGED
@@ -1,7 +1,12 @@
1
- `xytara` 3.9.5 lets a provider be named by an ENS name it owns, checked against the name's own records on Ethereum (x402 `payee-name`, wg-identity#36).
1
+ `xytara` 3.9.7 adds sub-cent pricing and closes several ways to pay less than a call's price.
2
2
 
3
- - **Provider ENS names** — registration accepts an optional `ens_name` (lowercase ASCII `.eth` names). The runtime checks it against Ethereum mainnet at registration and daily: the name's `org.x402.origins` record must list the provider's endpoint origin, its address record for the payout network (or a CAIP-10 entry in `org.x402.payto`) must list the payout address, and the name must be unexpired on chain time (ENSv2 and unmigrated ENSv1 names). Verdicts and reason codes follow the payee-name spec; a failed chain read is always `inconclusive`, never `false`. Records served off-chain (CCIP-Read) are not followed yet and read as inconclusive.
4
- - **Receipts** — while the verdict is `payee-bound` for the record's current endpoint origin and payout address, signed delivery receipts carry `delivery.provider_name` (name, reason, `checked_at`, `expires_at`) next to `provider_id`.
5
- - **Registry** — the name is owner-protected and not routing-material (setting or changing it never re-pends an active provider); a stored verdict is dropped when the name, endpoint origin or payout address changes. The public record shows the verdict but never the payout address. `POST /v1/provider-network/providers/<id>/name-check` re-runs the check (owner, at most once a minute, or the operator).
6
- - **Verifiers** — the verdict logic, the RPC reader against a mock JSON-RPC, the registry rules, and an x402-paid call whose signed receipt names a bound provider.
3
+ - **Sub-cent prices** — provider offers can be priced from $0.001 to $100.00 in $0.001 steps. The price is held exactly in USDC base units (`price_atomic`, `amount_atomic`; 1 cent = 10000) through the quote, the x402 challenge, credits and the provider ledger; nothing is rounded through cents.
4
+ - **x402 per-payment minimum** — one x402 payment for a provider tool is at least `XYTARA_X402_MIN_PER_CALL_ATOMIC` (default 5000 = $0.005), which covers the facilitator's per-settlement fee. The 402, the catalog and the MCP tool text say so, and prepaid credits pay the exact price (at least 1 credit). The provider's share is always computed on its own price.
5
+ - **Exact provider ledger** — shares accrue exactly in base units (a $0.001 call at 80% earns $0.0008); existing balances carry over exactly; payouts still move whole cents and keep the remainder. A sub-cent balance blocks removal like any other.
6
+ - **Cents rails** — native signed, BOLT, L402, MPP and Stripe checkout refuse a sub-cent amount instead of rounding it, and L402 / BOLT refuse calls an open-network provider runs before issuing any invoice (their fixed sat price is not bound to the quote). Gateway-signed L402 / BOLT payments accrue the quote they are bound to.
7
+ - **Paying less than the price, closed** — a stored `quote_id` only pays for the request it priced (otherwise 409 `quote_request_mismatch`), quotes live at most 15 minutes, credits must be whole units and a caller cannot declare fewer than the price of real work (400 `credit_units_below_price`), a provider tool cannot ride a multi-task call (400 `multi_task_provider_call_unsupported`), and testnet USDC never buys work an open-network provider runs or accrues a share.
8
+ - **Routing** — a third-party provider that declares `tool_names` serves exactly those tools; a lane-wide third party does not claim named tools on a lane the operator's own provider serves; built-in integration ids never route to a third party; first-party provider ids are reserved for the operator; an offer-priced call runs on the provider that priced it first; when another provider runs it after failover, that provider earns on no more than its own price.
9
+ - **Records** — payment records carry `amount_atomic` and `settled_amount_atomic`; ledger cents totals are derived from base units (no drift).
10
+ - **Provider names** — an unregistered ENS name reports the payee-name spec's `not registered` detail.
11
+ - **MCP executor** — provider tools show their exact price, the x402 per-payment amount when the minimum applies (`pricing.per_call_usd` is what the challenge settles; `offer_price_usd` is the provider's price), and the discovery range only uses amounts the runtime accepts on that network.
7
12
  - Client package (thin): unchanged.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xytara",
3
- "version": "3.9.5",
3
+ "version": "3.9.7",
4
4
  "description": "Client for the hosted naxytra runtime: discover a capability, pay per call with x402 (gasless USDC on Base) or credits, get the deliverable and a signed delivery receipt you can verify offline. The runtime is a hosted service; this package is the client.",
5
5
  "main": "client.js",
6
6
  "exports": {