thebuyside-x402-agent 0.2.0 → 0.3.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/gateway.d.ts CHANGED
@@ -11,6 +11,7 @@ import { Allowlist } from './policy/allowlist.js';
11
11
  import { CapPolicy } from './policy/caps.js';
12
12
  import { ConfirmPolicy } from './policy/confirm.js';
13
13
  import { Receipts } from './policy/receipts.js';
14
+ import { Federation } from './registry/federation.js';
14
15
  import { Registry } from './registry/lookup.js';
15
16
  import type { Signer } from './signer/signer.js';
16
17
  export type Gateway = {
@@ -21,6 +22,7 @@ export type Gateway = {
21
22
  caps: CapPolicy;
22
23
  confirm: ConfirmPolicy;
23
24
  registry: Registry;
25
+ federation: Federation;
24
26
  };
25
27
  export declare function buildGateway(config: Config): Promise<Gateway>;
26
28
  //# sourceMappingURL=gateway.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAanE"}
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAcnE"}
package/dist/gateway.js CHANGED
@@ -10,6 +10,7 @@ import { Allowlist } from './policy/allowlist.js';
10
10
  import { CapPolicy } from './policy/caps.js';
11
11
  import { ConfirmPolicy } from './policy/confirm.js';
12
12
  import { Receipts } from './policy/receipts.js';
13
+ import { Federation } from './registry/federation.js';
13
14
  import { Registry } from './registry/lookup.js';
14
15
  import { EnvKeySigner } from './signer/env-key.js';
15
16
  export async function buildGateway(config) {
@@ -23,6 +24,7 @@ export async function buildGateway(config) {
23
24
  caps: CapPolicy.fromEnv(receipts),
24
25
  confirm: ConfirmPolicy.fromEnv(),
25
26
  registry,
27
+ federation: Federation.fromEnv(),
26
28
  };
27
29
  }
28
30
  //# sourceMappingURL=gateway.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAanD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEvC,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;QAChF,MAAM,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC;QAC/B,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;QAChE,QAAQ;QACR,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;QACjC,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE;QAChC,QAAQ;KACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAcnD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEvC,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;QAChF,MAAM,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC;QAC/B,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;QAChE,QAAQ;QACR,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;QACjC,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE;QAChC,QAAQ;QACR,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE;KACjC,CAAC;AACJ,CAAC"}
package/dist/index.js CHANGED
File without changes
@@ -38,6 +38,13 @@ export type ConfirmAskArgs = {
38
38
  url: string;
39
39
  todaySpentAtomic: bigint;
40
40
  dailyCapAtomic: bigint;
41
+ /**
42
+ * Optional `extensions.*` metadata from the 402 challenge. When the seller
43
+ * (or an index like CDP Bazaar) embeds listing metadata in the challenge,
44
+ * we surface a short summary in the prompt so the user has a trust signal
45
+ * beyond the bare URL.
46
+ */
47
+ extensions?: Record<string, unknown>;
41
48
  };
42
49
  export declare class ConfirmPolicy {
43
50
  readonly config: ConfirmConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/policy/confirm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,WAAgC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,qBAAa,aAAa;aAGI,MAAM,EAAE,aAAa;IAFjD,OAAO,CAAC,mBAAmB,CAAS;gBAER,MAAM,EAAE,aAAa;IAEjD,MAAM,CAAC,OAAO,IAAI,aAAa;IAqB/B,mEAAmE;IACnE,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAW5C;;;;;OAKG;IACG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;CAyD7E"}
1
+ {"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/policy/confirm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,WAAgC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,qBAAa,aAAa;aAGI,MAAM,EAAE,aAAa;IAFjD,OAAO,CAAC,mBAAmB,CAAS;gBAER,MAAM,EAAE,aAAa;IAEjD,MAAM,CAAC,OAAO,IAAI,aAAa;IAqB/B,mEAAmE;IACnE,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAW5C;;;;;OAKG;IACG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;CAyD7E"}
@@ -121,11 +121,47 @@ function formatPrompt(args) {
121
121
  return args.url;
122
122
  }
123
123
  })();
124
- return [
124
+ const lines = [
125
125
  `Confirm payment to ${args.host}`,
126
126
  ` Amount: $${formatUsdcAtomic(args.amountAtomic)} USDC (Base mainnet)`,
127
127
  ` Resource: ${args.method} ${path}`,
128
128
  ` Today: $${formatUsdcAtomic(args.todaySpentAtomic)} of $${formatUsdcAtomic(args.dailyCapAtomic)} daily cap`,
129
- ].join('\n');
129
+ ];
130
+ const meta = formatExtensions(args.extensions);
131
+ if (meta)
132
+ lines.push(meta);
133
+ return lines.join('\n');
134
+ }
135
+ /**
136
+ * Render `extensions.*` metadata for the prompt. Currently knows the
137
+ * `bazaar` namespace (CDP Bazaar listings); other namespaces fall through
138
+ * to a generic key-list. Returns null when there's nothing useful to show.
139
+ *
140
+ * Only surfaces string/number values to keep the prompt readable and
141
+ * resistant to nested-object spam from a hostile seller.
142
+ */
143
+ function formatExtensions(extensions) {
144
+ if (!extensions || Object.keys(extensions).length === 0)
145
+ return null;
146
+ const bazaar = extensions.bazaar;
147
+ if (bazaar && typeof bazaar === 'object') {
148
+ const b = bazaar;
149
+ const parts = [];
150
+ if (typeof b.name === 'string')
151
+ parts.push(b.name);
152
+ if (typeof b.category === 'string')
153
+ parts.push(`category: ${b.category}`);
154
+ if (typeof b.listingId === 'string')
155
+ parts.push(`listing: ${b.listingId}`);
156
+ if (parts.length > 0)
157
+ return ` Bazaar: ${parts.join(' • ')}`;
158
+ }
159
+ const flat = Object.entries(extensions)
160
+ .filter(([, v]) => typeof v === 'string' || typeof v === 'number')
161
+ .slice(0, 3)
162
+ .map(([k, v]) => `${k}=${v}`);
163
+ if (flat.length === 0)
164
+ return null;
165
+ return ` Meta: ${flat.join(', ')}`;
130
166
  }
131
167
  //# sourceMappingURL=confirm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/policy/confirm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/policy/confirm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Federation — query external x402 indexes (CDP Bazaar, agentic.market,
3
+ * x402watch) in parallel and merge results into the local seed.json corpus.
4
+ *
5
+ * Why federate at runtime: the x402 ecosystem is growing faster than a
6
+ * hand-curated `seed.json` can keep up with. External indexes already
7
+ * crawl/list thousands of endpoints. We let the user opt in to live
8
+ * federation and tag every returned entry with its `source` so the agent
9
+ * (and the user, via the discover output) can weigh trust accordingly.
10
+ *
11
+ * Robustness: every external source is wrapped in a per-source timeout +
12
+ * try/catch. A slow, broken, or 404-ing source produces zero entries and
13
+ * a logged warning — never a thrown error and never a blocked discover
14
+ * call. If all three sources are down the user still gets seed.json hits.
15
+ *
16
+ * URL defaults below were verified against live endpoints on 2026-05-10.
17
+ * They can be overridden per-source via `X402_BAZAAR_URL` /
18
+ * `X402_AGENTIC_URL` / `X402_X402WATCH_URL`. A source with an unset URL
19
+ * is silently disabled.
20
+ */
21
+ import type { RegistryEntry } from './types.js';
22
+ export type ExternalSourceId = 'cdp-bazaar' | 'agentic-market' | 'x402watch';
23
+ export type FetchContext = {
24
+ signal: AbortSignal;
25
+ fetchFn: typeof fetch;
26
+ };
27
+ export interface ExternalSource {
28
+ id: ExternalSourceId;
29
+ name: string;
30
+ fetch(query: string, ctx: FetchContext): Promise<RegistryEntry[]>;
31
+ }
32
+ export type FederationConfig = {
33
+ enabled: boolean;
34
+ timeoutMs: number;
35
+ sources: ExternalSource[];
36
+ };
37
+ export declare class Federation {
38
+ readonly config: FederationConfig;
39
+ constructor(config: FederationConfig);
40
+ static fromEnv(): Federation;
41
+ /**
42
+ * Fan out to every enabled source in parallel. Always resolves —
43
+ * individual source failures are logged + swallowed. Returns entries
44
+ * tagged with their `source` field.
45
+ */
46
+ search(query: string, opts?: {
47
+ fetchFn?: typeof fetch;
48
+ }): Promise<RegistryEntry[]>;
49
+ private runSource;
50
+ }
51
+ /**
52
+ * CDP Bazaar — Coinbase's semantic-search index. Verified shape (2026-05-10):
53
+ * GET /platform/v2/x402/discovery/search?query=...&limit=20
54
+ * → { partialResults, resources: [{
55
+ * resource: "https://...", // endpoint URL
56
+ * description: "...",
57
+ * accepts: [{
58
+ * scheme, network, asset, payTo,
59
+ * amount | maxAmountRequired, // both shapes seen in the wild
60
+ * extra: { name, version },
61
+ * ...
62
+ * }],
63
+ * lastUpdated: "...",
64
+ * extensions: { ... }
65
+ * }] }
66
+ */
67
+ export declare function makeCdpBazaarSource(baseUrl: string): ExternalSource;
68
+ /**
69
+ * agentic.market — third-party x402 marketplace. Verified shape (2026-05-10):
70
+ * GET /v1/services/search?q=...
71
+ * → { services: [{
72
+ * id, name, description, category,
73
+ * networks: ["Base", "Solana", ...],
74
+ * endpoints: [{
75
+ * url, method, description,
76
+ * pricing: { amount, currency, network, scheme }
77
+ * }]
78
+ * }] }
79
+ *
80
+ * One service can expose multiple endpoints; we flatten to one
81
+ * RegistryEntry per (service, endpoint) pair.
82
+ */
83
+ export declare function makeAgenticMarketSource(baseUrl: string): ExternalSource;
84
+ /**
85
+ * x402watch — wash-filtered intelligence published as daily CC0 snapshots
86
+ * on GitHub. Not a live API: each call fetches a ~2MB gzipped JSON file
87
+ * (today's snapshot) and filters client-side. Cached in-process by date
88
+ * so we hit GitHub at most once per UTC day per process lifetime.
89
+ *
90
+ * Snapshot shape (verified 2026-05-10):
91
+ * { snapshot_date, schema_version, service_count, services: [{
92
+ * id, chain, resource_url, name, description, category,
93
+ * price_amount, // float USDC, NOT atomic
94
+ * organic_traffic_pct,
95
+ * suspected_wash_pct
96
+ * }] }
97
+ */
98
+ export declare function makeX402WatchSource(baseUrl: string): ExternalSource;
99
+ //# sourceMappingURL=federation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/registry/federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAE7E,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,KAAK,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,gBAAgB,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACnE;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B,CAAC;AAIF,qBAAa,UAAU;aACO,MAAM,EAAE,gBAAgB;gBAAxB,MAAM,EAAE,gBAAgB;IAEpD,MAAM,CAAC,OAAO,IAAI,UAAU;IAqB5B;;;;OAIG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAA;KAAO,GACpC,OAAO,CAAC,aAAa,EAAE,CAAC;YAUb,SAAS;CAoBxB;AA4BD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAgBnE;AA4CD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAcvE;AAmDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAsCnE"}
@@ -0,0 +1,421 @@
1
+ /**
2
+ * Federation — query external x402 indexes (CDP Bazaar, agentic.market,
3
+ * x402watch) in parallel and merge results into the local seed.json corpus.
4
+ *
5
+ * Why federate at runtime: the x402 ecosystem is growing faster than a
6
+ * hand-curated `seed.json` can keep up with. External indexes already
7
+ * crawl/list thousands of endpoints. We let the user opt in to live
8
+ * federation and tag every returned entry with its `source` so the agent
9
+ * (and the user, via the discover output) can weigh trust accordingly.
10
+ *
11
+ * Robustness: every external source is wrapped in a per-source timeout +
12
+ * try/catch. A slow, broken, or 404-ing source produces zero entries and
13
+ * a logged warning — never a thrown error and never a blocked discover
14
+ * call. If all three sources are down the user still gets seed.json hits.
15
+ *
16
+ * URL defaults below were verified against live endpoints on 2026-05-10.
17
+ * They can be overridden per-source via `X402_BAZAAR_URL` /
18
+ * `X402_AGENTIC_URL` / `X402_X402WATCH_URL`. A source with an unset URL
19
+ * is silently disabled.
20
+ */
21
+ import { gunzipSync } from 'node:zlib';
22
+ import { logger } from '../log.js';
23
+ const DEFAULT_TIMEOUT_MS = 1500;
24
+ export class Federation {
25
+ config;
26
+ constructor(config) {
27
+ this.config = config;
28
+ }
29
+ static fromEnv() {
30
+ const enabled = (process.env.X402_FEDERATION ?? 'on').toLowerCase() !== 'off';
31
+ const timeoutMs = parseTimeout(process.env.X402_FEDERATION_TIMEOUT_MS);
32
+ const sources = [];
33
+ if (process.env.X402_DISABLE_BAZAAR !== '1') {
34
+ const url = process.env.X402_BAZAAR_URL ?? DEFAULT_BAZAAR_URL;
35
+ if (url)
36
+ sources.push(makeCdpBazaarSource(url));
37
+ }
38
+ if (process.env.X402_DISABLE_AGENTIC !== '1') {
39
+ const url = process.env.X402_AGENTIC_URL ?? DEFAULT_AGENTIC_URL;
40
+ if (url)
41
+ sources.push(makeAgenticMarketSource(url));
42
+ }
43
+ if (process.env.X402_DISABLE_X402WATCH !== '1') {
44
+ const url = process.env.X402_X402WATCH_URL ?? DEFAULT_X402WATCH_URL;
45
+ if (url)
46
+ sources.push(makeX402WatchSource(url));
47
+ }
48
+ return new Federation({ enabled, timeoutMs, sources });
49
+ }
50
+ /**
51
+ * Fan out to every enabled source in parallel. Always resolves —
52
+ * individual source failures are logged + swallowed. Returns entries
53
+ * tagged with their `source` field.
54
+ */
55
+ async search(query, opts = {}) {
56
+ if (!this.config.enabled || this.config.sources.length === 0)
57
+ return [];
58
+ const fetchFn = opts.fetchFn ?? fetch;
59
+ const results = await Promise.all(this.config.sources.map((source) => this.runSource(source, query, fetchFn)));
60
+ return results.flat();
61
+ }
62
+ async runSource(source, query, fetchFn) {
63
+ const ctrl = new AbortController();
64
+ const timer = setTimeout(() => ctrl.abort(), this.config.timeoutMs);
65
+ try {
66
+ const entries = await source.fetch(query, { signal: ctrl.signal, fetchFn });
67
+ return entries.map((e) => ({ ...e, source: e.source ?? source.id }));
68
+ }
69
+ catch (err) {
70
+ logger.warn('federation source failed', {
71
+ source: source.id,
72
+ err: err instanceof Error ? err.message : String(err),
73
+ });
74
+ return [];
75
+ }
76
+ finally {
77
+ clearTimeout(timer);
78
+ }
79
+ }
80
+ }
81
+ function parseTimeout(raw) {
82
+ if (!raw)
83
+ return DEFAULT_TIMEOUT_MS;
84
+ const n = Number(raw);
85
+ if (!Number.isFinite(n) || n <= 0)
86
+ return DEFAULT_TIMEOUT_MS;
87
+ return Math.floor(n);
88
+ }
89
+ // ---------------------------------------------------------------------------
90
+ // Source adapters.
91
+ //
92
+ // URL defaults verified against live endpoints on 2026-05-10. Each adapter
93
+ // degrades gracefully on shape changes (returns [] rather than throwing);
94
+ // the orchestrator's try/catch is the final safety net.
95
+ // ---------------------------------------------------------------------------
96
+ const DEFAULT_BAZAAR_URL = 'https://api.cdp.coinbase.com/platform/v2/x402/discovery/search';
97
+ const DEFAULT_AGENTIC_URL = 'https://api.agentic.market/v1/services/search';
98
+ /**
99
+ * x402watch publishes daily snapshots to GitHub under CC0. The `{date}`
100
+ * placeholder is replaced with today's UTC date at fetch time, with a
101
+ * one-day fallback if today's snapshot hasn't been published yet.
102
+ */
103
+ const DEFAULT_X402WATCH_URL = 'https://raw.githubusercontent.com/printmoneylab/x402watch-data/main/data/services-{date}.json.gz';
104
+ /**
105
+ * CDP Bazaar — Coinbase's semantic-search index. Verified shape (2026-05-10):
106
+ * GET /platform/v2/x402/discovery/search?query=...&limit=20
107
+ * → { partialResults, resources: [{
108
+ * resource: "https://...", // endpoint URL
109
+ * description: "...",
110
+ * accepts: [{
111
+ * scheme, network, asset, payTo,
112
+ * amount | maxAmountRequired, // both shapes seen in the wild
113
+ * extra: { name, version },
114
+ * ...
115
+ * }],
116
+ * lastUpdated: "...",
117
+ * extensions: { ... }
118
+ * }] }
119
+ */
120
+ export function makeCdpBazaarSource(baseUrl) {
121
+ return {
122
+ id: 'cdp-bazaar',
123
+ name: 'CDP Bazaar',
124
+ async fetch(query, { signal, fetchFn }) {
125
+ const url = appendQuery(baseUrl, { query, limit: '20' });
126
+ const r = await fetchFn(url, { signal });
127
+ if (!r.ok)
128
+ return [];
129
+ const json = await r.json().catch(() => null);
130
+ const list = json?.resources;
131
+ if (!Array.isArray(list))
132
+ return [];
133
+ return list
134
+ .map((item) => bazaarItemToEntry(item))
135
+ .filter((e) => e !== null);
136
+ },
137
+ };
138
+ }
139
+ function bazaarItemToEntry(item) {
140
+ const o = (item ?? {});
141
+ const resource = typeof o.resource === 'string' ? o.resource : null;
142
+ if (!resource)
143
+ return null;
144
+ const accepts = Array.isArray(o.accepts) ? o.accepts : [];
145
+ // Prefer Base; CDP responses commonly carry both Solana and Base options
146
+ // and v0 only signs Base. We still surface the entry if only non-Base
147
+ // options exist — `verified: false` flags it for the user.
148
+ const accept = accepts.find((a) => a.network === 'base' || a.network === 'eip155:8453') ??
149
+ accepts[0];
150
+ if (!accept)
151
+ return null;
152
+ const amountStr = (typeof accept.amount === 'string' && accept.amount) ||
153
+ (typeof accept.maxAmountRequired === 'string' && accept.maxAmountRequired) ||
154
+ '0';
155
+ const atomic = Number(amountStr);
156
+ const network = typeof accept.network === 'string' ? accept.network : '';
157
+ const description = (typeof o.description === 'string' && o.description) ||
158
+ (typeof accept.description === 'string' && accept.description) ||
159
+ '';
160
+ return {
161
+ id: `bazaar-${stableId(resource)}`,
162
+ name: safeHostname(resource) ?? resource,
163
+ description,
164
+ endpoint: resource,
165
+ method: 'GET',
166
+ price_usdc: atomic / 1_000_000,
167
+ price_atomic: atomic,
168
+ chain: shortChain(network),
169
+ network,
170
+ category: 'unknown',
171
+ tags: [],
172
+ verified: false,
173
+ verified_at: '',
174
+ };
175
+ }
176
+ /**
177
+ * agentic.market — third-party x402 marketplace. Verified shape (2026-05-10):
178
+ * GET /v1/services/search?q=...
179
+ * → { services: [{
180
+ * id, name, description, category,
181
+ * networks: ["Base", "Solana", ...],
182
+ * endpoints: [{
183
+ * url, method, description,
184
+ * pricing: { amount, currency, network, scheme }
185
+ * }]
186
+ * }] }
187
+ *
188
+ * One service can expose multiple endpoints; we flatten to one
189
+ * RegistryEntry per (service, endpoint) pair.
190
+ */
191
+ export function makeAgenticMarketSource(baseUrl) {
192
+ return {
193
+ id: 'agentic-market',
194
+ name: 'agentic.market',
195
+ async fetch(query, { signal, fetchFn }) {
196
+ const url = appendQuery(baseUrl, { q: query });
197
+ const r = await fetchFn(url, { signal });
198
+ if (!r.ok)
199
+ return [];
200
+ const json = await r.json().catch(() => null);
201
+ const list = json?.services;
202
+ if (!Array.isArray(list))
203
+ return [];
204
+ return list.flatMap((item) => agenticServiceToEntries(item));
205
+ },
206
+ };
207
+ }
208
+ function agenticServiceToEntries(service) {
209
+ const s = (service ?? {});
210
+ const endpoints = Array.isArray(s.endpoints)
211
+ ? s.endpoints
212
+ : [];
213
+ const serviceName = typeof s.name === 'string' ? s.name : '';
214
+ const serviceCategory = typeof s.category === 'string' ? s.category : 'unknown';
215
+ const networks = Array.isArray(s.networks) ? s.networks : [];
216
+ return endpoints
217
+ .map((ep) => {
218
+ const url = typeof ep.url === 'string' ? ep.url : null;
219
+ if (!url)
220
+ return null;
221
+ const pricing = (ep.pricing ?? {});
222
+ const priceStr = typeof pricing.amount === 'string' ? pricing.amount : '0';
223
+ const price = Number(priceStr);
224
+ const epNetwork = typeof pricing.network === 'string' ? pricing.network : networks[0] ?? 'Base';
225
+ const network = normalizeAgenticNetwork(epNetwork);
226
+ return {
227
+ id: `agentic-${stableId(url)}`,
228
+ name: serviceName ? `${serviceName} — ${safeHostname(url) ?? ''}` : (safeHostname(url) ?? url),
229
+ description: typeof ep.description === 'string' ? ep.description : '',
230
+ endpoint: url,
231
+ method: humanMethod(ep.method),
232
+ price_usdc: Number.isFinite(price) ? price : 0,
233
+ price_atomic: Number.isFinite(price) ? Math.round(price * 1_000_000) : 0,
234
+ chain: shortChain(network),
235
+ network,
236
+ category: serviceCategory,
237
+ tags: [serviceName.toLowerCase()].filter((t) => t.length > 0),
238
+ verified: false,
239
+ verified_at: '',
240
+ };
241
+ })
242
+ .filter((e) => e !== null);
243
+ }
244
+ function normalizeAgenticNetwork(name) {
245
+ const n = name.toLowerCase();
246
+ if (n === 'base')
247
+ return 'eip155:8453';
248
+ if (n === 'base sepolia' || n === 'base-sepolia')
249
+ return 'eip155:84532';
250
+ if (n === 'solana')
251
+ return 'solana';
252
+ if (n === 'polygon')
253
+ return 'eip155:137';
254
+ if (n === 'arbitrum')
255
+ return 'eip155:42161';
256
+ return name;
257
+ }
258
+ /**
259
+ * x402watch — wash-filtered intelligence published as daily CC0 snapshots
260
+ * on GitHub. Not a live API: each call fetches a ~2MB gzipped JSON file
261
+ * (today's snapshot) and filters client-side. Cached in-process by date
262
+ * so we hit GitHub at most once per UTC day per process lifetime.
263
+ *
264
+ * Snapshot shape (verified 2026-05-10):
265
+ * { snapshot_date, schema_version, service_count, services: [{
266
+ * id, chain, resource_url, name, description, category,
267
+ * price_amount, // float USDC, NOT atomic
268
+ * organic_traffic_pct,
269
+ * suspected_wash_pct
270
+ * }] }
271
+ */
272
+ export function makeX402WatchSource(baseUrl) {
273
+ const cache = new Map();
274
+ return {
275
+ id: 'x402watch',
276
+ name: 'x402watch',
277
+ async fetch(query, { signal, fetchFn }) {
278
+ const dates = candidateDates();
279
+ let entries = null;
280
+ for (const date of dates) {
281
+ const cached = cache.get(date);
282
+ if (cached) {
283
+ entries = cached;
284
+ break;
285
+ }
286
+ const url = baseUrl.replace('{date}', date);
287
+ const r = await fetchFn(url, { signal });
288
+ if (!r.ok)
289
+ continue;
290
+ const buf = Buffer.from(await r.arrayBuffer());
291
+ let parsed;
292
+ try {
293
+ parsed = JSON.parse(gunzipSync(buf).toString('utf8'));
294
+ }
295
+ catch {
296
+ continue;
297
+ }
298
+ const list = parsed?.services;
299
+ if (!Array.isArray(list))
300
+ continue;
301
+ const mapped = list
302
+ .map((item) => x402watchItemToEntry(item))
303
+ .filter((e) => e !== null);
304
+ cache.set(date, mapped);
305
+ entries = mapped;
306
+ break;
307
+ }
308
+ if (!entries)
309
+ return [];
310
+ return entries.filter((e) => matchesQuery(e, query));
311
+ },
312
+ };
313
+ }
314
+ function x402watchItemToEntry(item) {
315
+ const o = (item ?? {});
316
+ const endpoint = typeof o.resource_url === 'string' ? o.resource_url : null;
317
+ if (!endpoint)
318
+ return null;
319
+ const price = typeof o.price_amount === 'number' && Number.isFinite(o.price_amount)
320
+ ? o.price_amount
321
+ : 0;
322
+ const chain = typeof o.chain === 'string' ? o.chain : '';
323
+ return {
324
+ id: `x402watch-${stableId(endpoint)}`,
325
+ name: (typeof o.name === 'string' && o.name) || safeHostname(endpoint) || endpoint,
326
+ description: typeof o.description === 'string' ? o.description : '',
327
+ endpoint,
328
+ method: 'GET',
329
+ price_usdc: price,
330
+ price_atomic: Math.round(price * 1_000_000),
331
+ chain: shortChain(chain),
332
+ network: chain,
333
+ category: typeof o.category === 'string' ? o.category : 'unknown',
334
+ tags: [],
335
+ verified: false,
336
+ verified_at: '',
337
+ };
338
+ }
339
+ /**
340
+ * Try today's UTC date first, then yesterday. Snapshots are committed
341
+ * once per UTC day, but the commit lands at an unknown time — early in
342
+ * the UTC day, today's snapshot may not exist yet.
343
+ */
344
+ function candidateDates(now = new Date()) {
345
+ const today = isoDate(now);
346
+ const yesterday = isoDate(new Date(now.getTime() - 24 * 60 * 60 * 1000));
347
+ return [today, yesterday];
348
+ }
349
+ function isoDate(d) {
350
+ return d.toISOString().slice(0, 10);
351
+ }
352
+ // ---------- shared adapter helpers ----------
353
+ function appendQuery(baseUrl, params) {
354
+ try {
355
+ const u = new URL(baseUrl);
356
+ for (const [k, v] of Object.entries(params)) {
357
+ if (v && v.length > 0)
358
+ u.searchParams.set(k, v);
359
+ }
360
+ return u.toString();
361
+ }
362
+ catch {
363
+ return baseUrl;
364
+ }
365
+ }
366
+ function safeHostname(url) {
367
+ try {
368
+ return new URL(url).hostname;
369
+ }
370
+ catch {
371
+ return null;
372
+ }
373
+ }
374
+ function humanMethod(raw) {
375
+ if (typeof raw === 'string' && raw.toUpperCase() === 'POST')
376
+ return 'POST';
377
+ return 'GET';
378
+ }
379
+ function shortChain(network) {
380
+ if (network === 'eip155:8453' || network === 'base')
381
+ return 'base';
382
+ if (network === 'eip155:84532' || network === 'base-sepolia')
383
+ return 'base-sepolia';
384
+ if (network.startsWith('solana'))
385
+ return 'solana';
386
+ if (network.startsWith('eip155:137') || network === 'polygon')
387
+ return 'polygon';
388
+ if (network.startsWith('eip155:42161') || network === 'arbitrum')
389
+ return 'arbitrum';
390
+ return network;
391
+ }
392
+ function stableId(url) {
393
+ return url
394
+ .replace(/^https?:\/\//, '')
395
+ .replace(/[^a-z0-9]+/gi, '-')
396
+ .replace(/^-+|-+$/g, '')
397
+ .toLowerCase()
398
+ .slice(0, 64);
399
+ }
400
+ /**
401
+ * Client-side query filter for sources that don't support server-side
402
+ * search (currently only x402watch, since it's a static daily snapshot).
403
+ */
404
+ function matchesQuery(entry, query) {
405
+ const terms = query
406
+ .toLowerCase()
407
+ .split(/\s+/)
408
+ .map((t) => t.trim())
409
+ .filter((t) => t.length > 0);
410
+ if (terms.length === 0)
411
+ return true;
412
+ const haystack = (entry.name +
413
+ ' ' +
414
+ entry.description +
415
+ ' ' +
416
+ entry.tags.join(' ') +
417
+ ' ' +
418
+ entry.category).toLowerCase();
419
+ return terms.some((t) => haystack.includes(t));
420
+ }
421
+ //# sourceMappingURL=federation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/registry/federation.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,13 @@ export type RegistryEntry = {
35
35
  verified: boolean;
36
36
  /** ISO date (YYYY-MM-DD) of last successful verification. */
37
37
  verified_at: string;
38
+ /**
39
+ * Where this entry came from. `verified` for hand-curated `seed.json`,
40
+ * `candidate` for `seed.candidates.json`, or an external-source id for
41
+ * federated entries. Surfaced in `x402.discover` results so the agent
42
+ * (and the user) can weigh trust accordingly.
43
+ */
44
+ source?: 'verified' | 'candidate' | 'cdp-bazaar' | 'agentic-market' | 'x402watch';
38
45
  };
39
46
  export type RegistryFile = {
40
47
  version: 1;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,CAAC,CAAC;IACX,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,gBAAgB,GAAG,WAAW,CAAC;CACnF,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,CAAC,CAAC;IACX,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC"}
@@ -1,9 +1,15 @@
1
1
  /**
2
- * x402.discover — search the registry of x402-priced APIs.
2
+ * x402.discover — search for x402-priced APIs.
3
3
  *
4
- * Reads from `src/registry/seed.json` via the Registry class. Lowercase
5
- * substring match across name + description + tags + category, scored by
6
- * count of matched query terms. Empty query returns the full list.
4
+ * Two corpora are queried in parallel:
5
+ * 1. Local seed.json (curated, verified) via the Registry class.
6
+ * 2. External federated indexes (CDP Bazaar, agentic.market, x402watch)
7
+ * via the Federation class.
8
+ *
9
+ * Results are merged and deduplicated by endpoint URL — local entries win
10
+ * on collision because they're verified. Each returned match carries a
11
+ * `source` field so the agent can weigh trust ('verified' vs an external
12
+ * source id). External federation can be disabled with X402_FEDERATION=off.
7
13
  */
8
14
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
15
  import type { Gateway } from '../gateway.js';
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA4D1E"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAsE1E"}
@@ -1,9 +1,15 @@
1
1
  /**
2
- * x402.discover — search the registry of x402-priced APIs.
2
+ * x402.discover — search for x402-priced APIs.
3
3
  *
4
- * Reads from `src/registry/seed.json` via the Registry class. Lowercase
5
- * substring match across name + description + tags + category, scored by
6
- * count of matched query terms. Empty query returns the full list.
4
+ * Two corpora are queried in parallel:
5
+ * 1. Local seed.json (curated, verified) via the Registry class.
6
+ * 2. External federated indexes (CDP Bazaar, agentic.market, x402watch)
7
+ * via the Federation class.
8
+ *
9
+ * Results are merged and deduplicated by endpoint URL — local entries win
10
+ * on collision because they're verified. Each returned match carries a
11
+ * `source` field so the agent can weigh trust ('verified' vs an external
12
+ * source id). External federation can be disabled with X402_FEDERATION=off.
7
13
  */
8
14
  import { z } from 'zod';
9
15
  import { logger } from '../log.js';
@@ -11,8 +17,11 @@ export function registerDiscover(server, gateway) {
11
17
  server.registerTool('x402.discover', {
12
18
  title: 'Discover x402-priced APIs',
13
19
  description: 'Search the registry of x402-priced APIs by free-text query. ' +
14
- 'Returns matching endpoints with their per-call price in USDC. ' +
15
- 'Use this before x402.fetch to find APIs that can answer a question.',
20
+ 'Queries the local curated registry plus external indexes (CDP ' +
21
+ 'Bazaar, agentic.market, x402watch) when federation is enabled. ' +
22
+ 'Each match carries a `source` field — `verified` means the entry ' +
23
+ 'is in our curated seed; other values are external indexes that ' +
24
+ 'have not been independently verified.',
16
25
  inputSchema: {
17
26
  query: z
18
27
  .string()
@@ -28,14 +37,18 @@ export function registerDiscover(server, gateway) {
28
37
  },
29
38
  }, async ({ query, limit }) => {
30
39
  logger.info('discover called', { query, limit });
31
- const matches = gateway.registry.search(query, { limit });
40
+ const cap = limit ?? 10;
41
+ const localOnly = gateway.registry.search(query);
42
+ const local = localOnly.map((e) => ({ ...e, source: e.source ?? 'verified' }));
43
+ const external = await gateway.federation.search(query);
44
+ const merged = mergeByEndpoint(local, external).slice(0, cap);
32
45
  return {
33
46
  content: [
34
47
  {
35
48
  type: 'text',
36
49
  text: JSON.stringify({
37
50
  query,
38
- matches: matches.map((e) => ({
51
+ matches: merged.map((e) => ({
39
52
  id: e.id,
40
53
  name: e.name,
41
54
  description: e.description,
@@ -47,12 +60,49 @@ export function registerDiscover(server, gateway) {
47
60
  tags: e.tags,
48
61
  example: e.example,
49
62
  verified: e.verified,
63
+ source: e.source,
50
64
  })),
51
- total_in_registry: gateway.registry.entries.length,
65
+ total_in_local_registry: gateway.registry.entries.length,
66
+ external_sources: gateway.federation.config.sources.map((s) => s.id),
52
67
  }, null, 2),
53
68
  },
54
69
  ],
55
70
  };
56
71
  });
57
72
  }
73
+ /**
74
+ * Merge local + external entries, deduplicating by canonical endpoint URL.
75
+ * Local entries (which are `verified`) always win on collision so trust
76
+ * doesn't get diluted by an external index that mirrors the same endpoint.
77
+ * Order: locals first (preserving Registry.search's score order), then
78
+ * external entries in the order their sources fired.
79
+ */
80
+ function mergeByEndpoint(local, external) {
81
+ const seen = new Set();
82
+ const out = [];
83
+ for (const e of local) {
84
+ const k = canonicalEndpoint(e.endpoint);
85
+ if (seen.has(k))
86
+ continue;
87
+ seen.add(k);
88
+ out.push(e);
89
+ }
90
+ for (const e of external) {
91
+ const k = canonicalEndpoint(e.endpoint);
92
+ if (seen.has(k))
93
+ continue;
94
+ seen.add(k);
95
+ out.push(e);
96
+ }
97
+ return out;
98
+ }
99
+ function canonicalEndpoint(url) {
100
+ try {
101
+ const u = new URL(url);
102
+ return `${u.hostname.toLowerCase()}${u.pathname.replace(/\/$/, '')}`;
103
+ }
104
+ catch {
105
+ return url.toLowerCase();
106
+ }
107
+ }
58
108
  //# sourceMappingURL=discover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,OAAgB;IAClE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACT,8DAA8D;YAC9D,gEAAgE;YAChE,qEAAqE;QACvE,WAAW,EAAE;YACX,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CACP,qEAAqE;gBACnE,qCAAqC,CACxC;YACH,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,+CAA+C,CAAC;SAC7D;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACzB,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,KAAK;wBACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;4BACR,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,WAAW,EAAE,CAAC,CAAC,WAAW;4BAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,MAAM,EAAE,CAAC,CAAC,MAAM;4BAChB,UAAU,EAAE,CAAC,CAAC,UAAU;4BACxB,KAAK,EAAE,CAAC,CAAC,KAAK;4BACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;yBACrB,CAAC,CAAC;wBACH,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;qBACnD,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,OAAgB;IAClE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACT,8DAA8D;YAC9D,gEAAgE;YAChE,iEAAiE;YACjE,mEAAmE;YACnE,iEAAiE;YACjE,uCAAuC;QACzC,WAAW,EAAE;YACX,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CACP,qEAAqE;gBACnE,qCAAqC,CACxC;YACH,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,+CAA+C,CAAC;SAC7D;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACzB,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,UAAmB,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAExD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAE9D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,KAAK;wBACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC1B,EAAE,EAAE,CAAC,CAAC,EAAE;4BACR,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,WAAW,EAAE,CAAC,CAAC,WAAW;4BAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,MAAM,EAAE,CAAC,CAAC,MAAM;4BAChB,UAAU,EAAE,CAAC,CAAC,UAAU;4BACxB,KAAK,EAAE,CAAC,CAAC,KAAK;4BACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,MAAM,EAAE,CAAC,CAAC,MAAM;yBACjB,CAAC,CAAC;wBACH,uBAAuB,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;wBACxD,gBAAgB,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACrE,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CACtB,KAAsB,EACtB,QAAyB;IAEzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/tools/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAK7C,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAiGvE"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/tools/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAK7C,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAkGvE"}
@@ -60,6 +60,7 @@ export function registerFetch(server, gateway) {
60
60
  url,
61
61
  todaySpentAtomic: await gateway.caps.spentTodayAtomic(),
62
62
  dailyCapAtomic: gateway.caps.config.dailyLimitAtomic,
63
+ extensions: reqs.extensions,
63
64
  });
64
65
  if (!confirmDecision.ok)
65
66
  throw new Error(confirmDecision.reason);
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/tools/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,OAAgB;IAC/D,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,+CAA+C;QACtD,WAAW,EACT,yEAAyE;YACzE,mEAAmE;YACnE,yEAAyE;YACzE,yEAAyE;QAC3E,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YACtE,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;iBACrB,QAAQ,EAAE;iBACV,QAAQ,CAAC,2BAA2B,CAAC;SACzC;KACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QACxB,MAAM,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAEhD,+DAA+D;QAC/D,qFAAqF;QACrF,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,OAAO,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAED,mDAAmD;QACnD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,aAAa,CAClB,qFAAqF,CACtF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;gBAC/B,GAAG;gBACH,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBACxB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACpD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBAC3D,IAAI,CAAC,WAAW,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAEzD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;wBACxD,YAAY;wBACZ,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ;wBAC3B,MAAM,EAAE,CAAC;wBACT,GAAG;wBACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE;wBACvD,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB;qBACrD,CAAC,CAAC;oBACH,IAAI,CAAC,eAAe,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACnE,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;oBAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpE,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC5B,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ;wBAC3B,GAAG;wBACH,MAAM,EAAE,CAAC;wBACT,aAAa,EAAE,IAAI,CAAC,iBAAiB;wBACrC,KAAK,EAAE,MAAM;wBACb,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,IAAI,CAAC,OAAO;wBAClC,OAAO,EAAE,EAAE,IAAI,IAAI;qBACpB,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,GAAG,GAA4B;gBACnC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CACrC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAClD,CAAC;gBACF,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAC5C,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC9C,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;YACtD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAChE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aACjD;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/tools/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,OAAgB;IAC/D,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,+CAA+C;QACtD,WAAW,EACT,yEAAyE;YACzE,mEAAmE;YACnE,yEAAyE;YACzE,yEAAyE;QAC3E,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YACtE,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;iBACrB,QAAQ,EAAE;iBACV,QAAQ,CAAC,2BAA2B,CAAC;SACzC;KACF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QACxB,MAAM,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAEhD,+DAA+D;QAC/D,qFAAqF;QACrF,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,OAAO,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAED,mDAAmD;QACnD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,aAAa,CAClB,qFAAqF,CACtF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;gBAC/B,GAAG;gBACH,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBACxB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACpD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBAC3D,IAAI,CAAC,WAAW,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAEzD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;wBACxD,YAAY;wBACZ,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ;wBAC3B,MAAM,EAAE,CAAC;wBACT,GAAG;wBACH,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE;wBACvD,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB;wBACpD,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B,CAAC,CAAC;oBACH,IAAI,CAAC,eAAe,CAAC,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACnE,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;oBAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpE,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC5B,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ;wBAC3B,GAAG;wBACH,MAAM,EAAE,CAAC;wBACT,aAAa,EAAE,IAAI,CAAC,iBAAiB;wBACrC,KAAK,EAAE,MAAM;wBACb,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,IAAI,CAAC,OAAO;wBAClC,OAAO,EAAE,EAAE,IAAI,IAAI;qBACpB,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,GAAG,GAA4B;gBACnC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CACrC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAClD,CAAC;gBACF,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAC5C,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC9C,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,CAAC;YACtD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAChE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aACjD;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/x402/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAkB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChE;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,mBAAmB,CAAC;QAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChG,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,2EAA2E;IAC3E,IAAI,EAAE,OAAO,CAAC;IACd,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoJtF;AAgCD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAqB3E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/x402/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAkB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChE;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,mBAAmB,CAAC;QAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChG,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,2EAA2E;IAC3E,IAAI,EAAE,OAAO,CAAC;IACd,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA2JtF;AAgCD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAqB3E"}
@@ -50,7 +50,13 @@ export async function payAndFetch(opts) {
50
50
  `X402_PAYER_PRIVATE_KEY (a wallet you control that is NOT the ` +
51
51
  `seller's receiving wallet).`);
52
52
  }
53
- // 2.5) Pre-pay hook (caps, ad-hoc policies). Errors abort.
53
+ // 2.5) Merge top-level challenge extensions into the picked reqs so
54
+ // consumers (caps, confirm prompt) see a single combined extension
55
+ // bag. Per-accept extensions take precedence on key collision.
56
+ if (challenge.extensions || reqs.extensions) {
57
+ reqs.extensions = { ...(challenge.extensions ?? {}), ...(reqs.extensions ?? {}) };
58
+ }
59
+ // 2.6) Pre-pay hook (caps, ad-hoc policies). Errors abort.
54
60
  if (opts.beforePay) {
55
61
  await opts.beforePay(reqs);
56
62
  }
@@ -221,11 +227,13 @@ function normalizeChallenge(raw) {
221
227
  maxTimeoutSeconds: a.maxTimeoutSeconds ?? 60,
222
228
  asset: (a.asset ?? '0x0000000000000000000000000000000000000000'),
223
229
  extra: a.extra ?? { name: '', version: '' },
230
+ extensions: a.extensions,
224
231
  }));
225
232
  return {
226
233
  x402Version: r.x402Version ?? 1,
227
234
  error: r.error,
228
235
  accepts,
236
+ extensions: r.extensions,
229
237
  };
230
238
  }
231
239
  async function tryJson(r) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/x402/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/x402/client.ts"],"names":[],"mappings":"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"}
@@ -31,12 +31,24 @@ export type PaymentRequirements = {
31
31
  name: string;
32
32
  version: string;
33
33
  };
34
+ /**
35
+ * Per-accept extension metadata. Sellers (and indexes like CDP Bazaar) bake
36
+ * arbitrary metadata into v2 challenges under `extensions.*` — e.g.
37
+ * `extensions.bazaar.{listingId, category, name}`. Opaque to the protocol;
38
+ * surfaced to the user via the M5 confirm prompt.
39
+ */
40
+ extensions?: Record<string, unknown>;
34
41
  };
35
42
  /** Body of a 402 response. */
36
43
  export type Challenge = {
37
44
  x402Version: number;
38
45
  error?: string;
39
46
  accepts: PaymentRequirements[];
47
+ /**
48
+ * Top-level challenge extensions. v2 challenges may carry metadata at the
49
+ * envelope level (applies to all `accepts` options) rather than per-option.
50
+ */
51
+ extensions?: Record<string, unknown>;
40
52
  };
41
53
  /** EIP-3009 authorization, in the wire shape (decimal strings). */
42
54
  export type Authorization = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/x402/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEzC,4DAA4D;AAC5D,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,KAAK,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C,CAAC;AAEF,8BAA8B;AAC9B,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,SAAS,EAAE,GAAG,CAAC;QACf,aAAa,EAAE,aAAa,CAAC;KAC9B,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/x402/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEzC,4DAA4D;AAC5D,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,KAAK,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,8BAA8B;AAC9B,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;CACZ,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,SAAS,EAAE,GAAG,CAAC;QACf,aAAa,EAAE,aAAa,CAAC;KAC9B,CAAC;CACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thebuyside-x402-agent",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Buyer-side x402 MCP gateway — let any agent pay any x402 API without seeing a 402 or a wallet.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Joshua Harrington",