@1ly/mcp-server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +330 -0
  3. package/dist/budget.d.ts +7 -0
  4. package/dist/budget.d.ts.map +1 -0
  5. package/dist/budget.js +64 -0
  6. package/dist/budget.js.map +1 -0
  7. package/dist/config.d.ts +53 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +37 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/http.d.ts +26 -0
  12. package/dist/http.d.ts.map +1 -0
  13. package/dist/http.js +85 -0
  14. package/dist/http.js.map +1 -0
  15. package/dist/index.d.ts +3 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +87 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/mcp.d.ts +22 -0
  20. package/dist/mcp.d.ts.map +1 -0
  21. package/dist/mcp.js +23 -0
  22. package/dist/mcp.js.map +1 -0
  23. package/dist/selftest.d.ts +2 -0
  24. package/dist/selftest.d.ts.map +1 -0
  25. package/dist/selftest.js +57 -0
  26. package/dist/selftest.js.map +1 -0
  27. package/dist/tools/call.d.ts +36 -0
  28. package/dist/tools/call.d.ts.map +1 -0
  29. package/dist/tools/call.js +131 -0
  30. package/dist/tools/call.js.map +1 -0
  31. package/dist/tools/create-link.d.ts +44 -0
  32. package/dist/tools/create-link.d.ts.map +1 -0
  33. package/dist/tools/create-link.js +62 -0
  34. package/dist/tools/create-link.js.map +1 -0
  35. package/dist/tools/delete-link.d.ts +22 -0
  36. package/dist/tools/delete-link.d.ts.map +1 -0
  37. package/dist/tools/delete-link.js +37 -0
  38. package/dist/tools/delete-link.js.map +1 -0
  39. package/dist/tools/details.d.ts +23 -0
  40. package/dist/tools/details.d.ts.map +1 -0
  41. package/dist/tools/details.js +101 -0
  42. package/dist/tools/details.js.map +1 -0
  43. package/dist/tools/get-stats.d.ts +26 -0
  44. package/dist/tools/get-stats.d.ts.map +1 -0
  45. package/dist/tools/get-stats.js +44 -0
  46. package/dist/tools/get-stats.js.map +1 -0
  47. package/dist/tools/list-links.d.ts +18 -0
  48. package/dist/tools/list-links.d.ts.map +1 -0
  49. package/dist/tools/list-links.js +30 -0
  50. package/dist/tools/list-links.js.map +1 -0
  51. package/dist/tools/review.d.ts +35 -0
  52. package/dist/tools/review.d.ts.map +1 -0
  53. package/dist/tools/review.js +73 -0
  54. package/dist/tools/review.js.map +1 -0
  55. package/dist/tools/search.d.ts +40 -0
  56. package/dist/tools/search.d.ts.map +1 -0
  57. package/dist/tools/search.js +79 -0
  58. package/dist/tools/search.js.map +1 -0
  59. package/dist/tools/update-link.d.ts +43 -0
  60. package/dist/tools/update-link.d.ts.map +1 -0
  61. package/dist/tools/update-link.js +61 -0
  62. package/dist/tools/update-link.js.map +1 -0
  63. package/dist/types.d.ts +61 -0
  64. package/dist/types.d.ts.map +1 -0
  65. package/dist/types.js +3 -0
  66. package/dist/types.js.map +1 -0
  67. package/dist/wallet/evm.d.ts +48 -0
  68. package/dist/wallet/evm.d.ts.map +1 -0
  69. package/dist/wallet/evm.js +229 -0
  70. package/dist/wallet/evm.js.map +1 -0
  71. package/dist/wallet/solana.d.ts +6 -0
  72. package/dist/wallet/solana.d.ts.map +1 -0
  73. package/dist/wallet/solana.js +95 -0
  74. package/dist/wallet/solana.js.map +1 -0
  75. package/package.json +70 -0
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detailsTool = void 0;
4
+ exports.handleDetails = handleDetails;
5
+ const zod_1 = require("zod");
6
+ const http_js_1 = require("../http.js");
7
+ const mcp_js_1 = require("../mcp.js");
8
+ exports.detailsTool = {
9
+ name: "1ly_get_details",
10
+ description: "Get detailed information about a specific API on 1ly.store, including pricing, reviews, and payment info.",
11
+ inputSchema: {
12
+ type: "object",
13
+ properties: {
14
+ endpoint: {
15
+ type: "string",
16
+ description: "API endpoint path (e.g., 'joe/weather' or '/api/link/joe/weather')",
17
+ },
18
+ },
19
+ required: ["endpoint"],
20
+ },
21
+ };
22
+ const InputSchema = zod_1.z.object({
23
+ endpoint: zod_1.z.string(),
24
+ });
25
+ function parseEndpoint(endpoint) {
26
+ const cleaned = endpoint.replace(/^\/api\/link\//, "").replace(/^\//, "");
27
+ const [username, slug] = cleaned.split("/");
28
+ if (!username || !slug) {
29
+ throw new Error(`Invalid endpoint format. Expected 'username/slug' or '/api/link/username/slug'`);
30
+ }
31
+ return { username, slug };
32
+ }
33
+ async function handleDetails(args, config) {
34
+ const input = InputSchema.parse(args);
35
+ const { username, slug } = parseEndpoint(input.endpoint);
36
+ const linkUrl = `${config.apiBase}/api/link/${username}/${slug}`;
37
+ const linkResponse = await (0, http_js_1.fetchWithTimeout)(linkUrl, {
38
+ headers: {
39
+ Accept: "application/json",
40
+ },
41
+ });
42
+ let linkData = {};
43
+ let paymentInfo = {};
44
+ if (linkResponse.status === 402) {
45
+ const x402Header = linkResponse.headers.get("X-Payment-Requirements");
46
+ if (x402Header) {
47
+ try {
48
+ paymentInfo = JSON.parse(x402Header);
49
+ }
50
+ catch {
51
+ // Ignore parse errors
52
+ }
53
+ }
54
+ try {
55
+ linkData = (await linkResponse.json());
56
+ }
57
+ catch {
58
+ // Response might not be JSON for 402
59
+ }
60
+ }
61
+ else if (linkResponse.ok) {
62
+ linkData = (await linkResponse.json());
63
+ }
64
+ else {
65
+ await (0, http_js_1.assertOk)(linkResponse, "Failed to get details");
66
+ }
67
+ const reviewsUrl = `${config.apiBase}/api/reviews?username=${username}&slug=${slug}&limit=5`;
68
+ let reviewsData = null;
69
+ try {
70
+ const reviewsResponse = await (0, http_js_1.fetchWithTimeout)(reviewsUrl);
71
+ if (reviewsResponse.ok) {
72
+ reviewsData = (await reviewsResponse.json());
73
+ }
74
+ }
75
+ catch (error) {
76
+ // Reviews fetch is optional; include context in error logs if needed
77
+ if (error instanceof http_js_1.HttpError) {
78
+ // Swallow but could be logged in the future
79
+ }
80
+ }
81
+ const result = {
82
+ endpoint: `/api/link/${username}/${slug}`,
83
+ fullUrl: `${config.apiBase}/api/link/${username}/${slug}`,
84
+ ...linkData,
85
+ paymentInfo: {
86
+ networks: ["solana", "base"],
87
+ ...paymentInfo,
88
+ },
89
+ reviews: reviewsData
90
+ ? {
91
+ stats: reviewsData.stats,
92
+ recent: reviewsData.reviews.slice(0, 5).map((r) => ({
93
+ positive: r.positive,
94
+ comment: r.comment,
95
+ })),
96
+ }
97
+ : null,
98
+ };
99
+ return (0, mcp_js_1.mcpOk)(result);
100
+ }
101
+ //# sourceMappingURL=details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details.js","sourceRoot":"","sources":["../../src/tools/details.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Config } from "../config.js";
2
+ export declare const getStatsTool: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: {
6
+ type: "object";
7
+ properties: {
8
+ period: {
9
+ type: string;
10
+ enum: string[];
11
+ };
12
+ linkId: {
13
+ type: string;
14
+ };
15
+ };
16
+ required: never[];
17
+ };
18
+ };
19
+ export declare function handleGetStats(args: unknown, config: Config): Promise<{
20
+ isError?: true | undefined;
21
+ content: {
22
+ type: "text";
23
+ text: string;
24
+ }[];
25
+ }>;
26
+ //# sourceMappingURL=get-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-stats.d.ts","sourceRoot":"","sources":["../../src/tools/get-stats.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAWxB,CAAC;AAOF,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;;;;;;GAoBjE"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getStatsTool = void 0;
4
+ exports.handleGetStats = handleGetStats;
5
+ const zod_1 = require("zod");
6
+ const http_js_1 = require("../http.js");
7
+ const mcp_js_1 = require("../mcp.js");
8
+ exports.getStatsTool = {
9
+ name: "1ly_get_stats",
10
+ description: "Get store or link stats (requires ONELY_API_KEY).",
11
+ inputSchema: {
12
+ type: "object",
13
+ properties: {
14
+ period: { type: "string", enum: ["7d", "30d", "90d", "all"] },
15
+ linkId: { type: "string" },
16
+ },
17
+ required: [],
18
+ },
19
+ };
20
+ const InputSchema = zod_1.z.object({
21
+ period: zod_1.z.enum(["7d", "30d", "90d", "all"]).optional(),
22
+ linkId: zod_1.z.string().uuid().optional(),
23
+ });
24
+ async function handleGetStats(args, config) {
25
+ const input = InputSchema.parse(args);
26
+ if (!config.apiKey) {
27
+ throw new Error("Missing ONELY_API_KEY for stats");
28
+ }
29
+ const url = new URL(`${config.apiBase}/api/v1/stats`);
30
+ if (input.period)
31
+ url.searchParams.set("period", input.period);
32
+ if (input.linkId)
33
+ url.searchParams.set("linkId", input.linkId);
34
+ const res = await (0, http_js_1.fetchWithTimeout)(url.toString(), {
35
+ method: "GET",
36
+ headers: {
37
+ Authorization: `Bearer ${config.apiKey}`,
38
+ },
39
+ });
40
+ await (0, http_js_1.assertOk)(res, "Get stats failed");
41
+ const data = await res.json();
42
+ return (0, mcp_js_1.mcpOk)(data);
43
+ }
44
+ //# sourceMappingURL=get-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-stats.js","sourceRoot":"","sources":["../../src/tools/get-stats.ts"],"names":[],"mappings":";;;AAuBA,wCAoBC;AA3CD,6BAAwB;AAExB,wCAAwD;AACxD,sCAAkC;AAErB,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,mDAAmD;IAChE,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;YAC7D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC3B;QACD,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAEI,KAAK,UAAU,cAAc,CAAC,IAAa,EAAE,MAAc;IAChE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,KAAK,CAAC,MAAM;QAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE/D,MAAM,GAAG,GAAG,MAAM,IAAA,0BAAgB,EAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;QACjD,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;SACzC;KACF,CAAC,CAAC;IAEH,MAAM,IAAA,kBAAQ,EAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,IAAA,cAAK,EAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Config } from "../config.js";
2
+ export declare const listLinksTool: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: {
6
+ type: "object";
7
+ properties: {};
8
+ required: never[];
9
+ };
10
+ };
11
+ export declare function handleListLinks(_args: unknown, config: Config): Promise<{
12
+ isError?: true | undefined;
13
+ content: {
14
+ type: "text";
15
+ text: string;
16
+ }[];
17
+ }>;
18
+ //# sourceMappingURL=list-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-links.d.ts","sourceRoot":"","sources":["../../src/tools/list-links.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,eAAO,MAAM,aAAa;;;;;;;;CAQzB,CAAC;AAEF,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;;;;;;GAenE"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listLinksTool = void 0;
4
+ exports.handleListLinks = handleListLinks;
5
+ const http_js_1 = require("../http.js");
6
+ const mcp_js_1 = require("../mcp.js");
7
+ exports.listLinksTool = {
8
+ name: "1ly_list_links",
9
+ description: "List API links for the authenticated store (requires ONELY_API_KEY).",
10
+ inputSchema: {
11
+ type: "object",
12
+ properties: {},
13
+ required: [],
14
+ },
15
+ };
16
+ async function handleListLinks(_args, config) {
17
+ if (!config.apiKey) {
18
+ throw new Error("Missing ONELY_API_KEY for list links");
19
+ }
20
+ const res = await (0, http_js_1.fetchWithTimeout)(`${config.apiBase}/api/v1/links`, {
21
+ method: "GET",
22
+ headers: {
23
+ Authorization: `Bearer ${config.apiKey}`,
24
+ },
25
+ });
26
+ await (0, http_js_1.assertOk)(res, "List links failed");
27
+ const data = await res.json();
28
+ return (0, mcp_js_1.mcpOk)(data);
29
+ }
30
+ //# sourceMappingURL=list-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-links.js","sourceRoot":"","sources":["../../src/tools/list-links.ts"],"names":[],"mappings":";;;AAcA,0CAeC;AA5BD,wCAAwD;AACxD,sCAAkC;AAErB,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,sEAAsE;IACnF,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEK,KAAK,UAAU,eAAe,CAAC,KAAc,EAAE,MAAc;IAClE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,IAAA,0BAAgB,EAAC,GAAG,MAAM,CAAC,OAAO,eAAe,EAAE;QACnE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;SACzC;KACF,CAAC,CAAC;IAEH,MAAM,IAAA,kBAAQ,EAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,IAAA,cAAK,EAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { Config } from "../config.js";
2
+ export declare const reviewTool: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: {
6
+ type: "object";
7
+ properties: {
8
+ purchaseId: {
9
+ type: string;
10
+ description: string;
11
+ };
12
+ reviewToken: {
13
+ type: string;
14
+ description: string;
15
+ };
16
+ positive: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ comment: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ };
25
+ required: string[];
26
+ };
27
+ };
28
+ export declare function handleReview(args: unknown, config: Config): Promise<{
29
+ isError?: true | undefined;
30
+ content: {
31
+ type: "text";
32
+ text: string;
33
+ }[];
34
+ }>;
35
+ //# sourceMappingURL=review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/tools/review.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAM3C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;CA0BtB,CAAC;AASF,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;;;;;;GAmC/D"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reviewTool = void 0;
4
+ exports.handleReview = handleReview;
5
+ const zod_1 = require("zod");
6
+ const solana_js_1 = require("../wallet/solana.js");
7
+ const evm_js_1 = require("../wallet/evm.js");
8
+ const http_js_1 = require("../http.js");
9
+ const mcp_js_1 = require("../mcp.js");
10
+ exports.reviewTool = {
11
+ name: "1ly_review",
12
+ description: "Leave a review for a completed purchase on 1ly.store. Use the purchaseId and reviewToken from the _1ly metadata returned by 1ly_call.",
13
+ inputSchema: {
14
+ type: "object",
15
+ properties: {
16
+ purchaseId: {
17
+ type: "string",
18
+ description: "Purchase ID from _1ly.purchaseId",
19
+ },
20
+ reviewToken: {
21
+ type: "string",
22
+ description: "Review token from _1ly.reviewToken",
23
+ },
24
+ positive: {
25
+ type: "boolean",
26
+ description: "true for positive review, false for negative",
27
+ },
28
+ comment: {
29
+ type: "string",
30
+ description: "Optional review comment (max 500 characters)",
31
+ },
32
+ },
33
+ required: ["purchaseId", "reviewToken", "positive"],
34
+ },
35
+ };
36
+ const InputSchema = zod_1.z.object({
37
+ purchaseId: zod_1.z.string(),
38
+ reviewToken: zod_1.z.string(),
39
+ positive: zod_1.z.boolean(),
40
+ comment: zod_1.z.string().max(500).optional(),
41
+ });
42
+ async function handleReview(args, config) {
43
+ const input = InputSchema.parse(args);
44
+ if (!config.wallet) {
45
+ throw new Error("Missing wallet config: set ONELY_WALLET_TYPE and ONELY_WALLET_KEY");
46
+ }
47
+ const walletAddress = config.wallet.type === "solana"
48
+ ? await (0, solana_js_1.getWalletAddress)(config.wallet.type, config.wallet.key)
49
+ : await (0, evm_js_1.getEvmWalletAddress)(config.wallet.key);
50
+ const response = await (0, http_js_1.fetchWithTimeout)(`${config.apiBase}/api/reviews`, {
51
+ method: "POST",
52
+ headers: {
53
+ "Content-Type": "application/json",
54
+ },
55
+ body: JSON.stringify({
56
+ purchaseId: input.purchaseId,
57
+ wallet: walletAddress,
58
+ token: input.reviewToken,
59
+ positive: input.positive,
60
+ comment: input.comment,
61
+ }),
62
+ });
63
+ await (0, http_js_1.assertOk)(response, "Review failed");
64
+ const data = (await response.json());
65
+ return (0, mcp_js_1.mcpOk)({
66
+ success: true,
67
+ reviewId: data.reviewId,
68
+ message: input.positive
69
+ ? "Positive review submitted!"
70
+ : "Negative review submitted.",
71
+ });
72
+ }
73
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/tools/review.ts"],"names":[],"mappings":";;;AA0CA,oCAmCC;AA7ED,6BAAwB;AAExB,mDAAuD;AACvD,6CAAuD;AACvD,wCAAwD;AACxD,sCAAkC;AAErB,QAAA,UAAU,GAAG;IACxB,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,uIAAuI;IACzI,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kCAAkC;aAChD;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oCAAoC;aAClD;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,8CAA8C;aAC5D;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8CAA8C;aAC5D;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,CAAC;KACpD;CACF,CAAC;AAEF,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;IACrB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAEI,KAAK,UAAU,YAAY,CAAC,IAAa,EAAE,MAAc;IAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;QACnD,CAAC,CAAC,MAAM,IAAA,4BAAgB,EAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QAC/D,CAAC,CAAC,MAAM,IAAA,4BAAmB,EAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,MAAM,IAAA,0BAAgB,EAAC,GAAG,MAAM,CAAC,OAAO,cAAc,EAAE;QACvE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,KAAK,CAAC,WAAW;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,IAAA,kBAAQ,EAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;IAE7D,OAAO,IAAA,cAAK,EAAC;QACX,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,KAAK,CAAC,QAAQ;YACrB,CAAC,CAAC,4BAA4B;YAC9B,CAAC,CAAC,4BAA4B;KACjC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { Config } from "../config.js";
2
+ export declare const searchTool: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: {
6
+ type: "object";
7
+ properties: {
8
+ query: {
9
+ type: string;
10
+ description: string;
11
+ };
12
+ type: {
13
+ type: string;
14
+ enum: string[];
15
+ description: string;
16
+ };
17
+ maxPrice: {
18
+ type: string;
19
+ description: string;
20
+ };
21
+ minPrice: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ limit: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ };
30
+ required: string[];
31
+ };
32
+ };
33
+ export declare function handleSearch(args: unknown, config: Config): Promise<{
34
+ isError?: true | undefined;
35
+ content: {
36
+ type: "text";
37
+ text: string;
38
+ }[];
39
+ }>;
40
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAK3C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BtB,CAAC;AAUF,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;;;;;;GAoC/D"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchTool = void 0;
4
+ exports.handleSearch = handleSearch;
5
+ const zod_1 = require("zod");
6
+ const http_js_1 = require("../http.js");
7
+ const mcp_js_1 = require("../mcp.js");
8
+ exports.searchTool = {
9
+ name: "1ly_search",
10
+ description: "Search for APIs and services on 1ly.store marketplace. Find APIs by keyword, filter by type and price.",
11
+ inputSchema: {
12
+ type: "object",
13
+ properties: {
14
+ query: {
15
+ type: "string",
16
+ description: "Search term (e.g., 'weather api', 'image generation')",
17
+ },
18
+ type: {
19
+ type: "string",
20
+ enum: ["api", "standard"],
21
+ description: "Filter by link type: 'api' for API endpoints, 'standard' for digital products",
22
+ },
23
+ maxPrice: {
24
+ type: "number",
25
+ description: "Maximum price in USD",
26
+ },
27
+ minPrice: {
28
+ type: "number",
29
+ description: "Minimum price in USD",
30
+ },
31
+ limit: {
32
+ type: "number",
33
+ description: "Number of results (default: 10, max: 50)",
34
+ },
35
+ },
36
+ required: ["query"],
37
+ },
38
+ };
39
+ const InputSchema = zod_1.z.object({
40
+ query: zod_1.z.string(),
41
+ type: zod_1.z.enum(["api", "standard"]).optional(),
42
+ maxPrice: zod_1.z.number().optional(),
43
+ minPrice: zod_1.z.number().optional(),
44
+ limit: zod_1.z.number().min(1).max(50).optional().default(10),
45
+ });
46
+ async function handleSearch(args, config) {
47
+ const input = InputSchema.parse(args);
48
+ const params = new URLSearchParams();
49
+ params.set("q", input.query);
50
+ params.set("limit", input.limit.toString());
51
+ if (input.type)
52
+ params.set("type", input.type);
53
+ if (input.maxPrice !== undefined)
54
+ params.set("maxPrice", input.maxPrice.toString());
55
+ if (input.minPrice !== undefined)
56
+ params.set("minPrice", input.minPrice.toString());
57
+ const url = `${config.apiBase}/api/discover?${params}`;
58
+ const response = await (0, http_js_1.fetchWithTimeout)(url);
59
+ await (0, http_js_1.assertOk)(response, "Search failed");
60
+ const data = (await response.json());
61
+ const simplified = {
62
+ results: data.results.map((r) => ({
63
+ title: r.title,
64
+ description: r.description,
65
+ endpoint: r.endpoint,
66
+ price: `$${r.price} ${r.currency}`,
67
+ type: r.type,
68
+ seller: r.seller.displayName || r.seller.username,
69
+ stats: {
70
+ buyers: r.stats.buyers,
71
+ rating: r.stats.rating ? `${r.stats.rating}%` : "No reviews",
72
+ },
73
+ })),
74
+ total: data.pagination.total,
75
+ showing: data.results.length,
76
+ };
77
+ return (0, mcp_js_1.mcpOk)(simplified);
78
+ }
79
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { Config } from "../config.js";
2
+ export declare const updateLinkTool: {
3
+ name: string;
4
+ description: string;
5
+ inputSchema: {
6
+ type: "object";
7
+ properties: {
8
+ id: {
9
+ type: string;
10
+ };
11
+ title: {
12
+ type: string;
13
+ };
14
+ url: {
15
+ type: string;
16
+ };
17
+ description: {
18
+ type: string;
19
+ };
20
+ slug: {
21
+ type: string;
22
+ };
23
+ price: {
24
+ type: string;
25
+ };
26
+ isPublic: {
27
+ type: string;
28
+ };
29
+ isStealth: {
30
+ type: string;
31
+ };
32
+ };
33
+ required: string[];
34
+ };
35
+ };
36
+ export declare function handleUpdateLink(args: unknown, config: Config): Promise<{
37
+ isError?: true | undefined;
38
+ content: {
39
+ type: "text";
40
+ text: string;
41
+ }[];
42
+ }>;
43
+ //# sourceMappingURL=update-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-link.d.ts","sourceRoot":"","sources":["../../src/tools/update-link.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiB1B,CAAC;AAaF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;;;;;;GA0BnE"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateLinkTool = void 0;
4
+ exports.handleUpdateLink = handleUpdateLink;
5
+ const zod_1 = require("zod");
6
+ const http_js_1 = require("../http.js");
7
+ const mcp_js_1 = require("../mcp.js");
8
+ exports.updateLinkTool = {
9
+ name: "1ly_update_link",
10
+ description: "Update an API link by id (requires ONELY_API_KEY).",
11
+ inputSchema: {
12
+ type: "object",
13
+ properties: {
14
+ id: { type: "string" },
15
+ title: { type: "string" },
16
+ url: { type: "string" },
17
+ description: { type: "string" },
18
+ slug: { type: "string" },
19
+ price: { type: "string" },
20
+ isPublic: { type: "boolean" },
21
+ isStealth: { type: "boolean" },
22
+ },
23
+ required: ["id"],
24
+ },
25
+ };
26
+ const InputSchema = zod_1.z.object({
27
+ id: zod_1.z.string().uuid(),
28
+ title: zod_1.z.string().min(1).max(200).optional(),
29
+ url: zod_1.z.string().url().optional(),
30
+ description: zod_1.z.string().max(500).nullable().optional(),
31
+ slug: zod_1.z.string().min(3).max(64).regex(/^[a-z0-9-]+$/).optional(),
32
+ price: zod_1.z.string().regex(/^\d+(\.\d{1,18})?$/).optional(),
33
+ isPublic: zod_1.z.boolean().optional(),
34
+ isStealth: zod_1.z.boolean().optional(),
35
+ });
36
+ async function handleUpdateLink(args, config) {
37
+ const input = InputSchema.parse(args);
38
+ if (!config.apiKey) {
39
+ throw new Error("Missing ONELY_API_KEY for update link");
40
+ }
41
+ const res = await (0, http_js_1.fetchWithTimeout)(`${config.apiBase}/api/v1/links/${input.id}`, {
42
+ method: "PATCH",
43
+ headers: {
44
+ "Content-Type": "application/json",
45
+ Authorization: `Bearer ${config.apiKey}`,
46
+ },
47
+ body: JSON.stringify({
48
+ title: input.title,
49
+ url: input.url,
50
+ description: input.description,
51
+ slug: input.slug,
52
+ price: input.price,
53
+ isPublic: input.isPublic,
54
+ isStealth: input.isStealth,
55
+ }),
56
+ });
57
+ await (0, http_js_1.assertOk)(res, "Update link failed");
58
+ const data = await res.json();
59
+ return (0, mcp_js_1.mcpOk)(data);
60
+ }
61
+ //# sourceMappingURL=update-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-link.js","sourceRoot":"","sources":["../../src/tools/update-link.ts"],"names":[],"mappings":"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"}