kompass-sdk 0.13.0 → 0.15.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.
Files changed (58) hide show
  1. package/dist/cli.js +0 -0
  2. package/dist/matching.d.ts.map +1 -1
  3. package/dist/matching.js +8 -0
  4. package/dist/matching.js.map +1 -1
  5. package/dist/sources/acp.js +1 -1
  6. package/dist/sources/acp.js.map +1 -1
  7. package/dist/sources/bankr.d.ts +8 -0
  8. package/dist/sources/bankr.d.ts.map +1 -0
  9. package/dist/sources/bankr.js +79 -0
  10. package/dist/sources/bankr.js.map +1 -0
  11. package/dist/sources/index.d.ts.map +1 -1
  12. package/dist/sources/index.js +4 -0
  13. package/dist/sources/index.js.map +1 -1
  14. package/dist/sources/locus.d.ts +12 -0
  15. package/dist/sources/locus.d.ts.map +1 -0
  16. package/dist/sources/locus.js +134 -0
  17. package/dist/sources/locus.js.map +1 -0
  18. package/dist/sources/mcp-registry.d.ts +2 -2
  19. package/dist/sources/mcp-registry.d.ts.map +1 -1
  20. package/dist/sources/mcp-registry.js +89 -81
  21. package/dist/sources/mcp-registry.js.map +1 -1
  22. package/dist/sources/openserv.d.ts +8 -0
  23. package/dist/sources/openserv.d.ts.map +1 -0
  24. package/dist/sources/openserv.js +76 -0
  25. package/dist/sources/openserv.js.map +1 -0
  26. package/dist/sources/types.d.ts +1 -1
  27. package/dist/sources/types.d.ts.map +1 -1
  28. package/dist/wallet/bridge.d.ts +1 -0
  29. package/dist/wallet/bridge.d.ts.map +1 -1
  30. package/dist/wallet/bridge.js +31 -5
  31. package/dist/wallet/bridge.js.map +1 -1
  32. package/dist/wallet/handlers/acp.d.ts.map +1 -1
  33. package/dist/wallet/handlers/acp.js +59 -3
  34. package/dist/wallet/handlers/acp.js.map +1 -1
  35. package/dist/wallet/handlers/bankr.d.ts +13 -0
  36. package/dist/wallet/handlers/bankr.d.ts.map +1 -0
  37. package/dist/wallet/handlers/bankr.js +88 -0
  38. package/dist/wallet/handlers/bankr.js.map +1 -0
  39. package/dist/wallet/handlers/locus.d.ts +21 -0
  40. package/dist/wallet/handlers/locus.d.ts.map +1 -0
  41. package/dist/wallet/handlers/locus.js +144 -0
  42. package/dist/wallet/handlers/locus.js.map +1 -0
  43. package/dist/wallet/payment-router.d.ts.map +1 -1
  44. package/dist/wallet/payment-router.js +12 -0
  45. package/dist/wallet/payment-router.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/matching.ts +9 -0
  48. package/src/sources/acp.ts +1 -1
  49. package/src/sources/bankr.ts +87 -0
  50. package/src/sources/index.ts +4 -0
  51. package/src/sources/locus.ts +156 -0
  52. package/src/sources/mcp-registry.ts +108 -99
  53. package/src/sources/types.ts +3 -1
  54. package/src/wallet/bridge.ts +33 -6
  55. package/src/wallet/handlers/acp.ts +69 -3
  56. package/src/wallet/handlers/bankr.ts +108 -0
  57. package/src/wallet/handlers/locus.ts +170 -0
  58. package/src/wallet/payment-router.ts +14 -0
package/dist/cli.js CHANGED
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../src/matching.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA8BD,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CA0BhD;AAuFD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAiB/E;AAED,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../src/matching.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA8BD,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CA0BhD;AAgGD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAiB/E;AAED,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,CAAC"}
package/dist/matching.js CHANGED
@@ -115,6 +115,14 @@ function multiCriteriaScore(agent) {
115
115
  // Endpoint richness (more protocols = more interoperable)
116
116
  const endpointCount = Object.values(agent.endpoints).filter(Boolean).length;
117
117
  score += endpointCount * 2;
118
+ // MCP servers with remote endpoints are directly callable — boost them
119
+ // They don't have reputation data so they'd otherwise rank too low
120
+ if (agent.protocol === "mcp" && agent.endpoints.mcp) {
121
+ score += 8; // Callable remote MCP server bonus
122
+ }
123
+ // Free tools get a small accessibility bonus (no wallet needed)
124
+ if (agent.pricing?.model === "free")
125
+ score += 3;
118
126
  // Recency
119
127
  if (agent.lastSeen) {
120
128
  const hoursSince = (Date.now() - agent.lastSeen) / (1000 * 60 * 60);
@@ -1 +1 @@
1
- {"version":3,"file":"matching.js","sourceRoot":"","sources":["../src/matching.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matching.js","sourceRoot":"","sources":["../src/matching.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ function mapAcpAgent(agent) {
39
39
  name: agent.name ?? "Unknown ACP Agent",
40
40
  description: agent.description ?? offerings.map((o) => o.description).join(". ") ?? "",
41
41
  categories: extractAcpCategories(agent, offerings),
42
- capabilities: offerings.map((o) => `${o.name}: ${o.description ?? ""}`),
42
+ capabilities: offerings.map((o) => `${o.name}: ${o.description ?? ""}${o.requirement ? ` [expects: ${typeof o.requirement === 'object' ? Object.keys(o.requirement).join(', ') : o.requirement}]` : ""}`),
43
43
  source: "acp",
44
44
  protocol: "acp",
45
45
  endpoints: {
@@ -1 +1 @@
1
- {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/sources/acp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,0BAA0B;IAEvC,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAA6B;QACvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CACrB,MAAM,YAAY,uBAAuB,KAAK,sBAAsB,EACpE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAC1D,CAAC;YAEF,MAAM,MAAM,GAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,QAAQ,CAAC,MAAM,YAAY,uCAAuC,EAAE;gBAClE,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAC;AAEF,SAAS,WAAW,CAAC,KAAU;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;IACzD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAEjC,OAAO;QACL,EAAE,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,aAAa,EAAE;QAC5C,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,aAAa,CAAC;QACjD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,mBAAmB;QACvC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC3F,UAAU,EAAE,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC;QAClD,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC5E,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE;YACT,GAAG,EAAE;gBACH,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,eAAe;gBAC3D,aAAa,EAAE,KAAK,CAAC,aAAa;aACnC;SACF;QACD,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;YACrC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC;YAC3E,MAAM,EAAE,KAAK;SACd,CAAC,CAAC,CAAC,SAAS;QACb,yDAAyD;QACzD,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAChK,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YACrB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,GAAG,CAAC;YACxC,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC,CAAC,SAAS;QACb,QAAQ,EAAE,IAAI,EAAE,4BAA4B;QAC5C,GAAG,EAAE,KAAK;KACX,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAU,EAAE,SAAgB;IACxD,MAAM,IAAI,GAAG;QACX,KAAK,CAAC,IAAI;QACV,KAAK,CAAC,WAAW;QACjB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;KAC3D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAE1B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/sources/acp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Bankr Source Adapter
3
+ * Searches Bankr LLM Gateway for trading/DeFi agent services
4
+ * API at https://api.bankr.bot
5
+ */
6
+ import type { SourceAdapter } from "./types.js";
7
+ export declare const bankrAdapter: SourceAdapter;
8
+ //# sourceMappingURL=bankr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bankr.d.ts","sourceRoot":"","sources":["../../src/sources/bankr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAInF,eAAO,MAAM,YAAY,EAAE,aAqD1B,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Bankr Source Adapter
3
+ * Searches Bankr LLM Gateway for trading/DeFi agent services
4
+ * API at https://api.bankr.bot
5
+ */
6
+ const BANKR_API = "https://api.bankr.bot";
7
+ export const bankrAdapter = {
8
+ name: "bankr",
9
+ displayName: "Bankr Trading Gateway",
10
+ async search(query, options) {
11
+ const limit = options?.limit ?? 20;
12
+ const timeout = options?.timeout ?? 10000;
13
+ try {
14
+ const apiKey = process.env.BANKR_API_KEY;
15
+ if (!apiKey)
16
+ return [];
17
+ const headers = {
18
+ "Content-Type": "application/json",
19
+ "X-API-Key": apiKey,
20
+ };
21
+ const url = new URL(`${BANKR_API}/agents`);
22
+ if (query)
23
+ url.searchParams.set("q", query);
24
+ url.searchParams.set("limit", String(limit));
25
+ const res = await fetch(url.toString(), {
26
+ headers,
27
+ signal: AbortSignal.timeout(timeout),
28
+ });
29
+ if (!res.ok)
30
+ return [];
31
+ const data = await res.json();
32
+ const agents = data.agents ?? data.data ?? data.results ?? data;
33
+ if (!Array.isArray(agents))
34
+ return [];
35
+ return agents.slice(0, limit).map(mapBankrAgent);
36
+ }
37
+ catch {
38
+ return [];
39
+ }
40
+ },
41
+ async ping() {
42
+ try {
43
+ const res = await fetch(`${BANKR_API}/agent/prompt`, {
44
+ method: "POST",
45
+ headers: { "Content-Type": "application/json" },
46
+ body: JSON.stringify({ prompt: "ping" }),
47
+ signal: AbortSignal.timeout(5000),
48
+ });
49
+ // 401 means the API is alive, just needs auth
50
+ return res.status === 401 || res.ok;
51
+ }
52
+ catch {
53
+ return false;
54
+ }
55
+ },
56
+ };
57
+ function mapBankrAgent(agent) {
58
+ return {
59
+ id: `bankr:${agent.id ?? agent.name ?? agent.slug}`,
60
+ nativeId: agent.id ?? agent.slug ?? "",
61
+ name: agent.name ?? "Bankr Agent",
62
+ description: agent.description ?? "",
63
+ categories: agent.categories ?? ["defi", "trading"],
64
+ capabilities: agent.capabilities ?? [agent.description ?? ""].filter(Boolean),
65
+ source: "bankr",
66
+ protocol: "http",
67
+ endpoints: {
68
+ http: agent.endpoint ?? `${BANKR_API}/agent/prompt`,
69
+ },
70
+ pricing: {
71
+ model: agent.pricing?.model ?? "per-call",
72
+ amount: agent.pricing?.amount ?? "0.01",
73
+ currency: agent.pricing?.currency ?? "USDC",
74
+ },
75
+ verified: agent.verified ?? true,
76
+ raw: agent,
77
+ };
78
+ }
79
+ //# sourceMappingURL=bankr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bankr.js","sourceRoot":"","sources":["../../src/sources/bankr.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWjD,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IACzC,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,aAAa,EAAE,CAuB/E;AAED,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAajD,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IACzC,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,aAAa,EAAE,CAyB/E;AAED,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
@@ -11,6 +11,8 @@ import { a2aWellknownAdapter } from "./a2a-wellknown.js";
11
11
  import { l402DirectoryAdapter } from "./l402-directory.js";
12
12
  import { adpAdapter } from "./adp.js";
13
13
  import { skillsAdapter } from "./skills.js";
14
+ import { bankrAdapter } from "./bankr.js";
15
+ import { locusAdapter } from "./locus.js";
14
16
  export function createAllSources(config) {
15
17
  const sources = [
16
18
  mcpRegistryAdapter,
@@ -21,6 +23,8 @@ export function createAllSources(config) {
21
23
  l402DirectoryAdapter,
22
24
  adpAdapter,
23
25
  skillsAdapter,
26
+ bankrAdapter,
27
+ locusAdapter,
24
28
  ];
25
29
  // Add Kompass registry if config provided
26
30
  if (config?.kompassConfig) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAW5C,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC5D,MAAM,OAAO,GAAoB;QAC/B,kBAAkB;QAClB,UAAU;QACV,oBAAoB;QACpB,oBAAoB,CAAC,MAAM,EAAE,cAAc,IAAI,cAAc,CAAC;QAC9D,mBAAmB;QACnB,oBAAoB;QACpB,UAAU;QACV,aAAa;KACd,CAAC;IAEF,0CAA0C;IAC1C,IAAI,MAAM,EAAE,aAAa,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,yCAAyC;IACzC,IAAI,MAAM,EAAE,cAAc,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,cAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAW1C,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC5D,MAAM,OAAO,GAAoB;QAC/B,kBAAkB;QAClB,UAAU;QACV,oBAAoB;QACpB,oBAAoB,CAAC,MAAM,EAAE,cAAc,IAAI,cAAc,CAAC;QAC9D,mBAAmB;QACnB,oBAAoB;QACpB,UAAU;QACV,aAAa;QACb,YAAY;QACZ,YAAY;KACb,CAAC;IAEF,0CAA0C;IAC1C,IAAI,MAAM,EAAE,aAAa,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,yCAAyC;IACzC,IAAI,MAAM,EAAE,cAAc,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,cAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Locus Wrapped API Source Adapter
3
+ * Fetches Locus's live API catalog and indexes 50+ pay-per-use providers
4
+ * as discoverable capabilities. Each wrapped API becomes a searchable agent.
5
+ * Agents pay per-call via USDC on Base — no upstream API keys needed.
6
+ *
7
+ * Docs: https://beta.paywithlocus.com/skill.md
8
+ * Live index: https://beta.paywithlocus.com/wapi/index.md
9
+ */
10
+ import type { SourceAdapter } from "./types.js";
11
+ export declare const locusAdapter: SourceAdapter;
12
+ //# sourceMappingURL=locus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locus.d.ts","sourceRoot":"","sources":["../../src/sources/locus.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAqEnF,eAAO,MAAM,YAAY,EAAE,aA4C1B,CAAC"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Locus Wrapped API Source Adapter
3
+ * Fetches Locus's live API catalog and indexes 50+ pay-per-use providers
4
+ * as discoverable capabilities. Each wrapped API becomes a searchable agent.
5
+ * Agents pay per-call via USDC on Base — no upstream API keys needed.
6
+ *
7
+ * Docs: https://beta.paywithlocus.com/skill.md
8
+ * Live index: https://beta.paywithlocus.com/wapi/index.md
9
+ */
10
+ const LOCUS_API = "https://beta-api.paywithlocus.com/api";
11
+ const WAPI_INDEX_URL = "https://beta.paywithlocus.com/wapi/index.md";
12
+ // Cache fetched providers — refresh every 10 minutes
13
+ let providerCache = null;
14
+ let cacheTime = 0;
15
+ const CACHE_TTL = 10 * 60 * 1000;
16
+ /**
17
+ * Parse the live markdown index from Locus into structured provider data.
18
+ * The index is a markdown table with columns: Provider, Category, Endpoints, Description
19
+ */
20
+ function parseMarkdownIndex(md) {
21
+ const providers = [];
22
+ const lines = md.split("\n");
23
+ for (const line of lines) {
24
+ // Match table rows: | [Provider Name](url) | Category | Endpoints | Description |
25
+ const match = line.match(/^\| \[([^\]]+)\]\(https:\/\/[^)]*\/wapi\/([^.]+)\.md\)\s*\|\s*([^|]+)\|\s*([^|]+)\|\s*([^|]+)\|/);
26
+ if (match) {
27
+ providers.push({
28
+ name: match[1].trim(),
29
+ slug: match[2].trim(),
30
+ category: match[3].trim().toLowerCase(),
31
+ endpoints: match[4].trim(),
32
+ description: match[5].trim(),
33
+ });
34
+ }
35
+ }
36
+ return providers;
37
+ }
38
+ async function fetchProviders(timeout) {
39
+ if (providerCache && Date.now() - cacheTime < CACHE_TTL) {
40
+ return providerCache;
41
+ }
42
+ try {
43
+ const res = await fetch(WAPI_INDEX_URL, {
44
+ signal: AbortSignal.timeout(timeout),
45
+ });
46
+ if (!res.ok)
47
+ return providerCache ?? [];
48
+ const md = await res.text();
49
+ const parsed = parseMarkdownIndex(md);
50
+ if (parsed.length > 0) {
51
+ providerCache = parsed;
52
+ cacheTime = Date.now();
53
+ }
54
+ return providerCache ?? [];
55
+ }
56
+ catch {
57
+ return providerCache ?? [];
58
+ }
59
+ }
60
+ export const locusAdapter = {
61
+ name: "locus",
62
+ displayName: "Locus Wrapped APIs",
63
+ async search(query, options) {
64
+ const limit = options?.limit ?? 20;
65
+ const timeout = options?.timeout ?? 10000;
66
+ const lower = query.toLowerCase();
67
+ const terms = lower.split(/\s+/).filter(t => t.length > 2);
68
+ const providers = await fetchProviders(timeout);
69
+ // Score each provider by relevance
70
+ const scored = providers.map(provider => {
71
+ let score = 0;
72
+ const searchText = `${provider.name} ${provider.description} ${provider.category} ${provider.endpoints}`.toLowerCase();
73
+ for (const term of terms) {
74
+ if (provider.name.toLowerCase().includes(term))
75
+ score += 5;
76
+ if (provider.description.toLowerCase().includes(term))
77
+ score += 3;
78
+ if (provider.endpoints.toLowerCase().includes(term))
79
+ score += 2;
80
+ if (provider.category.includes(term))
81
+ score += 4;
82
+ if (searchText.includes(term))
83
+ score += 1;
84
+ }
85
+ return { provider, score };
86
+ })
87
+ .filter(s => s.score > 0)
88
+ .sort((a, b) => b.score - a.score)
89
+ .slice(0, limit);
90
+ return scored.map(s => mapLocusProvider(s.provider));
91
+ },
92
+ async ping() {
93
+ try {
94
+ const res = await fetch(WAPI_INDEX_URL, {
95
+ signal: AbortSignal.timeout(5000),
96
+ });
97
+ return res.ok;
98
+ }
99
+ catch {
100
+ return false;
101
+ }
102
+ },
103
+ };
104
+ function mapLocusProvider(provider) {
105
+ const endpointList = provider.endpoints.split(",").map(e => e.trim()).slice(0, 5);
106
+ return {
107
+ id: `locus:${provider.slug}`,
108
+ nativeId: provider.slug,
109
+ name: `${provider.name} (via Locus)`,
110
+ description: `${provider.description} Pay-per-use via USDC — no API key needed.`,
111
+ categories: [provider.category.split(" / ")[0].toLowerCase(), "api", "pay-per-use"],
112
+ capabilities: endpointList.map(e => `${provider.name}: ${e}`),
113
+ source: "locus",
114
+ protocol: "http",
115
+ endpoints: {
116
+ http: `${LOCUS_API}/wrapped/${provider.slug}`,
117
+ },
118
+ pricing: {
119
+ model: "per-call",
120
+ amount: "0.01",
121
+ currency: "USDC",
122
+ },
123
+ verified: true,
124
+ lastSeen: Date.now(),
125
+ raw: {
126
+ type: "locus-wrapped-api",
127
+ provider: provider.slug,
128
+ category: provider.category,
129
+ endpoints: endpointList,
130
+ allEndpoints: provider.endpoints,
131
+ },
132
+ };
133
+ }
134
+ //# sourceMappingURL=locus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locus.js","sourceRoot":"","sources":["../../src/sources/locus.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * MCP Registry Source Adapter
3
- * Crawls registry.modelcontextprotocol.io for MCP servers
4
- * No auth required. Public REST API with cursor pagination.
3
+ * Fetches servers from registry.modelcontextprotocol.io
4
+ * Uses local cache + text search against descriptions (not just names)
5
5
  */
6
6
  import type { SourceAdapter } from "./types.js";
7
7
  export declare const mcpRegistryAdapter: SourceAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-registry.d.ts","sourceRoot":"","sources":["../../src/sources/mcp-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAcnF,eAAO,MAAM,kBAAkB,EAAE,aA2DhC,CAAC"}
1
+ {"version":3,"file":"mcp-registry.d.ts","sourceRoot":"","sources":["../../src/sources/mcp-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAqC,MAAM,YAAY,CAAC;AAwFnF,eAAO,MAAM,kBAAkB,EAAE,aA0ChC,CAAC"}
@@ -1,48 +1,102 @@
1
1
  /**
2
2
  * MCP Registry Source Adapter
3
- * Crawls registry.modelcontextprotocol.io for MCP servers
4
- * No auth required. Public REST API with cursor pagination.
3
+ * Fetches servers from registry.modelcontextprotocol.io
4
+ * Uses local cache + text search against descriptions (not just names)
5
5
  */
6
6
  const BASE_URL = "https://registry.modelcontextprotocol.io";
7
+ // In-memory cache of all servers — fetched once, reused
8
+ let serverCache = null;
9
+ let cacheTime = 0;
10
+ const CACHE_TTL = 10 * 60 * 1000; // 10 minutes
11
+ async function fetchAllServers(timeout) {
12
+ // Return cache if fresh
13
+ if (serverCache && Date.now() - cacheTime < CACHE_TTL) {
14
+ return serverCache;
15
+ }
16
+ const allServers = [];
17
+ let cursor;
18
+ // Paginate through all servers (max 3 pages of 96)
19
+ for (let page = 0; page < 3; page++) {
20
+ const url = new URL("/v0.1/servers", BASE_URL);
21
+ url.searchParams.set("limit", "96");
22
+ url.searchParams.set("version", "latest");
23
+ if (cursor)
24
+ url.searchParams.set("cursor", cursor);
25
+ const res = await fetch(url.toString(), { signal: AbortSignal.timeout(timeout) });
26
+ if (!res.ok)
27
+ break;
28
+ const data = await res.json();
29
+ const servers = (data.servers ?? []).map((item) => item.server ?? item);
30
+ allServers.push(...servers);
31
+ cursor = data.metadata?.nextCursor ?? data.nextCursor;
32
+ if (!cursor)
33
+ break;
34
+ }
35
+ serverCache = allServers;
36
+ cacheTime = Date.now();
37
+ return allServers;
38
+ }
39
+ /**
40
+ * Search servers locally by matching query against name + description.
41
+ * Much better than the registry's keyword search which only matches names.
42
+ */
43
+ function searchLocally(servers, query, limit) {
44
+ const queryTerms = query.toLowerCase().split(/\s+/).filter((t) => t.length > 2);
45
+ return servers
46
+ .map((server) => {
47
+ const text = `${server.name} ${server.description ?? ""}`.toLowerCase();
48
+ let score = 0;
49
+ for (const term of queryTerms) {
50
+ // Exact word match in description
51
+ if (text.includes(term))
52
+ score += 3;
53
+ // Name match is stronger
54
+ if (server.name.toLowerCase().includes(term))
55
+ score += 5;
56
+ }
57
+ // Bonus for having remote endpoints (actually callable)
58
+ if (server.remotes && server.remotes.length > 0)
59
+ score += 2;
60
+ // Bonus for no auth required
61
+ const noAuth = server.remotes?.some((r) => !r.headers?.some((h) => h.isRequired && h.name.toLowerCase() === "authorization"));
62
+ if (noAuth)
63
+ score += 1;
64
+ return { server, score };
65
+ })
66
+ .filter((s) => s.score > 0)
67
+ .sort((a, b) => b.score - a.score)
68
+ .slice(0, limit)
69
+ .map((s) => s.server);
70
+ }
7
71
  export const mcpRegistryAdapter = {
8
72
  name: "mcp-registry",
9
73
  displayName: "MCP Registry (Anthropic)",
10
74
  async search(query, options) {
11
- const limit = options?.limit ?? 50;
12
- const timeout = options?.timeout ?? 10000;
13
- // MCP Registry uses keyword search, not semantic.
14
- // Expand user intent into multiple keyword searches to improve recall.
15
- const searchTerms = expandQueryToKeywords(query);
16
- const allServers = [];
17
- const seenNames = new Set();
75
+ const limit = options?.limit ?? 20;
76
+ const timeout = options?.timeout ?? 15000;
18
77
  try {
19
- // Run searches in parallel for speed (max 3 terms)
20
- const results = await Promise.allSettled(searchTerms.slice(0, 3).map(async (term) => {
78
+ const allServers = await fetchAllServers(timeout);
79
+ const matched = searchLocally(allServers, query, limit);
80
+ return matched.map(mapMcpServer);
81
+ }
82
+ catch {
83
+ // Fallback to direct API search if cache fetch fails
84
+ try {
21
85
  const url = new URL("/v0.1/servers", BASE_URL);
22
- url.searchParams.set("limit", String(Math.min(limit, 20)));
23
- url.searchParams.set("search", term);
86
+ url.searchParams.set("limit", String(limit));
87
+ if (query)
88
+ url.searchParams.set("search", query.split(/\s+/)[0]); // Single word fallback
24
89
  url.searchParams.set("version", "latest");
25
90
  const res = await fetch(url.toString(), { signal: AbortSignal.timeout(timeout) });
26
91
  if (!res.ok)
27
92
  return [];
28
93
  const data = await res.json();
29
- const rawServers = data.servers ?? data.data ?? [];
30
- return rawServers.map((item) => item.server ?? item);
31
- }));
32
- for (const result of results) {
33
- if (result.status === "fulfilled") {
34
- for (const server of result.value) {
35
- if (!seenNames.has(server.name)) {
36
- seenNames.add(server.name);
37
- allServers.push(server);
38
- }
39
- }
40
- }
94
+ const servers = (data.servers ?? []).map((item) => item.server ?? item);
95
+ return servers.slice(0, limit).map(mapMcpServer);
96
+ }
97
+ catch {
98
+ return [];
41
99
  }
42
- return allServers.slice(0, limit).map((server) => mapMcpServer(server));
43
- }
44
- catch {
45
- return [];
46
100
  }
47
101
  },
48
102
  async ping() {
@@ -58,7 +112,7 @@ export const mcpRegistryAdapter = {
58
112
  },
59
113
  };
60
114
  function mapMcpServer(server) {
61
- const remoteUrl = server.remotes?.[0]?.url;
115
+ const remote = server.remotes?.find((r) => !r.headers?.some((h) => h.isRequired && h.name.toLowerCase() === "authorization")) ?? server.remotes?.[0];
62
116
  const categories = extractCategories(server.description ?? server.name);
63
117
  return {
64
118
  id: `mcp-registry:${server.name}`,
@@ -70,62 +124,14 @@ function mapMcpServer(server) {
70
124
  source: "mcp-registry",
71
125
  protocol: "mcp",
72
126
  endpoints: {
73
- mcp: remoteUrl,
74
- http: server.website ?? server.repo,
127
+ mcp: remote?.url,
128
+ http: server.websiteUrl ?? server.website ?? server.repository?.url ?? server.repo,
75
129
  },
76
130
  pricing: { model: "free" },
77
- verified: !!server.repo,
131
+ verified: !!remote,
78
132
  raw: server,
79
133
  };
80
134
  }
81
- /**
82
- * Expand natural language query into MCP Registry keyword searches.
83
- * "search the web for DeFi news" → ["web search", "exa", "DeFi", "news"]
84
- * "query postgres database" → ["postgres", "database", "sql"]
85
- */
86
- function expandQueryToKeywords(query) {
87
- const terms = [];
88
- const lower = query.toLowerCase();
89
- // Always include the raw query words (2+ chars)
90
- const words = lower.split(/\s+/).filter((w) => w.length > 2);
91
- terms.push(...words.slice(0, 3));
92
- // Intent → tool name mappings (what users say → what MCP servers are called)
93
- const expansions = {
94
- "search": ["exa", "web search", "tavily", "search"],
95
- "web": ["exa", "web", "browser", "scrape"],
96
- "scrape": ["scrape", "crawl", "browser", "firecrawl"],
97
- "database": ["postgres", "mysql", "sqlite", "database", "sql"],
98
- "sql": ["postgres", "mysql", "sql", "database"],
99
- "postgres": ["postgres"],
100
- "weather": ["weather"],
101
- "email": ["email", "gmail", "mail"],
102
- "github": ["github", "git"],
103
- "slack": ["slack"],
104
- "file": ["file", "filesystem", "s3"],
105
- "image": ["image", "dalle", "vision"],
106
- "code": ["code", "github", "lint"],
107
- "defi": ["defi", "exa", "blockchain"],
108
- "crypto": ["crypto", "blockchain", "exa"],
109
- "news": ["news", "exa", "search"],
110
- "data": ["data", "analytics"],
111
- "deploy": ["deploy", "vercel", "aws"],
112
- "document": ["document", "pdf", "markdown"],
113
- "translate": ["translate", "language"],
114
- "calendar": ["calendar", "google"],
115
- "map": ["map", "location", "geo"],
116
- "payment": ["payment", "stripe"],
117
- "ai": ["openai", "anthropic", "ai"],
118
- "research": ["exa", "search", "research"],
119
- "analyze": ["analytics", "data", "chart"],
120
- };
121
- for (const word of words) {
122
- if (expansions[word]) {
123
- terms.push(...expansions[word]);
124
- }
125
- }
126
- // Deduplicate
127
- return [...new Set(terms)];
128
- }
129
135
  function extractCategories(text) {
130
136
  const lower = text.toLowerCase();
131
137
  const cats = [];
@@ -136,6 +142,8 @@ function extractCategories(text) {
136
142
  file: "tools", browser: "tools", web: "tools",
137
143
  ai: "ai", llm: "ai", model: "ai",
138
144
  image: "media", video: "media", audio: "media",
145
+ trading: "trading", market: "trading", price: "trading",
146
+ email: "communication", slack: "communication", chat: "communication",
139
147
  };
140
148
  for (const [keyword, cat] of Object.entries(keywords)) {
141
149
  if (lower.includes(keyword) && !cats.includes(cat))