@unclick/mcp-server 0.2.3 → 0.2.4

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 (177) hide show
  1. package/README.md +139 -153
  2. package/dist/airtable-tool.d.ts +2 -0
  3. package/dist/airtable-tool.d.ts.map +1 -0
  4. package/dist/airtable-tool.js +154 -0
  5. package/dist/airtable-tool.js.map +1 -0
  6. package/dist/anthropic-tool.d.ts +3 -0
  7. package/dist/anthropic-tool.d.ts.map +1 -0
  8. package/dist/anthropic-tool.js +123 -0
  9. package/dist/anthropic-tool.js.map +1 -0
  10. package/dist/asana-tool.d.ts +8 -0
  11. package/dist/asana-tool.d.ts.map +1 -0
  12. package/dist/asana-tool.js +218 -0
  13. package/dist/asana-tool.js.map +1 -0
  14. package/dist/calendly-tool.d.ts +6 -0
  15. package/dist/calendly-tool.d.ts.map +1 -0
  16. package/dist/calendly-tool.js +182 -0
  17. package/dist/calendly-tool.js.map +1 -0
  18. package/dist/clickup-tool.d.ts +2 -0
  19. package/dist/clickup-tool.d.ts.map +1 -0
  20. package/dist/clickup-tool.js +153 -0
  21. package/dist/clickup-tool.js.map +1 -0
  22. package/dist/connectors/figma.d.ts +3 -0
  23. package/dist/connectors/figma.d.ts.map +1 -0
  24. package/dist/connectors/figma.js +18 -0
  25. package/dist/connectors/figma.js.map +1 -0
  26. package/dist/connectors/index.d.ts +3 -1
  27. package/dist/connectors/index.d.ts.map +1 -1
  28. package/dist/connectors/index.js +5 -1
  29. package/dist/connectors/index.js.map +1 -1
  30. package/dist/connectors/line.d.ts +3 -0
  31. package/dist/connectors/line.d.ts.map +1 -0
  32. package/dist/connectors/line.js +18 -0
  33. package/dist/connectors/line.js.map +1 -0
  34. package/dist/ebay-tool.d.ts +5 -0
  35. package/dist/ebay-tool.d.ts.map +1 -0
  36. package/dist/ebay-tool.js +179 -0
  37. package/dist/ebay-tool.js.map +1 -0
  38. package/dist/elevenlabs-tool.d.ts +6 -0
  39. package/dist/elevenlabs-tool.d.ts.map +1 -0
  40. package/dist/elevenlabs-tool.js +166 -0
  41. package/dist/elevenlabs-tool.js.map +1 -0
  42. package/dist/etsy-tool.d.ts +6 -0
  43. package/dist/etsy-tool.d.ts.map +1 -0
  44. package/dist/etsy-tool.js +125 -0
  45. package/dist/etsy-tool.js.map +1 -0
  46. package/dist/exchangerate-tool.d.ts +5 -0
  47. package/dist/exchangerate-tool.d.ts.map +1 -0
  48. package/dist/exchangerate-tool.js +139 -0
  49. package/dist/exchangerate-tool.js.map +1 -0
  50. package/dist/figma-tool.d.ts +8 -0
  51. package/dist/figma-tool.d.ts.map +1 -0
  52. package/dist/figma-tool.js +231 -0
  53. package/dist/figma-tool.js.map +1 -0
  54. package/dist/gdelt-tool.d.ts +5 -0
  55. package/dist/gdelt-tool.d.ts.map +1 -0
  56. package/dist/gdelt-tool.js +177 -0
  57. package/dist/gdelt-tool.js.map +1 -0
  58. package/dist/github-tool.d.ts +2 -0
  59. package/dist/github-tool.d.ts.map +1 -0
  60. package/dist/github-tool.js +165 -0
  61. package/dist/github-tool.js.map +1 -0
  62. package/dist/gitlab-tool.d.ts +2 -0
  63. package/dist/gitlab-tool.d.ts.map +1 -0
  64. package/dist/gitlab-tool.js +127 -0
  65. package/dist/gitlab-tool.js.map +1 -0
  66. package/dist/igdb-tool.d.ts +6 -0
  67. package/dist/igdb-tool.d.ts.map +1 -0
  68. package/dist/igdb-tool.js +140 -0
  69. package/dist/igdb-tool.js.map +1 -0
  70. package/dist/line-tool.d.ts +7 -0
  71. package/dist/line-tool.d.ts.map +1 -0
  72. package/dist/line-tool.js +188 -0
  73. package/dist/line-tool.js.map +1 -0
  74. package/dist/linear-tool.d.ts +2 -0
  75. package/dist/linear-tool.d.ts.map +1 -0
  76. package/dist/linear-tool.js +186 -0
  77. package/dist/linear-tool.js.map +1 -0
  78. package/dist/monday-tool.d.ts +7 -0
  79. package/dist/monday-tool.d.ts.map +1 -0
  80. package/dist/monday-tool.js +206 -0
  81. package/dist/monday-tool.js.map +1 -0
  82. package/dist/openai-tool.d.ts +6 -0
  83. package/dist/openai-tool.d.ts.map +1 -0
  84. package/dist/openai-tool.js +227 -0
  85. package/dist/openai-tool.js.map +1 -0
  86. package/dist/paypal-tool.d.ts +3 -0
  87. package/dist/paypal-tool.d.ts.map +1 -0
  88. package/dist/paypal-tool.js +157 -0
  89. package/dist/paypal-tool.js.map +1 -0
  90. package/dist/pinterest-tool.d.ts +7 -0
  91. package/dist/pinterest-tool.d.ts.map +1 -0
  92. package/dist/pinterest-tool.js +219 -0
  93. package/dist/pinterest-tool.js.map +1 -0
  94. package/dist/plaid-tool.d.ts +6 -0
  95. package/dist/plaid-tool.d.ts.map +1 -0
  96. package/dist/plaid-tool.js +149 -0
  97. package/dist/plaid-tool.js.map +1 -0
  98. package/dist/postman-tool.d.ts +2 -0
  99. package/dist/postman-tool.d.ts.map +1 -0
  100. package/dist/postman-tool.js +92 -0
  101. package/dist/postman-tool.js.map +1 -0
  102. package/dist/pushover-tool.d.ts +6 -0
  103. package/dist/pushover-tool.d.ts.map +1 -0
  104. package/dist/pushover-tool.js +146 -0
  105. package/dist/pushover-tool.js.map +1 -0
  106. package/dist/quickbooks-tool.d.ts +5 -0
  107. package/dist/quickbooks-tool.d.ts.map +1 -0
  108. package/dist/quickbooks-tool.js +160 -0
  109. package/dist/quickbooks-tool.js.map +1 -0
  110. package/dist/replicate-tool.d.ts +7 -0
  111. package/dist/replicate-tool.d.ts.map +1 -0
  112. package/dist/replicate-tool.js +172 -0
  113. package/dist/replicate-tool.js.map +1 -0
  114. package/dist/sentry-tool.d.ts +2 -0
  115. package/dist/sentry-tool.d.ts.map +1 -0
  116. package/dist/sentry-tool.js +123 -0
  117. package/dist/sentry-tool.js.map +1 -0
  118. package/dist/speedrun-tool.d.ts +6 -0
  119. package/dist/speedrun-tool.d.ts.map +1 -0
  120. package/dist/speedrun-tool.js +192 -0
  121. package/dist/speedrun-tool.js.map +1 -0
  122. package/dist/spotify-tool.d.ts +8 -0
  123. package/dist/spotify-tool.d.ts.map +1 -0
  124. package/dist/spotify-tool.js +274 -0
  125. package/dist/spotify-tool.js.map +1 -0
  126. package/dist/square-tool.d.ts +5 -0
  127. package/dist/square-tool.d.ts.map +1 -0
  128. package/dist/square-tool.js +133 -0
  129. package/dist/square-tool.js.map +1 -0
  130. package/dist/stability-tool.d.ts +5 -0
  131. package/dist/stability-tool.d.ts.map +1 -0
  132. package/dist/stability-tool.js +190 -0
  133. package/dist/stability-tool.js.map +1 -0
  134. package/dist/steam-tool.d.ts +6 -0
  135. package/dist/steam-tool.d.ts.map +1 -0
  136. package/dist/steam-tool.js +222 -0
  137. package/dist/steam-tool.js.map +1 -0
  138. package/dist/stripe-tool.d.ts +7 -0
  139. package/dist/stripe-tool.d.ts.map +1 -0
  140. package/dist/stripe-tool.js +181 -0
  141. package/dist/stripe-tool.js.map +1 -0
  142. package/dist/tiktok-tool.d.ts +4 -0
  143. package/dist/tiktok-tool.d.ts.map +1 -0
  144. package/dist/tiktok-tool.js +129 -0
  145. package/dist/tiktok-tool.js.map +1 -0
  146. package/dist/toilets-tool.js +2 -2
  147. package/dist/tool-wiring.d.ts +4066 -18
  148. package/dist/tool-wiring.d.ts.map +1 -1
  149. package/dist/tool-wiring.js +2601 -18
  150. package/dist/tool-wiring.js.map +1 -1
  151. package/dist/trello-tool.d.ts +2 -0
  152. package/dist/trello-tool.d.ts.map +1 -0
  153. package/dist/trello-tool.js +166 -0
  154. package/dist/trello-tool.js.map +1 -0
  155. package/dist/twilio-tool.d.ts +8 -0
  156. package/dist/twilio-tool.d.ts.map +1 -0
  157. package/dist/twilio-tool.js +243 -0
  158. package/dist/twilio-tool.js.map +1 -0
  159. package/dist/whatsapp-tool.d.ts +6 -0
  160. package/dist/whatsapp-tool.d.ts.map +1 -0
  161. package/dist/whatsapp-tool.js +200 -0
  162. package/dist/whatsapp-tool.js.map +1 -0
  163. package/dist/woocommerce-tool.d.ts +4 -0
  164. package/dist/woocommerce-tool.d.ts.map +1 -0
  165. package/dist/woocommerce-tool.js +140 -0
  166. package/dist/woocommerce-tool.js.map +1 -0
  167. package/dist/youtube-tool.d.ts +7 -0
  168. package/dist/youtube-tool.d.ts.map +1 -0
  169. package/dist/youtube-tool.js +196 -0
  170. package/dist/youtube-tool.js.map +1 -0
  171. package/package.json +1 -1
  172. package/server.json +37 -37
  173. package/LICENSE +0 -216
  174. package/dist/cloudflare-worker.d.ts +0 -12
  175. package/dist/cloudflare-worker.d.ts.map +0 -1
  176. package/dist/cloudflare-worker.js +0 -50
  177. package/dist/cloudflare-worker.js.map +0 -1
@@ -0,0 +1,165 @@
1
+ // ── GitHub REST API tool ────────────────────────────────────────────────────
2
+ // Wraps the GitHub REST API (https://api.github.com) via fetch.
3
+ // Auth: personal access token (PAT) passed as access_token.
4
+ // No external dependencies.
5
+ const GITHUB_API = "https://api.github.com";
6
+ // ── Fetch helper ───────────────────────────────────────────────────────────────
7
+ async function githubFetch(token, method, path, body, query) {
8
+ const url = new URL(`${GITHUB_API}${path}`);
9
+ if (query) {
10
+ for (const [k, v] of Object.entries(query)) {
11
+ if (v !== undefined && v !== "")
12
+ url.searchParams.set(k, String(v));
13
+ }
14
+ }
15
+ const headers = {
16
+ Accept: "application/vnd.github+json",
17
+ "X-GitHub-Api-Version": "2022-11-28",
18
+ "User-Agent": "UnClick-MCP/1.0",
19
+ };
20
+ if (token)
21
+ headers["Authorization"] = `Bearer ${token}`;
22
+ if (body !== undefined)
23
+ headers["Content-Type"] = "application/json";
24
+ let response;
25
+ try {
26
+ response = await fetch(url.toString(), {
27
+ method,
28
+ headers,
29
+ body: body !== undefined ? JSON.stringify(body) : undefined,
30
+ });
31
+ }
32
+ catch (err) {
33
+ return { error: `Network error reaching GitHub API: ${err instanceof Error ? err.message : String(err)}` };
34
+ }
35
+ const text = await response.text();
36
+ let data;
37
+ try {
38
+ data = JSON.parse(text);
39
+ }
40
+ catch {
41
+ data = { raw: text };
42
+ }
43
+ if (response.status === 401)
44
+ return { error: "GitHub access token is invalid or expired. Check your access_token.", status: 401 };
45
+ if (response.status === 403)
46
+ return { error: "GitHub rate limit exceeded or insufficient permissions.", status: 403 };
47
+ if (response.status === 404)
48
+ return { error: "Resource not found. Check the owner, repo, or resource ID.", status: 404 };
49
+ if (response.status === 422)
50
+ return { error: `GitHub validation error: ${data?.message ?? text}`, status: 422 };
51
+ if (!response.ok) {
52
+ const detail = data?.message ?? text;
53
+ return { error: `GitHub API error ${response.status}: ${detail}`, status: response.status };
54
+ }
55
+ return data;
56
+ }
57
+ // ── Action implementations ─────────────────────────────────────────────────────
58
+ async function searchRepos(token, args) {
59
+ const q = String(args.query ?? "").trim();
60
+ if (!q)
61
+ return { error: "query is required." };
62
+ return githubFetch(token, "GET", "/search/repositories", undefined, {
63
+ q,
64
+ sort: args.sort ? String(args.sort) : undefined,
65
+ order: args.order ? String(args.order) : undefined,
66
+ per_page: args.per_page ? Number(args.per_page) : 10,
67
+ page: args.page ? Number(args.page) : undefined,
68
+ });
69
+ }
70
+ async function getRepo(token, args) {
71
+ const owner = String(args.owner ?? "").trim();
72
+ const repo = String(args.repo ?? "").trim();
73
+ if (!owner || !repo)
74
+ return { error: "owner and repo are required." };
75
+ return githubFetch(token, "GET", `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}`);
76
+ }
77
+ async function listIssues(token, args) {
78
+ const owner = String(args.owner ?? "").trim();
79
+ const repo = String(args.repo ?? "").trim();
80
+ if (!owner || !repo)
81
+ return { error: "owner and repo are required." };
82
+ return githubFetch(token, "GET", `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues`, undefined, {
83
+ state: args.state ? String(args.state) : "open",
84
+ labels: args.labels ? String(args.labels) : undefined,
85
+ per_page: args.per_page ? Number(args.per_page) : 30,
86
+ page: args.page ? Number(args.page) : undefined,
87
+ });
88
+ }
89
+ async function createIssue(token, args) {
90
+ const owner = String(args.owner ?? "").trim();
91
+ const repo = String(args.repo ?? "").trim();
92
+ const title = String(args.title ?? "").trim();
93
+ if (!owner || !repo)
94
+ return { error: "owner and repo are required." };
95
+ if (!title)
96
+ return { error: "title is required." };
97
+ const body = { title };
98
+ if (args.body)
99
+ body.body = String(args.body);
100
+ if (args.assignees)
101
+ body.assignees = args.assignees;
102
+ if (args.labels)
103
+ body.labels = args.labels;
104
+ if (args.milestone)
105
+ body.milestone = Number(args.milestone);
106
+ return githubFetch(token, "POST", `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/issues`, body);
107
+ }
108
+ async function listPRs(token, args) {
109
+ const owner = String(args.owner ?? "").trim();
110
+ const repo = String(args.repo ?? "").trim();
111
+ if (!owner || !repo)
112
+ return { error: "owner and repo are required." };
113
+ return githubFetch(token, "GET", `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/pulls`, undefined, {
114
+ state: args.state ? String(args.state) : "open",
115
+ per_page: args.per_page ? Number(args.per_page) : 30,
116
+ page: args.page ? Number(args.page) : undefined,
117
+ });
118
+ }
119
+ async function getUser(token, args) {
120
+ const username = String(args.username ?? "").trim();
121
+ if (username)
122
+ return githubFetch(token, "GET", `/users/${encodeURIComponent(username)}`);
123
+ return githubFetch(token, "GET", "/user");
124
+ }
125
+ async function listGists(token, args) {
126
+ const username = String(args.username ?? "").trim();
127
+ const path = username ? `/users/${encodeURIComponent(username)}/gists` : "/gists";
128
+ return githubFetch(token, "GET", path, undefined, {
129
+ per_page: args.per_page ? Number(args.per_page) : 30,
130
+ });
131
+ }
132
+ async function searchCode(token, args) {
133
+ const q = String(args.query ?? "").trim();
134
+ if (!q)
135
+ return { error: "query is required." };
136
+ return githubFetch(token, "GET", "/search/code", undefined, {
137
+ q,
138
+ per_page: args.per_page ? Number(args.per_page) : 10,
139
+ page: args.page ? Number(args.page) : undefined,
140
+ });
141
+ }
142
+ // ── Public dispatcher ──────────────────────────────────────────────────────────
143
+ export async function githubAction(action, args) {
144
+ const token = String(args.access_token ?? "").trim();
145
+ try {
146
+ switch (action) {
147
+ case "search_repos": return searchRepos(token, args);
148
+ case "get_repo": return getRepo(token, args);
149
+ case "list_issues": return listIssues(token, args);
150
+ case "create_issue": return createIssue(token, args);
151
+ case "list_prs": return listPRs(token, args);
152
+ case "get_user": return getUser(token, args);
153
+ case "list_gists": return listGists(token, args);
154
+ case "search_code": return searchCode(token, args);
155
+ default:
156
+ return {
157
+ error: `Unknown GitHub action: "${action}". Valid actions: search_repos, get_repo, list_issues, create_issue, list_prs, get_user, list_gists, search_code.`,
158
+ };
159
+ }
160
+ }
161
+ catch (err) {
162
+ return { error: err instanceof Error ? err.message : String(err) };
163
+ }
164
+ }
165
+ //# sourceMappingURL=github-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-tool.js","sourceRoot":"","sources":["../src/github-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function gitlabAction(action: string, args: Record<string, unknown>): Promise<unknown>;
2
+ //# sourceMappingURL=gitlab-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab-tool.d.ts","sourceRoot":"","sources":["../src/gitlab-tool.ts"],"names":[],"mappings":"AAgHA,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
@@ -0,0 +1,127 @@
1
+ // ── GitLab REST API tool ────────────────────────────────────────────────────
2
+ // Wraps the GitLab REST API (https://gitlab.com/api/v4) via fetch.
3
+ // Auth: personal access token (PAT) passed as access_token.
4
+ // Supports self-hosted instances via the base_url parameter.
5
+ // No external dependencies.
6
+ const DEFAULT_GITLAB_BASE = "https://gitlab.com/api/v4";
7
+ // ── Fetch helper ───────────────────────────────────────────────────────────────
8
+ async function gitlabFetch(token, baseUrl, method, path, body, query) {
9
+ const url = new URL(`${baseUrl}${path}`);
10
+ if (query) {
11
+ for (const [k, v] of Object.entries(query)) {
12
+ if (v !== undefined && v !== "")
13
+ url.searchParams.set(k, String(v));
14
+ }
15
+ }
16
+ const headers = {
17
+ "User-Agent": "UnClick-MCP/1.0",
18
+ };
19
+ if (token)
20
+ headers["PRIVATE-TOKEN"] = token;
21
+ if (body !== undefined)
22
+ headers["Content-Type"] = "application/json";
23
+ let response;
24
+ try {
25
+ response = await fetch(url.toString(), {
26
+ method,
27
+ headers,
28
+ body: body !== undefined ? JSON.stringify(body) : undefined,
29
+ });
30
+ }
31
+ catch (err) {
32
+ return { error: `Network error reaching GitLab API: ${err instanceof Error ? err.message : String(err)}` };
33
+ }
34
+ const text = await response.text();
35
+ let data;
36
+ try {
37
+ data = JSON.parse(text);
38
+ }
39
+ catch {
40
+ data = { raw: text };
41
+ }
42
+ if (response.status === 401)
43
+ return { error: "GitLab access token is invalid or expired. Check your access_token.", status: 401 };
44
+ if (response.status === 403)
45
+ return { error: "Insufficient permissions for this GitLab resource.", status: 403 };
46
+ if (response.status === 404)
47
+ return { error: "Resource not found. Check the project ID or namespace.", status: 404 };
48
+ if (response.status === 429)
49
+ return { error: "GitLab rate limit exceeded. Please wait and retry.", status: 429 };
50
+ if (!response.ok) {
51
+ const detail = data?.message ?? text;
52
+ return { error: `GitLab API error ${response.status}: ${detail}`, status: response.status };
53
+ }
54
+ return data;
55
+ }
56
+ // ── Action implementations ─────────────────────────────────────────────────────
57
+ async function searchProjects(token, base, args) {
58
+ const search = String(args.query ?? "").trim();
59
+ if (!search)
60
+ return { error: "query is required." };
61
+ return gitlabFetch(token, base, "GET", "/projects", undefined, {
62
+ search,
63
+ order_by: args.order_by ? String(args.order_by) : "last_activity_at",
64
+ visibility: args.visibility ? String(args.visibility) : undefined,
65
+ per_page: args.per_page ? Number(args.per_page) : 20,
66
+ page: args.page ? Number(args.page) : undefined,
67
+ });
68
+ }
69
+ async function getProject(token, base, args) {
70
+ const id = String(args.project_id ?? "").trim();
71
+ if (!id)
72
+ return { error: "project_id is required." };
73
+ return gitlabFetch(token, base, "GET", `/projects/${encodeURIComponent(id)}`);
74
+ }
75
+ async function listGitlabIssues(token, base, args) {
76
+ const id = String(args.project_id ?? "").trim();
77
+ if (!id)
78
+ return { error: "project_id is required." };
79
+ return gitlabFetch(token, base, "GET", `/projects/${encodeURIComponent(id)}/issues`, undefined, {
80
+ state: args.state ? String(args.state) : "opened",
81
+ labels: args.labels ? String(args.labels) : undefined,
82
+ per_page: args.per_page ? Number(args.per_page) : 20,
83
+ page: args.page ? Number(args.page) : undefined,
84
+ });
85
+ }
86
+ async function listMRs(token, base, args) {
87
+ const id = String(args.project_id ?? "").trim();
88
+ if (!id)
89
+ return { error: "project_id is required." };
90
+ return gitlabFetch(token, base, "GET", `/projects/${encodeURIComponent(id)}/merge_requests`, undefined, {
91
+ state: args.state ? String(args.state) : "opened",
92
+ per_page: args.per_page ? Number(args.per_page) : 20,
93
+ page: args.page ? Number(args.page) : undefined,
94
+ });
95
+ }
96
+ async function getGitlabUser(token, base, args) {
97
+ const username = String(args.username ?? "").trim();
98
+ if (username) {
99
+ const results = await gitlabFetch(token, base, "GET", "/users", undefined, { username });
100
+ if (Array.isArray(results) && results.length > 0)
101
+ return results[0];
102
+ return results;
103
+ }
104
+ return gitlabFetch(token, base, "GET", "/user");
105
+ }
106
+ // ── Public dispatcher ──────────────────────────────────────────────────────────
107
+ export async function gitlabAction(action, args) {
108
+ const token = String(args.access_token ?? "").trim();
109
+ const baseUrl = String(args.base_url ?? DEFAULT_GITLAB_BASE).replace(/\/$/, "");
110
+ try {
111
+ switch (action) {
112
+ case "search_projects": return searchProjects(token, baseUrl, args);
113
+ case "get_project": return getProject(token, baseUrl, args);
114
+ case "list_issues": return listGitlabIssues(token, baseUrl, args);
115
+ case "list_mrs": return listMRs(token, baseUrl, args);
116
+ case "get_user": return getGitlabUser(token, baseUrl, args);
117
+ default:
118
+ return {
119
+ error: `Unknown GitLab action: "${action}". Valid actions: search_projects, get_project, list_issues, list_mrs, get_user.`,
120
+ };
121
+ }
122
+ }
123
+ catch (err) {
124
+ return { error: err instanceof Error ? err.message : String(err) };
125
+ }
126
+ }
127
+ //# sourceMappingURL=gitlab-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab-tool.js","sourceRoot":"","sources":["../src/gitlab-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function igdbSearchGames(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function igdbGetGame(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function igdbListPlatforms(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function igdbListGenres(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function igdbGetCompany(args: Record<string, unknown>): Promise<unknown>;
6
+ //# sourceMappingURL=igdb-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"igdb-tool.d.ts","sourceRoot":"","sources":["../src/igdb-tool.ts"],"names":[],"mappings":"AAsEA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAarF;AAGD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAajF;AAGD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAYvF;AAGD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUpF;AAGD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBpF"}
@@ -0,0 +1,140 @@
1
+ // IGDB games database API (powered by Twitch).
2
+ // Docs: https://api-docs.igdb.com/
3
+ // Auth: IGDB_CLIENT_ID + IGDB_CLIENT_SECRET (Twitch OAuth2 app credentials)
4
+ // Base: https://api.igdb.com/v4
5
+ // Token endpoint: https://id.twitch.tv/oauth2/token (client_credentials grant)
6
+ const IGDB_BASE = "https://api.igdb.com/v4";
7
+ const TWITCH_TOKEN_URL = "https://id.twitch.tv/oauth2/token";
8
+ // Simple in-process token cache (resets on restart)
9
+ let cachedToken = null;
10
+ function getCredentials(args) {
11
+ const clientId = String(args.client_id ?? process.env.IGDB_CLIENT_ID ?? "").trim();
12
+ const clientSecret = String(args.client_secret ?? process.env.IGDB_CLIENT_SECRET ?? "").trim();
13
+ if (!clientId)
14
+ throw new Error("client_id is required (or set IGDB_CLIENT_ID env var).");
15
+ if (!clientSecret)
16
+ throw new Error("client_secret is required (or set IGDB_CLIENT_SECRET env var).");
17
+ return { clientId, clientSecret };
18
+ }
19
+ async function getTwitchToken(clientId, clientSecret) {
20
+ if (cachedToken && Date.now() < cachedToken.expires)
21
+ return cachedToken.token;
22
+ const res = await fetch(`${TWITCH_TOKEN_URL}?client_id=${encodeURIComponent(clientId)}&client_secret=${encodeURIComponent(clientSecret)}&grant_type=client_credentials`, { method: "POST" });
23
+ if (res.status === 400 || res.status === 401) {
24
+ throw new Error("Invalid IGDB credentials. Check your client_id and client_secret.");
25
+ }
26
+ if (!res.ok) {
27
+ const body = await res.text().catch(() => "");
28
+ throw new Error(`Twitch token request failed HTTP ${res.status}: ${body}`);
29
+ }
30
+ const json = await res.json();
31
+ const token = String(json.access_token ?? "");
32
+ const expiresIn = Number(json.expires_in ?? 3600);
33
+ cachedToken = { token, expires: Date.now() + (expiresIn - 60) * 1000 };
34
+ return token;
35
+ }
36
+ async function igdbPost(clientId, token, endpoint, body) {
37
+ const res = await fetch(`${IGDB_BASE}${endpoint}`, {
38
+ method: "POST",
39
+ headers: {
40
+ "Client-ID": clientId,
41
+ Authorization: `Bearer ${token}`,
42
+ "Content-Type": "text/plain",
43
+ Accept: "application/json",
44
+ },
45
+ body,
46
+ });
47
+ if (res.status === 401) {
48
+ cachedToken = null;
49
+ throw new Error("IGDB token expired or invalid. Try again.");
50
+ }
51
+ if (res.status === 429)
52
+ throw new Error("IGDB rate limit exceeded.");
53
+ if (!res.ok) {
54
+ const b = await res.text().catch(() => "");
55
+ throw new Error(`IGDB HTTP ${res.status}: ${b || res.statusText}`);
56
+ }
57
+ return res.json();
58
+ }
59
+ // igdb_search_games
60
+ export async function igdbSearchGames(args) {
61
+ try {
62
+ const { clientId, clientSecret } = getCredentials(args);
63
+ const token = await getTwitchToken(clientId, clientSecret);
64
+ const query = String(args.query ?? "").trim();
65
+ if (!query)
66
+ return { error: "query is required." };
67
+ const limit = Math.min(Number(args.limit ?? 10), 50);
68
+ const body = `search "${query}"; fields id,name,summary,genres.name,platforms.name,release_dates.human,rating,rating_count,cover.url,url; limit ${limit};`;
69
+ return igdbPost(clientId, token, "/games", body);
70
+ }
71
+ catch (err) {
72
+ return { error: err instanceof Error ? err.message : String(err) };
73
+ }
74
+ }
75
+ // igdb_get_game
76
+ export async function igdbGetGame(args) {
77
+ try {
78
+ const { clientId, clientSecret } = getCredentials(args);
79
+ const token = await getTwitchToken(clientId, clientSecret);
80
+ const gameId = String(args.game_id ?? "").trim();
81
+ if (!gameId)
82
+ return { error: "game_id is required." };
83
+ const body = `fields id,name,summary,storyline,genres.name,platforms.name,involved_companies.company.name,involved_companies.developer,involved_companies.publisher,release_dates.human,rating,rating_count,aggregated_rating,aggregated_rating_count,cover.url,screenshots.url,websites.url,url; where id = ${gameId};`;
84
+ const result = await igdbPost(clientId, token, "/games", body);
85
+ return result[0] ?? { error: "Game not found." };
86
+ }
87
+ catch (err) {
88
+ return { error: err instanceof Error ? err.message : String(err) };
89
+ }
90
+ }
91
+ // igdb_list_platforms
92
+ export async function igdbListPlatforms(args) {
93
+ try {
94
+ const { clientId, clientSecret } = getCredentials(args);
95
+ const token = await getTwitchToken(clientId, clientSecret);
96
+ const limit = Math.min(Number(args.limit ?? 30), 500);
97
+ const offset = Number(args.offset ?? 0);
98
+ const body = `fields id,name,abbreviation,alternative_name,platform_family.name,generation; sort name asc; limit ${limit}; offset ${offset};`;
99
+ return igdbPost(clientId, token, "/platforms", body);
100
+ }
101
+ catch (err) {
102
+ return { error: err instanceof Error ? err.message : String(err) };
103
+ }
104
+ }
105
+ // igdb_list_genres
106
+ export async function igdbListGenres(args) {
107
+ try {
108
+ const { clientId, clientSecret } = getCredentials(args);
109
+ const token = await getTwitchToken(clientId, clientSecret);
110
+ const body = `fields id,name,slug,url; sort name asc; limit 50;`;
111
+ return igdbPost(clientId, token, "/genres", body);
112
+ }
113
+ catch (err) {
114
+ return { error: err instanceof Error ? err.message : String(err) };
115
+ }
116
+ }
117
+ // igdb_get_company
118
+ export async function igdbGetCompany(args) {
119
+ try {
120
+ const { clientId, clientSecret } = getCredentials(args);
121
+ const token = await getTwitchToken(clientId, clientSecret);
122
+ const name = String(args.name ?? "").trim();
123
+ const companyId = String(args.company_id ?? "").trim();
124
+ if (!name && !companyId)
125
+ return { error: "Either name or company_id is required." };
126
+ let body;
127
+ if (companyId) {
128
+ body = `fields id,name,description,developed.name,published.name,country,start_date,websites.url,logo.url; where id = ${companyId};`;
129
+ }
130
+ else {
131
+ body = `fields id,name,description,developed.name,published.name,country,start_date,websites.url,logo.url; search "${name}"; limit 5;`;
132
+ }
133
+ const result = await igdbPost(clientId, token, "/companies", body);
134
+ return companyId ? (result[0] ?? { error: "Company not found." }) : result;
135
+ }
136
+ catch (err) {
137
+ return { error: err instanceof Error ? err.message : String(err) };
138
+ }
139
+ }
140
+ //# sourceMappingURL=igdb-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"igdb-tool.js","sourceRoot":"","sources":["../src/igdb-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function lineSendMessage(args: Record<string, unknown>): Promise<unknown>;
2
+ export declare function lineSendFlexMessage(args: Record<string, unknown>): Promise<unknown>;
3
+ export declare function lineGetProfile(args: Record<string, unknown>): Promise<unknown>;
4
+ export declare function lineGetGroupSummary(args: Record<string, unknown>): Promise<unknown>;
5
+ export declare function lineReplyMessage(args: Record<string, unknown>): Promise<unknown>;
6
+ export declare function lineBroadcast(args: Record<string, unknown>): Promise<unknown>;
7
+ //# sourceMappingURL=line-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-tool.d.ts","sourceRoot":"","sources":["../src/line-tool.ts"],"names":[],"mappings":"AAuFA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBrF;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA4BzF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAapF;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAmCtF;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAcnF"}