@hpp-io/x402-mcp-bridge 0.0.3 → 0.1.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/dist/config.js CHANGED
@@ -8,6 +8,11 @@ import { z } from "zod";
8
8
  const HEX_ADDR = /^0x[0-9a-fA-F]{40}$/;
9
9
  const HEX_KEY = /^0x[0-9a-fA-F]{64}$/;
10
10
  const KEYCHAIN_URI = /^keychain:\/\/[^\/]+\/[a-zA-Z0-9._-]+$/;
11
+ // Per-network defaults so USDCE_ADDRESS / HPP_RPC_URL can be omitted (zero-config).
12
+ const NETWORK_DEFAULTS = {
13
+ "eip155:181228": { rpc: "https://sepolia.hpp.io", usdc: "0x401eCb1D350407f13ba348573E5630B83638E30D" },
14
+ "eip155:190415": { rpc: "https://mainnet.hpp.io", usdc: "0x401eCb1D350407f13ba348573E5630B83638E30D" },
15
+ };
11
16
  const Schema = z.object({
12
17
  // Delegate EOA — signs EIP-3009 payments + executeAllowanceTransfer.
13
18
  // Accepted forms:
@@ -22,17 +27,19 @@ const Schema = z.object({
22
27
  SAFE_ADDRESS: z.string().regex(HEX_ADDR).optional(),
23
28
  // Deployed AllowanceModule (Safe mode only; pairs with SAFE_ADDRESS).
24
29
  ALLOWANCE_MODULE_ADDRESS: z.string().regex(HEX_ADDR).optional(),
25
- // Asset paid in (USDC.e on HPP).
26
- USDCE_ADDRESS: z.string().regex(HEX_ADDR),
30
+ // Asset paid in (USDC.e on HPP). Optional — defaults per network (below).
31
+ USDCE_ADDRESS: z.string().regex(HEX_ADDR).optional(),
27
32
  // Remote MCP server we proxy to (the seller). Optional: when unset the
28
33
  // bridge runs in local-tools-only mode (e.g. credit top-up / A2A) and skips
29
34
  // the upstream connection entirely.
30
35
  RESOURCE_SERVER_URL: z.string().url().optional(),
31
- // Chain RPC.
32
- HPP_RPC_URL: z.string().url(),
36
+ // Chain RPC. Optional — defaults per network (below).
37
+ HPP_RPC_URL: z.string().url().optional(),
33
38
  // CAIP-2 network identifier used by @x402/evm.
34
39
  // e.g. "eip155:181228" (HPP Sepolia) / "eip155:190415" (HPP Mainnet).
35
- HPP_NETWORK: z.string().regex(/^eip155:\d+$/),
40
+ // Optional — defaults to HPP Sepolia so a bare `npx @hpp-io/x402-mcp-bridge`
41
+ // boots with zero config (see NETWORK_DEFAULTS + runBridge auto-wallet).
42
+ HPP_NETWORK: z.string().regex(/^eip155:\d+$/).optional().default("eip155:181228"),
36
43
  // Optional knobs ------------------------------------------------------
37
44
  // How much to pull on each topup, in atomic USDC.e units. If unset,
38
45
  // the bridge tops up "just enough" for the upcoming payment + small
@@ -61,6 +68,15 @@ const Schema = z.object({
61
68
  .url()
62
69
  .optional()
63
70
  .default("https://x402-discovery.hpp.io"),
71
+ // Seller tools (A2 Phase 1). "on" registers seller_* MCP tools so this agent
72
+ // can charge others over x402 (facilitator verify/settle wrappers). Off by
73
+ // default — buyers don't need them.
74
+ HPP_X402_SELLER: z.enum(["on", "off"]).optional().default("off"),
75
+ HPP_X402_FACILITATOR_URL: z
76
+ .string()
77
+ .url()
78
+ .optional()
79
+ .default("https://facilitator-sepolia.hpp.io"),
64
80
  })
65
81
  // Wallet mode is inferred from Safe config presence: both set = Safe mode
66
82
  // (autoTopup from the Safe within an on-chain cap); both omitted = light mode
@@ -88,12 +104,18 @@ export function loadConfig(env = process.env) {
88
104
  const v = parsed.data;
89
105
  const chainId = Number(v.HPP_NETWORK.split(":")[1]);
90
106
  const walletMode = v.SAFE_ADDRESS && v.ALLOWANCE_MODULE_ADDRESS ? "safe" : "light";
107
+ // Zero-config: fill USDC.e + RPC from per-network defaults when omitted.
108
+ const defaults = NETWORK_DEFAULTS[v.HPP_NETWORK] ?? NETWORK_DEFAULTS["eip155:181228"];
91
109
  return {
92
110
  ...v,
111
+ USDCE_ADDRESS: v.USDCE_ADDRESS ?? defaults.usdc,
112
+ HPP_RPC_URL: v.HPP_RPC_URL ?? defaults.rpc,
93
113
  chainId,
94
114
  walletMode,
95
115
  discoveryEnabled: v.HPP_X402_DISCOVERY === "on",
96
116
  discoveryUrl: v.HPP_X402_DISCOVERY_URL,
117
+ sellerEnabled: v.HPP_X402_SELLER === "on",
118
+ facilitatorUrl: v.HPP_X402_FACILITATOR_URL,
97
119
  };
98
120
  }
99
121
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AACvC,MAAM,OAAO,GAAG,qBAAqB,CAAC;AACtC,MAAM,YAAY,GAAG,wCAAwC,CAAC;AAE9D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,qEAAqE;IACrE,kBAAkB;IAClB,oDAAoD;IACpD,+EAA+E;IAC/E,oBAAoB,EAAE,CAAC;SACpB,MAAM,EAAE;SACR,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAC9C,6DAA6D,CAC9D;IAEH,4EAA4E;IAC5E,2EAA2E;IAC3E,mEAAmE;IACnE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;IAEnD,sEAAsE;IACtE,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;IAE/D,iCAAiC;IACjC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;IAEzC,uEAAuE;IACvE,4EAA4E;IAC5E,oCAAoC;IACpC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAEhD,aAAa;IACb,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAE7B,+CAA+C;IAC/C,sEAAsE;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;IAE7C,wEAAwE;IACxE,oEAAoE;IACpE,oEAAoE;IACpE,2DAA2D;IAC3D,mBAAmB,EAAE,CAAC;SACnB,MAAM,EAAE;SACR,KAAK,CAAC,OAAO,CAAC;SACd,QAAQ,EAAE;IAEb,oEAAoE;IACpE,kEAAkE;IAClE,4BAA4B;IAC5B,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,KAAK,CAAC,OAAO,CAAC;SACd,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;IAEhB,4EAA4E;IAC5E,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAEtE,2EAA2E;IAC3E,6EAA6E;IAC7E,wEAAwE;IACxE,mDAAmD;IACnD,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClE,sBAAsB,EAAE,CAAC;SACtB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,+BAA+B,CAAC;CAC5C,CAAC;IACA,0EAA0E;IAC1E,8EAA8E;IAC9E,2EAA2E;IAC3E,gBAAgB;KACf,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IACtB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACjC,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,cAAc,CAAC;YAC7D,OAAO,EACL,yGAAyG;SAC5G,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAaL,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAC/D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CACb,4CAA4C,GAAG,MAAM,GAAG,IAAI,CAC7D,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;IACtB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,UAAU,GACd,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAClE,OAAO;QACL,GAAG,CAAC;QACJ,OAAO;QACP,UAAU;QACV,gBAAgB,EAAE,CAAC,CAAC,kBAAkB,KAAK,IAAI;QAC/C,YAAY,EAAE,CAAC,CAAC,sBAAsB;KACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -23,5 +23,6 @@ export declare class DirectBalance implements Funds {
23
23
  * (sufficient balance) or throws with a funding instruction. It never returns
24
24
  * a tx hash.
25
25
  */
26
+ balance(): Promise<bigint>;
26
27
  ensure(requiredAtomic: bigint): Promise<Hex | null>;
27
28
  }
@@ -41,13 +41,16 @@ export class DirectBalance {
41
41
  * (sufficient balance) or throws with a funding instruction. It never returns
42
42
  * a tx hash.
43
43
  */
44
- async ensure(requiredAtomic) {
45
- const balance = (await this.publicClient.readContract({
44
+ async balance() {
45
+ return (await this.publicClient.readContract({
46
46
  address: this.token,
47
47
  abi: ERC20_BALANCE_ABI,
48
48
  functionName: "balanceOf",
49
49
  args: [this.delegate],
50
50
  }));
51
+ }
52
+ async ensure(requiredAtomic) {
53
+ const balance = await this.balance();
51
54
  if (balance >= requiredAtomic)
52
55
  return null;
53
56
  throw new Error(`insufficient USDC.e: need ${requiredAtomic}, have ${balance}. ` +
@@ -1 +1 @@
1
- {"version":3,"file":"direct-balance.js","sourceRoot":"","sources":["../../src/funds/direct-balance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,kBAAkB,EAClB,IAAI,EACJ,WAAW,GAIZ,MAAM,MAAM,CAAC;AAId,MAAM,iBAAiB,GAAG;IACxB;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACxC,eAAe,EAAE,MAAM;KACxB;CACO,CAAC;AAEX,MAAM,OAAO,aAAa;IAIL;IACA;IAJF,YAAY,CAAe;IAE5C,YACmB,QAAiB,EACjB,KAAc,EAC/B,OAAe,EACf,MAAc;QAHG,aAAQ,GAAR,QAAQ,CAAS;QACjB,UAAK,GAAL,KAAK,CAAS;QAI/B,MAAM,KAAK,GAAG,WAAW,CAAC;YACxB,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,SAAS,OAAO,EAAE;YACxB,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC9D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;SACzC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YACpD,OAAO,EAAE,IAAI,CAAC,KAAK;YACnB,GAAG,EAAE,iBAAiB;YACtB,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;SACtB,CAAC,CAAW,CAAC;QAEd,IAAI,OAAO,IAAI,cAAc;YAAE,OAAO,IAAI,CAAC;QAE3C,MAAM,IAAI,KAAK,CACb,6BAA6B,cAAc,UAAU,OAAO,IAAI;YAC9D,kBAAkB,IAAI,CAAC,QAAQ,6BAA6B;YAC5D,2BAA2B,CAC9B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"direct-balance.js","sourceRoot":"","sources":["../../src/funds/direct-balance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,kBAAkB,EAClB,IAAI,EACJ,WAAW,GAIZ,MAAM,MAAM,CAAC;AAId,MAAM,iBAAiB,GAAG;IACxB;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACxC,eAAe,EAAE,MAAM;KACxB;CACO,CAAC;AAEX,MAAM,OAAO,aAAa;IAIL;IACA;IAJF,YAAY,CAAe;IAE5C,YACmB,QAAiB,EACjB,KAAc,EAC/B,OAAe,EACf,MAAc;QAHG,aAAQ,GAAR,QAAQ,CAAS;QACjB,UAAK,GAAL,KAAK,CAAS;QAI/B,MAAM,KAAK,GAAG,WAAW,CAAC;YACxB,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,SAAS,OAAO,EAAE;YACxB,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC9D,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;SACzC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAC3C,OAAO,EAAE,IAAI,CAAC,KAAK;YACnB,GAAG,EAAE,iBAAiB;YACtB,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;SACtB,CAAC,CAAW,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,cAAsB;QACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAErC,IAAI,OAAO,IAAI,cAAc;YAAE,OAAO,IAAI,CAAC;QAE3C,MAAM,IAAI,KAAK,CACb,6BAA6B,cAAc,UAAU,OAAO,IAAI;YAC9D,kBAAkB,IAAI,CAAC,QAAQ,6BAA6B;YAC5D,2BAA2B,CAC9B,CAAC;IACJ,CAAC;CACF"}
package/dist/funds.d.ts CHANGED
@@ -23,4 +23,10 @@ export interface Funds {
23
23
  * host-surfaceable error when funds are insufficient and cannot be topped up.
24
24
  */
25
25
  ensure(requiredAtomic: bigint): Promise<Hex | null>;
26
+ /**
27
+ * The delegate's current balance of the payment asset (atomic units) — the
28
+ * immediately-spendable balance. In Safe mode the Safe can top up more on
29
+ * demand (see {@link ensure}).
30
+ */
31
+ balance(): Promise<bigint>;
26
32
  }
package/dist/httpX402.js CHANGED
@@ -24,6 +24,7 @@ import { x402Client, x402HTTPClient } from "@x402/core/client";
24
24
  import { ExactEvmScheme } from "@x402/evm/exact/client";
25
25
  import { pickExactAccept } from "./a2a.js";
26
26
  import { loadPolicy, checkAccess, checkAmount, resolveCredentials, checkCooldown, recordPaid, acquireHostLock, } from "./policy.js";
27
+ import { checkWalletSpend, recordWalletSpend } from "./spendGuard.js";
27
28
  import { log } from "./log.js";
28
29
  export const X402_HTTP_TOOL = {
29
30
  name: "x402_http_call",
@@ -166,6 +167,11 @@ export async function x402HttpCall(deps, args) {
166
167
  const deny = checkAmount(access.limits, amount);
167
168
  if (deny)
168
169
  return errorResult(`blocked: ${deny}`);
170
+ // wallet-wide guard (per-call + daily ledger) — uniform across all payment
171
+ // tools; blocks a runaway agent before signing.
172
+ const walletDeny = checkWalletSpend(amount);
173
+ if (walletDeny)
174
+ return errorResult(`blocked: ${walletDeny}`);
169
175
  // Ensure the delegate holds enough USDC.e (Safe autoTopup within the
170
176
  // on-chain cap, or a light-mode balance check — same gate either way).
171
177
  if (deps.funds) {
@@ -198,6 +204,7 @@ export async function x402HttpCall(deps, args) {
198
204
  // retries; a failed settle (isError) stays retryable.
199
205
  if (!result.isError) {
200
206
  recordPaid(host, result.content[0].text ?? "");
207
+ recordWalletSpend(amount);
201
208
  }
202
209
  log.info("x402_http_call.done", {
203
210
  host,
@@ -1 +1 @@
1
- {"version":3,"file":"httpX402.js","sourceRoot":"","sources":["../src/httpX402.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"httpX402.js","sourceRoot":"","sources":["../src/httpX402.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -14,10 +14,41 @@ import { DirectBalance } from "./funds/direct-balance.js";
14
14
  import { connectUpstream } from "./client.js";
15
15
  import { startBridgeServer } from "./server.js";
16
16
  import { DiscoveryClient } from "./discovery.js";
17
- import { isKeychainURI, resolveKeychain } from "./keychain.js";
17
+ import { isKeychainURI, resolveKeychain, setKeychain, buildKeychainURI, } from "./keychain.js";
18
+ import { generatePrivateKey, privateKeyToAccount } from "viem/accounts";
18
19
  const PKG_NAME = "@hpp-io/x402-mcp-bridge";
19
- const PKG_VERSION = "0.0.3"; // mirrors package.json — bump together
20
+ const PKG_VERSION = "0.1.0"; // mirrors package.json — bump together
21
+ const DEFAULT_ACCOUNT = "delegate-default";
22
+ /**
23
+ * Zero-config first run: if no DELEGATE_PRIVATE_KEY is supplied, auto-create a
24
+ * delegate wallet in the OS keychain (idempotent — reused on later runs) and
25
+ * point the env at its keychain URI. Lets a bare
26
+ * `npx -y @hpp-io/x402-mcp-bridge` boot with no config; the user just funds the
27
+ * printed address. Explicitly-set keys are untouched.
28
+ */
29
+ function ensureDelegateKey(env) {
30
+ if (env.DELEGATE_PRIVATE_KEY)
31
+ return;
32
+ const uri = buildKeychainURI(DEFAULT_ACCOUNT);
33
+ let key;
34
+ let created = false;
35
+ try {
36
+ key = resolveKeychain(uri);
37
+ }
38
+ catch {
39
+ key = generatePrivateKey();
40
+ setKeychain(DEFAULT_ACCOUNT, key);
41
+ created = true;
42
+ }
43
+ env.DELEGATE_PRIVATE_KEY = uri;
44
+ const address = privateKeyToAccount(key).address;
45
+ // Written straight to stderr (not the level-gated logger, which isn't
46
+ // configured yet at this point) so the funding address is always visible.
47
+ process.stderr.write(`\nhpp-x402: wallet ${created ? "created" : "ready"} → ${address}\n` +
48
+ ` ▶ Fund it: send USDC.e to this address (no native gas needed).\n\n`);
49
+ }
20
50
  export async function runBridge(env = process.env) {
51
+ ensureDelegateKey(env);
21
52
  const cfg = loadConfig(env);
22
53
  setLogLevel(cfg.LOG_LEVEL);
23
54
  log.info("bridge.start", {
@@ -85,6 +116,12 @@ export async function runBridge(env = process.env) {
85
116
  : undefined;
86
117
  if (discovery)
87
118
  log.info("discovery.enabled", { url: cfg.discoveryUrl });
119
+ // Seller tools — register seller_* when enabled.
120
+ const seller = cfg.sellerEnabled
121
+ ? { network: cfg.HPP_NETWORK, facilitatorUrl: cfg.facilitatorUrl }
122
+ : undefined;
123
+ if (seller)
124
+ log.info("seller.enabled", { facilitator: cfg.facilitatorUrl });
88
125
  await startBridgeServer({
89
126
  upstream,
90
127
  name: PKG_NAME,
@@ -93,6 +130,7 @@ export async function runBridge(env = process.env) {
93
130
  network: cfg.HPP_NETWORK,
94
131
  funds,
95
132
  discovery,
133
+ seller,
96
134
  a2aRpcTimeoutMs,
97
135
  });
98
136
  // Graceful shutdown: when the host closes our stdin (or Claude Desktop
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,247 @@
1
+ import type { Network } from "@x402/core/types";
2
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
3
+ export interface SellerDeps {
4
+ /** Default network for create_requirements when the caller omits one. */
5
+ network: Network;
6
+ /** Facilitator base URL used by verify/settle. */
7
+ facilitatorUrl: string;
8
+ }
9
+ export declare const SELLER_CREATE_REQUIREMENTS_TOOL: {
10
+ readonly name: "seller_create_requirements";
11
+ readonly description: string;
12
+ readonly inputSchema: {
13
+ readonly type: "object";
14
+ readonly properties: {
15
+ readonly amount: {
16
+ readonly type: "string";
17
+ readonly description: "Price in atomic units (e.g. '10000' = 0.01 USDC.e).";
18
+ };
19
+ readonly payTo: {
20
+ readonly type: "string";
21
+ readonly description: "Your wallet address (receives payment).";
22
+ };
23
+ readonly asset: {
24
+ readonly type: "string";
25
+ readonly description: "Token address (USDC.e on HPP).";
26
+ };
27
+ readonly network: {
28
+ readonly type: "string";
29
+ readonly description: "CAIP-2 network; defaults to the bridge network.";
30
+ };
31
+ readonly scheme: {
32
+ readonly type: "string";
33
+ readonly enum: readonly ["exact", "upto", "batch-settlement"];
34
+ readonly description: "Payment scheme (default exact).";
35
+ };
36
+ readonly maxTimeoutSeconds: {
37
+ readonly type: "number";
38
+ readonly description: "Payment validity window (default 600).";
39
+ };
40
+ readonly extra: {
41
+ readonly type: "object";
42
+ readonly description: "Scheme-specific extras (EIP-712 domain, Permit2 proxy, channel info).";
43
+ };
44
+ };
45
+ readonly required: readonly ["amount", "payTo", "asset"];
46
+ readonly additionalProperties: false;
47
+ };
48
+ };
49
+ export declare const SELLER_GENERATE_402_TOOL: {
50
+ readonly name: "seller_generate_402";
51
+ readonly description: string;
52
+ readonly inputSchema: {
53
+ readonly type: "object";
54
+ readonly properties: {
55
+ readonly accepts: {
56
+ readonly type: "array";
57
+ readonly description: "PaymentRequirements[] the buyer may choose from.";
58
+ readonly items: {
59
+ readonly type: "object";
60
+ };
61
+ };
62
+ readonly resource: {
63
+ readonly type: "string";
64
+ readonly description: "The resource URL being protected.";
65
+ };
66
+ readonly error: {
67
+ readonly type: "string";
68
+ readonly description: "Optional human-readable reason.";
69
+ };
70
+ };
71
+ readonly required: readonly ["accepts"];
72
+ readonly additionalProperties: false;
73
+ };
74
+ };
75
+ export declare const SELLER_DECODE_PAYMENT_TOOL: {
76
+ readonly name: "seller_decode_payment";
77
+ readonly description: string;
78
+ readonly inputSchema: {
79
+ readonly type: "object";
80
+ readonly properties: {
81
+ readonly paymentHeader: {
82
+ readonly type: "string";
83
+ readonly description: "The base64 X-PAYMENT header value.";
84
+ };
85
+ };
86
+ readonly required: readonly ["paymentHeader"];
87
+ readonly additionalProperties: false;
88
+ };
89
+ };
90
+ export declare const SELLER_VERIFY_TOOL: {
91
+ readonly name: "seller_verify";
92
+ readonly description: string;
93
+ readonly inputSchema: {
94
+ readonly type: "object";
95
+ readonly properties: {
96
+ readonly paymentHeader: {
97
+ readonly type: "string";
98
+ readonly description: "The base64 X-PAYMENT header.";
99
+ };
100
+ readonly paymentRequirements: {
101
+ readonly type: "object";
102
+ readonly description: "The requirements you advertised for this resource.";
103
+ };
104
+ };
105
+ readonly required: readonly ["paymentHeader", "paymentRequirements"];
106
+ readonly additionalProperties: false;
107
+ };
108
+ };
109
+ export declare const SELLER_SETTLE_TOOL: {
110
+ readonly name: "seller_settle";
111
+ readonly description: string;
112
+ readonly inputSchema: {
113
+ readonly type: "object";
114
+ readonly properties: {
115
+ readonly paymentHeader: {
116
+ readonly type: "string";
117
+ readonly description: "The base64 X-PAYMENT header.";
118
+ };
119
+ readonly paymentRequirements: {
120
+ readonly type: "object";
121
+ readonly description: "The requirements you advertised for this resource.";
122
+ };
123
+ };
124
+ readonly required: readonly ["paymentHeader", "paymentRequirements"];
125
+ readonly additionalProperties: false;
126
+ };
127
+ };
128
+ export declare const SELLER_TOOLS: readonly [{
129
+ readonly name: "seller_create_requirements";
130
+ readonly description: string;
131
+ readonly inputSchema: {
132
+ readonly type: "object";
133
+ readonly properties: {
134
+ readonly amount: {
135
+ readonly type: "string";
136
+ readonly description: "Price in atomic units (e.g. '10000' = 0.01 USDC.e).";
137
+ };
138
+ readonly payTo: {
139
+ readonly type: "string";
140
+ readonly description: "Your wallet address (receives payment).";
141
+ };
142
+ readonly asset: {
143
+ readonly type: "string";
144
+ readonly description: "Token address (USDC.e on HPP).";
145
+ };
146
+ readonly network: {
147
+ readonly type: "string";
148
+ readonly description: "CAIP-2 network; defaults to the bridge network.";
149
+ };
150
+ readonly scheme: {
151
+ readonly type: "string";
152
+ readonly enum: readonly ["exact", "upto", "batch-settlement"];
153
+ readonly description: "Payment scheme (default exact).";
154
+ };
155
+ readonly maxTimeoutSeconds: {
156
+ readonly type: "number";
157
+ readonly description: "Payment validity window (default 600).";
158
+ };
159
+ readonly extra: {
160
+ readonly type: "object";
161
+ readonly description: "Scheme-specific extras (EIP-712 domain, Permit2 proxy, channel info).";
162
+ };
163
+ };
164
+ readonly required: readonly ["amount", "payTo", "asset"];
165
+ readonly additionalProperties: false;
166
+ };
167
+ }, {
168
+ readonly name: "seller_generate_402";
169
+ readonly description: string;
170
+ readonly inputSchema: {
171
+ readonly type: "object";
172
+ readonly properties: {
173
+ readonly accepts: {
174
+ readonly type: "array";
175
+ readonly description: "PaymentRequirements[] the buyer may choose from.";
176
+ readonly items: {
177
+ readonly type: "object";
178
+ };
179
+ };
180
+ readonly resource: {
181
+ readonly type: "string";
182
+ readonly description: "The resource URL being protected.";
183
+ };
184
+ readonly error: {
185
+ readonly type: "string";
186
+ readonly description: "Optional human-readable reason.";
187
+ };
188
+ };
189
+ readonly required: readonly ["accepts"];
190
+ readonly additionalProperties: false;
191
+ };
192
+ }, {
193
+ readonly name: "seller_decode_payment";
194
+ readonly description: string;
195
+ readonly inputSchema: {
196
+ readonly type: "object";
197
+ readonly properties: {
198
+ readonly paymentHeader: {
199
+ readonly type: "string";
200
+ readonly description: "The base64 X-PAYMENT header value.";
201
+ };
202
+ };
203
+ readonly required: readonly ["paymentHeader"];
204
+ readonly additionalProperties: false;
205
+ };
206
+ }, {
207
+ readonly name: "seller_verify";
208
+ readonly description: string;
209
+ readonly inputSchema: {
210
+ readonly type: "object";
211
+ readonly properties: {
212
+ readonly paymentHeader: {
213
+ readonly type: "string";
214
+ readonly description: "The base64 X-PAYMENT header.";
215
+ };
216
+ readonly paymentRequirements: {
217
+ readonly type: "object";
218
+ readonly description: "The requirements you advertised for this resource.";
219
+ };
220
+ };
221
+ readonly required: readonly ["paymentHeader", "paymentRequirements"];
222
+ readonly additionalProperties: false;
223
+ };
224
+ }, {
225
+ readonly name: "seller_settle";
226
+ readonly description: string;
227
+ readonly inputSchema: {
228
+ readonly type: "object";
229
+ readonly properties: {
230
+ readonly paymentHeader: {
231
+ readonly type: "string";
232
+ readonly description: "The base64 X-PAYMENT header.";
233
+ };
234
+ readonly paymentRequirements: {
235
+ readonly type: "object";
236
+ readonly description: "The requirements you advertised for this resource.";
237
+ };
238
+ };
239
+ readonly required: readonly ["paymentHeader", "paymentRequirements"];
240
+ readonly additionalProperties: false;
241
+ };
242
+ }];
243
+ export declare function sellerCreateRequirements(deps: SellerDeps, a: Record<string, unknown>): CallToolResult;
244
+ export declare function sellerGenerate402(a: Record<string, unknown>): CallToolResult;
245
+ export declare function sellerDecodePayment(a: Record<string, unknown>): CallToolResult;
246
+ export declare function sellerVerify(deps: SellerDeps, a: Record<string, unknown>): Promise<CallToolResult>;
247
+ export declare function sellerSettle(deps: SellerDeps, a: Record<string, unknown>): Promise<CallToolResult>;