@unclick/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 (70) hide show
  1. package/README.md +139 -0
  2. package/dist/amazon-tool.d.ts +5 -0
  3. package/dist/amazon-tool.d.ts.map +1 -0
  4. package/dist/amazon-tool.js +307 -0
  5. package/dist/amazon-tool.js.map +1 -0
  6. package/dist/bluesky-tool.d.ts +2 -0
  7. package/dist/bluesky-tool.d.ts.map +1 -0
  8. package/dist/bluesky-tool.js +368 -0
  9. package/dist/bluesky-tool.js.map +1 -0
  10. package/dist/catalog.d.ts +28 -0
  11. package/dist/catalog.d.ts.map +1 -0
  12. package/dist/catalog.js +1865 -0
  13. package/dist/catalog.js.map +1 -0
  14. package/dist/client.d.ts +12 -0
  15. package/dist/client.d.ts.map +1 -0
  16. package/dist/client.js +73 -0
  17. package/dist/client.js.map +1 -0
  18. package/dist/converter-tools.d.ts +50 -0
  19. package/dist/converter-tools.d.ts.map +1 -0
  20. package/dist/converter-tools.js +137 -0
  21. package/dist/converter-tools.js.map +1 -0
  22. package/dist/csuite-tool.d.ts +35 -0
  23. package/dist/csuite-tool.d.ts.map +1 -0
  24. package/dist/csuite-tool.js +791 -0
  25. package/dist/csuite-tool.js.map +1 -0
  26. package/dist/discord-tool.d.ts +8 -0
  27. package/dist/discord-tool.d.ts.map +1 -0
  28. package/dist/discord-tool.js +195 -0
  29. package/dist/discord-tool.js.map +1 -0
  30. package/dist/index.d.ts +3 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +7 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/local-tools.d.ts +72 -0
  35. package/dist/local-tools.d.ts.map +1 -0
  36. package/dist/local-tools.js +563 -0
  37. package/dist/local-tools.js.map +1 -0
  38. package/dist/mastodon-tool.d.ts +2 -0
  39. package/dist/mastodon-tool.d.ts.map +1 -0
  40. package/dist/mastodon-tool.js +372 -0
  41. package/dist/mastodon-tool.js.map +1 -0
  42. package/dist/reddit-tool.d.ts +59 -0
  43. package/dist/reddit-tool.d.ts.map +1 -0
  44. package/dist/reddit-tool.js +348 -0
  45. package/dist/reddit-tool.js.map +1 -0
  46. package/dist/server.d.ts +4 -0
  47. package/dist/server.d.ts.map +1 -0
  48. package/dist/server.js +2337 -0
  49. package/dist/server.js.map +1 -0
  50. package/dist/shopify-tool.d.ts +8 -0
  51. package/dist/shopify-tool.d.ts.map +1 -0
  52. package/dist/shopify-tool.js +305 -0
  53. package/dist/shopify-tool.js.map +1 -0
  54. package/dist/slack-tool.d.ts +2 -0
  55. package/dist/slack-tool.d.ts.map +1 -0
  56. package/dist/slack-tool.js +316 -0
  57. package/dist/slack-tool.js.map +1 -0
  58. package/dist/telegram-tool.d.ts +7 -0
  59. package/dist/telegram-tool.d.ts.map +1 -0
  60. package/dist/telegram-tool.js +297 -0
  61. package/dist/telegram-tool.js.map +1 -0
  62. package/dist/vault-tool.d.ts +2 -0
  63. package/dist/vault-tool.d.ts.map +1 -0
  64. package/dist/vault-tool.js +395 -0
  65. package/dist/vault-tool.js.map +1 -0
  66. package/dist/xero-tool.d.ts +9 -0
  67. package/dist/xero-tool.d.ts.map +1 -0
  68. package/dist/xero-tool.js +330 -0
  69. package/dist/xero-tool.js.map +1 -0
  70. package/package.json +57 -0
@@ -0,0 +1,330 @@
1
+ // ─── Xero Accounting API integration ──────────────────────────────────────────
2
+ // Uses Xero API v2 (https://api.xero.com/api.xro/2.0/) via fetch.
3
+ // Auth: OAuth 2.0 Bearer token provided by the caller (external OAuth flow).
4
+ // All requests require Xero-Tenant-Id header.
5
+ // Rate limit: 60 calls/min on Starter tier.
6
+ // No external dependencies.
7
+ const XERO_BASE = "https://api.xero.com/api.xro/2.0";
8
+ async function xeroFetch(opts) {
9
+ const url = new URL(`${XERO_BASE}${opts.path}`);
10
+ if (opts.query) {
11
+ for (const [k, v] of Object.entries(opts.query)) {
12
+ if (v !== undefined && v !== "") {
13
+ url.searchParams.set(k, String(v));
14
+ }
15
+ }
16
+ }
17
+ const headers = {
18
+ Authorization: `Bearer ${opts.accessToken}`,
19
+ "Xero-Tenant-Id": opts.tenantId,
20
+ Accept: "application/json",
21
+ };
22
+ if (opts.body !== undefined) {
23
+ headers["Content-Type"] = "application/json";
24
+ }
25
+ let response;
26
+ try {
27
+ response = await fetch(url.toString(), {
28
+ method: opts.method,
29
+ headers,
30
+ body: opts.body !== undefined ? JSON.stringify(opts.body) : undefined,
31
+ });
32
+ }
33
+ catch (err) {
34
+ return {
35
+ error: true,
36
+ message: `Network error reaching Xero API: ${err instanceof Error ? err.message : String(err)}`,
37
+ };
38
+ }
39
+ const text = await response.text();
40
+ let data;
41
+ try {
42
+ data = JSON.parse(text);
43
+ }
44
+ catch {
45
+ data = { raw: text };
46
+ }
47
+ const rateInfo = {};
48
+ const remaining = response.headers.get("X-Rate-Limit-Remaining");
49
+ const problem = response.headers.get("X-Rate-Limit-Problem");
50
+ if (remaining !== null)
51
+ rateInfo.rate_limit_remaining = remaining;
52
+ if (problem !== null)
53
+ rateInfo.rate_limit_problem = problem;
54
+ if (!response.ok) {
55
+ return {
56
+ error: true,
57
+ status: response.status,
58
+ statusText: response.statusText,
59
+ detail: data,
60
+ ...(Object.keys(rateInfo).length > 0 && { rate_limit: rateInfo }),
61
+ };
62
+ }
63
+ if (typeof data === "object" && data !== null) {
64
+ return Object.keys(rateInfo).length > 0
65
+ ? { ...data, rate_limit: rateInfo }
66
+ : data;
67
+ }
68
+ return { data, ...(Object.keys(rateInfo).length > 0 && { rate_limit: rateInfo }) };
69
+ }
70
+ // ─── Validation helpers ───────────────────────────────────────────────────────
71
+ function requireAuth(args) {
72
+ if (!args.access_token || String(args.access_token).trim() === "") {
73
+ return { error: "access_token is required." };
74
+ }
75
+ if (!args.tenant_id || String(args.tenant_id).trim() === "") {
76
+ return { error: "tenant_id is required." };
77
+ }
78
+ return null;
79
+ }
80
+ function token(args) {
81
+ return String(args.access_token).trim();
82
+ }
83
+ function tenant(args) {
84
+ return String(args.tenant_id).trim();
85
+ }
86
+ function str(v) {
87
+ return v !== undefined && v !== null && v !== "" ? String(v) : undefined;
88
+ }
89
+ // ─── 1. Invoices ──────────────────────────────────────────────────────────────
90
+ export async function xeroInvoices(args) {
91
+ const authErr = requireAuth(args);
92
+ if (authErr)
93
+ return authErr;
94
+ const action = str(args.action) ?? "list";
95
+ if (action === "get") {
96
+ const invoiceId = str(args.invoice_id);
97
+ if (!invoiceId)
98
+ return { error: "invoice_id is required for action='get'." };
99
+ return xeroFetch({
100
+ accessToken: token(args),
101
+ tenantId: tenant(args),
102
+ method: "GET",
103
+ path: `/Invoices/${encodeURIComponent(invoiceId)}`,
104
+ });
105
+ }
106
+ if (action === "create") {
107
+ if (!args.body || typeof args.body !== "object") {
108
+ return { error: "body (invoice object) is required for action='create'." };
109
+ }
110
+ return xeroFetch({
111
+ accessToken: token(args),
112
+ tenantId: tenant(args),
113
+ method: "POST",
114
+ path: "/Invoices",
115
+ body: args.body,
116
+ });
117
+ }
118
+ // list (default)
119
+ return xeroFetch({
120
+ accessToken: token(args),
121
+ tenantId: tenant(args),
122
+ method: "GET",
123
+ path: "/Invoices",
124
+ query: {
125
+ where: str(args.where),
126
+ order: str(args.order),
127
+ page: args.page !== undefined ? Number(args.page) : undefined,
128
+ pageSize: args.page_size !== undefined ? Number(args.page_size) : undefined,
129
+ Statuses: str(args.statuses),
130
+ ContactIDs: str(args.contact_ids),
131
+ IDs: str(args.ids),
132
+ },
133
+ });
134
+ }
135
+ // ─── 2. Contacts ─────────────────────────────────────────────────────────────
136
+ export async function xeroContacts(args) {
137
+ const authErr = requireAuth(args);
138
+ if (authErr)
139
+ return authErr;
140
+ const action = str(args.action) ?? "list";
141
+ if (action === "get") {
142
+ const contactId = str(args.contact_id);
143
+ if (!contactId)
144
+ return { error: "contact_id is required for action='get'." };
145
+ return xeroFetch({
146
+ accessToken: token(args),
147
+ tenantId: tenant(args),
148
+ method: "GET",
149
+ path: `/Contacts/${encodeURIComponent(contactId)}`,
150
+ });
151
+ }
152
+ if (action === "create") {
153
+ if (!args.body || typeof args.body !== "object") {
154
+ return { error: "body (contact object) is required for action='create'." };
155
+ }
156
+ return xeroFetch({
157
+ accessToken: token(args),
158
+ tenantId: tenant(args),
159
+ method: "POST",
160
+ path: "/Contacts",
161
+ body: args.body,
162
+ });
163
+ }
164
+ // list
165
+ return xeroFetch({
166
+ accessToken: token(args),
167
+ tenantId: tenant(args),
168
+ method: "GET",
169
+ path: "/Contacts",
170
+ query: {
171
+ where: str(args.where),
172
+ order: str(args.order),
173
+ page: args.page !== undefined ? Number(args.page) : undefined,
174
+ pageSize: args.page_size !== undefined ? Number(args.page_size) : undefined,
175
+ searchTerm: str(args.search_term),
176
+ IDs: str(args.ids),
177
+ includeArchived: args.include_archived === true ? "true" : undefined,
178
+ },
179
+ });
180
+ }
181
+ // ─── 3. Accounts ─────────────────────────────────────────────────────────────
182
+ export async function xeroAccounts(args) {
183
+ const authErr = requireAuth(args);
184
+ if (authErr)
185
+ return authErr;
186
+ return xeroFetch({
187
+ accessToken: token(args),
188
+ tenantId: tenant(args),
189
+ method: "GET",
190
+ path: "/Accounts",
191
+ query: {
192
+ where: str(args.where),
193
+ order: str(args.order),
194
+ },
195
+ });
196
+ }
197
+ // ─── 4. Payments ─────────────────────────────────────────────────────────────
198
+ export async function xeroPayments(args) {
199
+ const authErr = requireAuth(args);
200
+ if (authErr)
201
+ return authErr;
202
+ const action = str(args.action) ?? "list";
203
+ if (action === "create") {
204
+ if (!args.body || typeof args.body !== "object") {
205
+ return { error: "body (payment object) is required for action='create'." };
206
+ }
207
+ return xeroFetch({
208
+ accessToken: token(args),
209
+ tenantId: tenant(args),
210
+ method: "POST",
211
+ path: "/Payments",
212
+ body: args.body,
213
+ });
214
+ }
215
+ // list
216
+ return xeroFetch({
217
+ accessToken: token(args),
218
+ tenantId: tenant(args),
219
+ method: "GET",
220
+ path: "/Payments",
221
+ query: {
222
+ where: str(args.where),
223
+ order: str(args.order),
224
+ page: args.page !== undefined ? Number(args.page) : undefined,
225
+ },
226
+ });
227
+ }
228
+ // ─── 5. Bank Transactions ─────────────────────────────────────────────────────
229
+ export async function xeroBankTransactions(args) {
230
+ const authErr = requireAuth(args);
231
+ if (authErr)
232
+ return authErr;
233
+ return xeroFetch({
234
+ accessToken: token(args),
235
+ tenantId: tenant(args),
236
+ method: "GET",
237
+ path: "/BankTransactions",
238
+ query: {
239
+ where: str(args.where),
240
+ order: str(args.order),
241
+ page: args.page !== undefined ? Number(args.page) : undefined,
242
+ },
243
+ });
244
+ }
245
+ // ─── 6. Reports ──────────────────────────────────────────────────────────────
246
+ export async function xeroReports(args) {
247
+ const authErr = requireAuth(args);
248
+ if (authErr)
249
+ return authErr;
250
+ const reportId = str(args.report_id);
251
+ if (!reportId) {
252
+ return {
253
+ error: "report_id is required. Common values: ProfitAndLoss, BalanceSheet, " +
254
+ "CashSummary, AgedReceivablesByContact, AgedPayablesByContact, ExecutiveSummary, " +
255
+ "TrialBalance, BankSummary.",
256
+ };
257
+ }
258
+ return xeroFetch({
259
+ accessToken: token(args),
260
+ tenantId: tenant(args),
261
+ method: "GET",
262
+ path: `/Reports/${encodeURIComponent(reportId)}`,
263
+ query: {
264
+ fromDate: str(args.from_date),
265
+ toDate: str(args.to_date),
266
+ date: str(args.date),
267
+ periods: args.periods !== undefined ? Number(args.periods) : undefined,
268
+ timeframe: str(args.timeframe),
269
+ contactID: str(args.contact_id),
270
+ accountID: str(args.account_id),
271
+ },
272
+ });
273
+ }
274
+ // ─── 7. Quotes ───────────────────────────────────────────────────────────────
275
+ export async function xeroQuotes(args) {
276
+ const authErr = requireAuth(args);
277
+ if (authErr)
278
+ return authErr;
279
+ const action = str(args.action) ?? "list";
280
+ if (action === "get") {
281
+ const quoteId = str(args.quote_id);
282
+ if (!quoteId)
283
+ return { error: "quote_id is required for action='get'." };
284
+ return xeroFetch({
285
+ accessToken: token(args),
286
+ tenantId: tenant(args),
287
+ method: "GET",
288
+ path: `/Quotes/${encodeURIComponent(quoteId)}`,
289
+ });
290
+ }
291
+ if (action === "create") {
292
+ if (!args.body || typeof args.body !== "object") {
293
+ return { error: "body (quote object) is required for action='create'." };
294
+ }
295
+ return xeroFetch({
296
+ accessToken: token(args),
297
+ tenantId: tenant(args),
298
+ method: "POST",
299
+ path: "/Quotes",
300
+ body: args.body,
301
+ });
302
+ }
303
+ // list
304
+ return xeroFetch({
305
+ accessToken: token(args),
306
+ tenantId: tenant(args),
307
+ method: "GET",
308
+ path: "/Quotes",
309
+ query: {
310
+ status: str(args.status),
311
+ contactID: str(args.contact_id),
312
+ dateFrom: str(args.date_from),
313
+ dateTo: str(args.date_to),
314
+ page: args.page !== undefined ? Number(args.page) : undefined,
315
+ },
316
+ });
317
+ }
318
+ // ─── 8. Organisation ─────────────────────────────────────────────────────────
319
+ export async function xeroOrganisation(args) {
320
+ const authErr = requireAuth(args);
321
+ if (authErr)
322
+ return authErr;
323
+ return xeroFetch({
324
+ accessToken: token(args),
325
+ tenantId: tenant(args),
326
+ method: "GET",
327
+ path: "/Organisation",
328
+ });
329
+ }
330
+ //# sourceMappingURL=xero-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xero-tool.js","sourceRoot":"","sources":["../src/xero-tool.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@unclick/mcp-server",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for the UnClick tool marketplace — lets AI agents discover and use every UnClick tool",
5
+ "type": "module",
6
+ "bin": {
7
+ "unclick-mcp": "./dist/index.js"
8
+ },
9
+ "main": "./dist/server.js",
10
+ "exports": {
11
+ ".": "./dist/server.js"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "README.md"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "dev": "tsx src/index.ts",
20
+ "start": "node dist/index.js",
21
+ "prepublishOnly": "npm run build"
22
+ },
23
+ "dependencies": {
24
+ "@iarna/toml": "^2.2.5",
25
+ "@modelcontextprotocol/sdk": "^1.15.1",
26
+ "csv-parse": "^6.2.1",
27
+ "csv-stringify": "^6.7.0",
28
+ "fast-xml-parser": "^5.5.10",
29
+ "js-yaml": "^4.1.1",
30
+ "marked": "^17.0.6",
31
+ "turndown": "^7.2.4",
32
+ "zod": "^3.23.8"
33
+ },
34
+ "devDependencies": {
35
+ "@types/js-yaml": "^4.0.9",
36
+ "@types/node": "^22.0.0",
37
+ "@types/turndown": "^5.0.6",
38
+ "tsx": "^4.19.2",
39
+ "typescript": "^5.8.3"
40
+ },
41
+ "engines": {
42
+ "node": ">=18"
43
+ },
44
+ "keywords": [
45
+ "mcp",
46
+ "model-context-protocol",
47
+ "unclick",
48
+ "ai",
49
+ "tools",
50
+ "utilities"
51
+ ],
52
+ "license": "MIT",
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "https://github.com/unclick/unclick"
56
+ }
57
+ }