iwantmymtg-mcp 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-client.js +52 -35
- package/dist/api-client.js.map +1 -1
- package/dist/generated/api-types.js +6 -0
- package/dist/generated/api-types.js.map +1 -0
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/alerts.js +31 -7
- package/dist/tools/alerts.js.map +1 -1
- package/dist/tools/get-card.js +11 -10
- package/dist/tools/get-card.js.map +1 -1
- package/dist/tools/inventory.js +36 -14
- package/dist/tools/inventory.js.map +1 -1
- package/dist/tools/notifications.js +27 -6
- package/dist/tools/notifications.js.map +1 -1
- package/dist/tools/portfolio.js +46 -8
- package/dist/tools/portfolio.js.map +1 -1
- package/dist/tools/search-cards.js +6 -4
- package/dist/tools/search-cards.js.map +1 -1
- package/dist/tools/sets.js +25 -8
- package/dist/tools/sets.js.map +1 -1
- package/dist/tools/transactions.js +43 -14
- package/dist/tools/transactions.js.map +1 -1
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/package.json +5 -1
package/dist/api-client.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import createClient from "openapi-fetch";
|
|
2
|
+
import { config, requireApiKey } from "./config.js";
|
|
3
|
+
import { VERSION } from "./version.js";
|
|
4
|
+
const USER_AGENT = `iwantmymtg-mcp/${VERSION}`;
|
|
2
5
|
export class ApiError extends Error {
|
|
3
6
|
status;
|
|
4
7
|
body;
|
|
@@ -11,41 +14,55 @@ export class ApiError extends Error {
|
|
|
11
14
|
this.name = "ApiError";
|
|
12
15
|
}
|
|
13
16
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
const authMiddleware = {
|
|
18
|
+
async onRequest({ request }) {
|
|
19
|
+
request.headers.set("User-Agent", USER_AGENT);
|
|
20
|
+
request.headers.set("Accept", "application/json");
|
|
21
|
+
// Tools opt in by setting `X-IWMM-Auth: required` via init.headers
|
|
22
|
+
if (request.headers.get("X-IWMM-Auth") === "required") {
|
|
23
|
+
request.headers.delete("X-IWMM-Auth");
|
|
24
|
+
request.headers.set("Authorization", `Bearer ${requireApiKey()}`);
|
|
21
25
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
return request;
|
|
27
|
+
},
|
|
28
|
+
async onResponse({ response }) {
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
const text = await response.clone().text();
|
|
31
|
+
throw new ApiError(response.status, text, {
|
|
32
|
+
limit: response.headers.get("X-RateLimit-Limit") ?? undefined,
|
|
33
|
+
remaining: response.headers.get("X-RateLimit-Remaining") ?? undefined,
|
|
34
|
+
reset: response.headers.get("X-RateLimit-Reset") ?? undefined,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return response;
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
// Lazy so tests can stub `globalThis.fetch` after module load, and so config
|
|
41
|
+
// changes (baseUrl, etc.) are picked up at call time.
|
|
42
|
+
function buildClient() {
|
|
43
|
+
const client = createClient({
|
|
44
|
+
baseUrl: config.baseUrl,
|
|
45
|
+
fetch: (...args) => globalThis.fetch(...args),
|
|
38
46
|
});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
client.use(authMiddleware);
|
|
48
|
+
return client;
|
|
49
|
+
}
|
|
50
|
+
export const apiClient = new Proxy({}, {
|
|
51
|
+
get(_, prop) {
|
|
52
|
+
const client = buildClient();
|
|
53
|
+
return Reflect.get(client, prop);
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
/** Header sentinel that the auth middleware swaps for a Bearer token. */
|
|
57
|
+
export const AUTH_HEADERS = { "X-IWMM-Auth": "required" };
|
|
58
|
+
/**
|
|
59
|
+
* Unwrap an openapi-fetch `{ data, error }` result. HTTP failures are already
|
|
60
|
+
* thrown as `ApiError` by the response middleware, so `error` here only carries
|
|
61
|
+
* non-HTTP failures (e.g. network errors).
|
|
62
|
+
*/
|
|
63
|
+
export function unwrap(data, error) {
|
|
64
|
+
if (error)
|
|
65
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
66
|
+
return data;
|
|
50
67
|
}
|
|
51
68
|
//# sourceMappingURL=api-client.js.map
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-types.js","sourceRoot":"","sources":["../../src/generated/api-types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
package/dist/server.js
CHANGED
|
@@ -4,10 +4,11 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextpro
|
|
|
4
4
|
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
5
5
|
import { tools, toolsByName } from "./tools/index.js";
|
|
6
6
|
import { formatError } from "./error-formatter.js";
|
|
7
|
+
import { VERSION } from "./version.js";
|
|
7
8
|
export async function startServer() {
|
|
8
9
|
const server = new Server({
|
|
9
10
|
name: "iwantmymtg-mcp",
|
|
10
|
-
version:
|
|
11
|
+
version: VERSION,
|
|
11
12
|
}, {
|
|
12
13
|
capabilities: {
|
|
13
14
|
tools: {},
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;KACF,CACF,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAA4B;SAC/F,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;aACtE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;qBAClE;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/tools/alerts.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { apiClient, AUTH_HEADERS, unwrap } from "../api-client.js";
|
|
3
3
|
const thresholdRefinement = (v) => v.increasePct != null || v.decreasePct != null;
|
|
4
4
|
export const listAlertsTool = {
|
|
5
5
|
name: "list_price_alerts",
|
|
6
6
|
description: "List the authenticated user's price alerts. Free tier is capped at 5 active alerts and a single threshold direction per alert; Premium removes both limits. Requires IWMM_API_KEY.",
|
|
7
7
|
inputSchema: z.object({}),
|
|
8
|
-
handler: () =>
|
|
8
|
+
handler: async () => {
|
|
9
|
+
const { data, error } = await apiClient.GET("/api/v1/price-alerts", {
|
|
10
|
+
headers: AUTH_HEADERS,
|
|
11
|
+
});
|
|
12
|
+
return unwrap(data, error);
|
|
13
|
+
},
|
|
9
14
|
};
|
|
10
15
|
export const createAlertTool = {
|
|
11
16
|
name: "create_price_alert",
|
|
@@ -17,23 +22,42 @@ export const createAlertTool = {
|
|
|
17
22
|
decreasePct: z.number().min(0.01).optional().describe("Trigger when price decreases by at least this percent."),
|
|
18
23
|
})
|
|
19
24
|
.refine(thresholdRefinement, { message: "Provide at least one of increasePct or decreasePct." }),
|
|
20
|
-
handler: (input) =>
|
|
25
|
+
handler: async (input) => {
|
|
26
|
+
const { data, error } = await apiClient.POST("/api/v1/price-alerts", {
|
|
27
|
+
body: input,
|
|
28
|
+
headers: AUTH_HEADERS,
|
|
29
|
+
});
|
|
30
|
+
return unwrap(data, error);
|
|
31
|
+
},
|
|
21
32
|
};
|
|
22
33
|
export const updateAlertTool = {
|
|
23
34
|
name: "update_price_alert",
|
|
24
35
|
description: "Update an existing price alert. Pass null for a threshold to clear it (Premium only - free users must keep exactly one direction). isActive toggles enable/disable without deleting. Requires IWMM_API_KEY.",
|
|
25
36
|
inputSchema: z.object({
|
|
26
|
-
id: z.
|
|
37
|
+
id: z.coerce.number().int().describe("Alert ID from list_price_alerts."),
|
|
27
38
|
increasePct: z.number().min(0.01).nullable().optional(),
|
|
28
39
|
decreasePct: z.number().min(0.01).nullable().optional(),
|
|
29
40
|
isActive: z.boolean().optional(),
|
|
30
41
|
}),
|
|
31
|
-
handler: ({ id, ...patch }) =>
|
|
42
|
+
handler: async ({ id, ...patch }) => {
|
|
43
|
+
const { data, error } = await apiClient.PATCH("/api/v1/price-alerts/{id}", {
|
|
44
|
+
params: { path: { id } },
|
|
45
|
+
body: patch,
|
|
46
|
+
headers: AUTH_HEADERS,
|
|
47
|
+
});
|
|
48
|
+
return unwrap(data, error);
|
|
49
|
+
},
|
|
32
50
|
};
|
|
33
51
|
export const deleteAlertTool = {
|
|
34
52
|
name: "delete_price_alert",
|
|
35
53
|
description: "Delete a price alert by ID. Requires IWMM_API_KEY.",
|
|
36
|
-
inputSchema: z.object({ id: z.
|
|
37
|
-
handler: ({ id }) =>
|
|
54
|
+
inputSchema: z.object({ id: z.coerce.number().int() }),
|
|
55
|
+
handler: async ({ id }) => {
|
|
56
|
+
const { data, error } = await apiClient.DELETE("/api/v1/price-alerts/{id}", {
|
|
57
|
+
params: { path: { id } },
|
|
58
|
+
headers: AUTH_HEADERS,
|
|
59
|
+
});
|
|
60
|
+
return unwrap(data, error);
|
|
61
|
+
},
|
|
38
62
|
};
|
|
39
63
|
//# sourceMappingURL=alerts.js.map
|
package/dist/tools/alerts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alerts.js","sourceRoot":"","sources":["../../src/tools/alerts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"alerts.js","sourceRoot":"","sources":["../../src/tools/alerts.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/get-card.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { apiClient, unwrap } from "../api-client.js";
|
|
3
3
|
export const getCardInputSchema = {
|
|
4
4
|
setCode: z.string().describe("Set code (e.g. 'lea')."),
|
|
5
5
|
setNumber: z.string().describe("Collector number within the set (e.g. '161'). String, not int - some sets use suffixes like '12a'."),
|
|
6
6
|
};
|
|
7
7
|
export async function getCard(input) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
});
|
|
8
|
+
const { data, error } = await apiClient.GET("/api/v1/cards/{setCode}/{setNumber}", { params: { path: input } });
|
|
9
|
+
return unwrap(data, error);
|
|
11
10
|
}
|
|
12
11
|
export const getCardTool = {
|
|
13
12
|
name: "get_card",
|
|
@@ -19,16 +18,18 @@ export const getCardPricesTool = {
|
|
|
19
18
|
name: "get_card_prices",
|
|
20
19
|
description: "Get current normal and foil prices for a specific card printing.",
|
|
21
20
|
inputSchema: z.object(getCardInputSchema),
|
|
22
|
-
handler: async (input) =>
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
handler: async (input) => {
|
|
22
|
+
const { data, error } = await apiClient.GET("/api/v1/cards/{setCode}/{setNumber}/prices", { params: { path: input } });
|
|
23
|
+
return unwrap(data, error);
|
|
24
|
+
},
|
|
25
25
|
};
|
|
26
26
|
export const getCardPriceHistoryTool = {
|
|
27
27
|
name: "get_card_price_history",
|
|
28
28
|
description: "Get the 30-day price history for a card printing (normal + foil). Older data is retained on a weekly/monthly cadence beyond 30 days.",
|
|
29
29
|
inputSchema: z.object(getCardInputSchema),
|
|
30
|
-
handler: async (input) =>
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
handler: async (input) => {
|
|
31
|
+
const { data, error } = await apiClient.GET("/api/v1/cards/{setCode}/{setNumber}/price-history", { params: { path: input } });
|
|
32
|
+
return unwrap(data, error);
|
|
33
|
+
},
|
|
33
34
|
};
|
|
34
35
|
//# sourceMappingURL=get-card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-card.js","sourceRoot":"","sources":["../../src/tools/get-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"get-card.js","sourceRoot":"","sources":["../../src/tools/get-card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oGAAoG,CAAC;CACrI,CAAC;AAIF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAc;IAC1C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CACzC,qCAAqC,EACrC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAC5B,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,UAAU;IAChB,WAAW,EACT,mMAAmM;IACrM,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,kEAAkE;IAC/E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;QAChC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CACzC,4CAA4C,EAC5C,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAC5B,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,sIAAsI;IACxI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;QAChC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CACzC,mDAAmD,EACnD,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAC5B,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC"}
|
package/dist/tools/inventory.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { apiClient, AUTH_HEADERS, unwrap } from "../api-client.js";
|
|
3
3
|
const inventoryItem = z.object({
|
|
4
4
|
cardId: z.string().uuid().describe("Internal IWMM card UUID. Get from search_cards or get_card."),
|
|
5
5
|
quantity: z.number().int().min(0).describe("Total quantity for this card+finish. 0 removes the row."),
|
|
@@ -12,23 +12,37 @@ export const listInventoryTool = {
|
|
|
12
12
|
page: z.number().int().min(1).optional(),
|
|
13
13
|
limit: z.number().int().min(1).max(100).optional(),
|
|
14
14
|
}),
|
|
15
|
-
handler: (input) =>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
handler: async (input) => {
|
|
16
|
+
const { data, error } = await apiClient.GET("/api/v1/inventory", {
|
|
17
|
+
params: { query: input },
|
|
18
|
+
headers: AUTH_HEADERS,
|
|
19
|
+
});
|
|
20
|
+
return unwrap(data, error);
|
|
21
|
+
},
|
|
20
22
|
};
|
|
21
23
|
export const addInventoryTool = {
|
|
22
24
|
name: "add_inventory",
|
|
23
25
|
description: "Add one or more cards to the authenticated user's inventory. Accepts a batch - pass a single-item array for one card. This is a real write. Use update_inventory to change quantities, remove_inventory to delete a row. Requires IWMM_API_KEY.",
|
|
24
26
|
inputSchema: z.object({ items: z.array(inventoryItem).min(1) }),
|
|
25
|
-
handler: (input) =>
|
|
27
|
+
handler: async (input) => {
|
|
28
|
+
const { data, error } = await apiClient.POST("/api/v1/inventory", {
|
|
29
|
+
body: input.items,
|
|
30
|
+
headers: AUTH_HEADERS,
|
|
31
|
+
});
|
|
32
|
+
return unwrap(data, error);
|
|
33
|
+
},
|
|
26
34
|
};
|
|
27
35
|
export const updateInventoryTool = {
|
|
28
36
|
name: "update_inventory",
|
|
29
37
|
description: "Update quantities for one or more existing inventory rows. Accepts a batch. Use remove_inventory to delete a row entirely. Requires IWMM_API_KEY.",
|
|
30
38
|
inputSchema: z.object({ items: z.array(inventoryItem).min(1) }),
|
|
31
|
-
handler: (input) =>
|
|
39
|
+
handler: async (input) => {
|
|
40
|
+
const { data, error } = await apiClient.PATCH("/api/v1/inventory", {
|
|
41
|
+
body: input.items,
|
|
42
|
+
headers: AUTH_HEADERS,
|
|
43
|
+
});
|
|
44
|
+
return unwrap(data, error);
|
|
45
|
+
},
|
|
32
46
|
};
|
|
33
47
|
export const removeInventoryTool = {
|
|
34
48
|
name: "remove_inventory",
|
|
@@ -37,7 +51,13 @@ export const removeInventoryTool = {
|
|
|
37
51
|
cardId: z.string().uuid(),
|
|
38
52
|
isFoil: z.boolean(),
|
|
39
53
|
}),
|
|
40
|
-
handler: (input) =>
|
|
54
|
+
handler: async (input) => {
|
|
55
|
+
const { data, error } = await apiClient.DELETE("/api/v1/inventory", {
|
|
56
|
+
body: input,
|
|
57
|
+
headers: AUTH_HEADERS,
|
|
58
|
+
});
|
|
59
|
+
return unwrap(data, error);
|
|
60
|
+
},
|
|
41
61
|
};
|
|
42
62
|
export const getInventoryQuantitiesTool = {
|
|
43
63
|
name: "get_inventory_quantities",
|
|
@@ -45,10 +65,12 @@ export const getInventoryQuantitiesTool = {
|
|
|
45
65
|
inputSchema: z.object({
|
|
46
66
|
cardIds: z.array(z.string().uuid()).min(1).max(200),
|
|
47
67
|
}),
|
|
48
|
-
handler: ({ cardIds }) =>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
68
|
+
handler: async ({ cardIds }) => {
|
|
69
|
+
const { data, error } = await apiClient.GET("/api/v1/inventory/quantities", {
|
|
70
|
+
params: { query: { cardIds: cardIds.join(",") } },
|
|
71
|
+
headers: AUTH_HEADERS,
|
|
72
|
+
});
|
|
73
|
+
return unwrap(data, error);
|
|
74
|
+
},
|
|
53
75
|
};
|
|
54
76
|
//# sourceMappingURL=inventory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../src/tools/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../src/tools/inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,48 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { apiClient, AUTH_HEADERS, unwrap } from "../api-client.js";
|
|
3
3
|
export const listNotificationsTool = {
|
|
4
4
|
name: "list_notifications",
|
|
5
5
|
description: "List the authenticated user's price alert notifications, newest first. Includes both read and unread. Requires IWMM_API_KEY.",
|
|
6
6
|
inputSchema: z.object({}),
|
|
7
|
-
handler: () =>
|
|
7
|
+
handler: async () => {
|
|
8
|
+
const { data, error } = await apiClient.GET("/api/v1/notifications", {
|
|
9
|
+
headers: AUTH_HEADERS,
|
|
10
|
+
});
|
|
11
|
+
return unwrap(data, error);
|
|
12
|
+
},
|
|
8
13
|
};
|
|
9
14
|
export const getUnreadCountTool = {
|
|
10
15
|
name: "get_unread_notification_count",
|
|
11
16
|
description: "Get the count of unread notifications for the authenticated user. Requires IWMM_API_KEY.",
|
|
12
17
|
inputSchema: z.object({}),
|
|
13
|
-
handler: () =>
|
|
18
|
+
handler: async () => {
|
|
19
|
+
const { data, error } = await apiClient.GET("/api/v1/notifications/unread-count", {
|
|
20
|
+
headers: AUTH_HEADERS,
|
|
21
|
+
});
|
|
22
|
+
return unwrap(data, error);
|
|
23
|
+
},
|
|
14
24
|
};
|
|
15
25
|
export const markNotificationReadTool = {
|
|
16
26
|
name: "mark_notification_read",
|
|
17
27
|
description: "Mark a single notification as read. Requires IWMM_API_KEY.",
|
|
18
|
-
inputSchema: z.object({ id: z.
|
|
19
|
-
handler: ({ id }) =>
|
|
28
|
+
inputSchema: z.object({ id: z.coerce.number().int() }),
|
|
29
|
+
handler: async ({ id }) => {
|
|
30
|
+
const { data, error } = await apiClient.PATCH("/api/v1/notifications/{id}/read", {
|
|
31
|
+
params: { path: { id } },
|
|
32
|
+
headers: AUTH_HEADERS,
|
|
33
|
+
});
|
|
34
|
+
return unwrap(data, error);
|
|
35
|
+
},
|
|
20
36
|
};
|
|
21
37
|
export const markAllNotificationsReadTool = {
|
|
22
38
|
name: "mark_all_notifications_read",
|
|
23
39
|
description: "Mark every notification for the authenticated user as read. Requires IWMM_API_KEY.",
|
|
24
40
|
inputSchema: z.object({}),
|
|
25
|
-
handler: () =>
|
|
41
|
+
handler: async () => {
|
|
42
|
+
const { data, error } = await apiClient.PATCH("/api/v1/notifications/read-all", {
|
|
43
|
+
headers: AUTH_HEADERS,
|
|
44
|
+
});
|
|
45
|
+
return unwrap(data, error);
|
|
46
|
+
},
|
|
26
47
|
};
|
|
27
48
|
//# sourceMappingURL=notifications.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/tools/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/tools/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,8HAA8H;IAChI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACzB,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACnE,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,+BAA+B;IACrC,WAAW,EAAE,0FAA0F;IACvG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACzB,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,oCAAoC,EAAE;YAChF,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,4DAA4D;IACzE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;IACtD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAkB,EAAE,EAAE;QACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,iCAAiC,EAAE;YAC/E,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;YACxB,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,oFAAoF;IACjG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACzB,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,gCAAgC,EAAE;YAC9E,OAAO,EAAE,YAAY;SACtB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC"}
|
package/dist/tools/portfolio.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { apiClient, AUTH_HEADERS, unwrap } from "../api-client.js";
|
|
3
3
|
export const getPortfolioSummaryTool = {
|
|
4
4
|
name: "get_portfolio_summary",
|
|
5
5
|
description: "Get the authenticated user's portfolio summary - current value, total invested, unrealized P&L, ROI, card/unit counts. Free tier sees current value + total invested only; Premium gets the full P&L set. Requires IWMM_API_KEY.",
|
|
6
6
|
inputSchema: z.object({}),
|
|
7
|
-
handler: () =>
|
|
7
|
+
handler: async () => {
|
|
8
|
+
const { data, error } = await apiClient.GET("/api/v1/portfolio", {
|
|
9
|
+
headers: AUTH_HEADERS,
|
|
10
|
+
});
|
|
11
|
+
return unwrap(data, error);
|
|
12
|
+
},
|
|
8
13
|
};
|
|
9
14
|
export const getPortfolioHistoryTool = {
|
|
10
15
|
name: "get_portfolio_history",
|
|
@@ -12,7 +17,13 @@ export const getPortfolioHistoryTool = {
|
|
|
12
17
|
inputSchema: z.object({
|
|
13
18
|
days: z.number().int().min(1).max(3650).optional().describe("How many days of history. Server default applies if omitted."),
|
|
14
19
|
}),
|
|
15
|
-
handler: ({ days }) =>
|
|
20
|
+
handler: async ({ days }) => {
|
|
21
|
+
const { data, error } = await apiClient.GET("/api/v1/portfolio/history", {
|
|
22
|
+
params: { query: { days } },
|
|
23
|
+
headers: AUTH_HEADERS,
|
|
24
|
+
});
|
|
25
|
+
return unwrap(data, error);
|
|
26
|
+
},
|
|
16
27
|
};
|
|
17
28
|
export const getCardPerformanceTool = {
|
|
18
29
|
name: "get_card_performance",
|
|
@@ -21,19 +32,35 @@ export const getCardPerformanceTool = {
|
|
|
21
32
|
type: z.enum(["best", "worst"]).optional(),
|
|
22
33
|
limit: z.number().int().min(1).max(100).optional(),
|
|
23
34
|
}),
|
|
24
|
-
handler: (input) =>
|
|
35
|
+
handler: async (input) => {
|
|
36
|
+
const { data, error } = await apiClient.GET("/api/v1/portfolio/performance", {
|
|
37
|
+
params: { query: input },
|
|
38
|
+
headers: AUTH_HEADERS,
|
|
39
|
+
});
|
|
40
|
+
return unwrap(data, error);
|
|
41
|
+
},
|
|
25
42
|
};
|
|
26
43
|
export const getCashFlowTool = {
|
|
27
44
|
name: "get_cash_flow",
|
|
28
45
|
description: "Get the user's cash flow (money in vs money out from BUY/SELL transactions). Premium-gated. Requires IWMM_API_KEY.",
|
|
29
46
|
inputSchema: z.object({}),
|
|
30
|
-
handler: () =>
|
|
47
|
+
handler: async () => {
|
|
48
|
+
const { data, error } = await apiClient.GET("/api/v1/portfolio/cash-flow", {
|
|
49
|
+
headers: AUTH_HEADERS,
|
|
50
|
+
});
|
|
51
|
+
return unwrap(data, error);
|
|
52
|
+
},
|
|
31
53
|
};
|
|
32
54
|
export const getRealizedGainsTool = {
|
|
33
55
|
name: "get_realized_gains",
|
|
34
56
|
description: "Get the user's realized gains from SELL transactions using FIFO cost basis. Premium-gated. Requires IWMM_API_KEY.",
|
|
35
57
|
inputSchema: z.object({}),
|
|
36
|
-
handler: () =>
|
|
58
|
+
handler: async () => {
|
|
59
|
+
const { data, error } = await apiClient.GET("/api/v1/portfolio/realized-gains", {
|
|
60
|
+
headers: AUTH_HEADERS,
|
|
61
|
+
});
|
|
62
|
+
return unwrap(data, error);
|
|
63
|
+
},
|
|
37
64
|
};
|
|
38
65
|
export const getPortfolioBreakdownTool = {
|
|
39
66
|
name: "get_portfolio_breakdown",
|
|
@@ -43,12 +70,23 @@ export const getPortfolioBreakdownTool = {
|
|
|
43
70
|
.enum(["set", "rarity", "type", "format", "cost-basis"])
|
|
44
71
|
.describe("Dimension to break down by. 'cost-basis' buckets are gain/loss/at-cost."),
|
|
45
72
|
}),
|
|
46
|
-
handler: ({ by }) =>
|
|
73
|
+
handler: async ({ by }) => {
|
|
74
|
+
const { data, error } = await apiClient.GET("/api/v1/portfolio/breakdown", {
|
|
75
|
+
params: { query: { by } },
|
|
76
|
+
headers: AUTH_HEADERS,
|
|
77
|
+
});
|
|
78
|
+
return unwrap(data, error);
|
|
79
|
+
},
|
|
47
80
|
};
|
|
48
81
|
export const refreshPortfolioTool = {
|
|
49
82
|
name: "refresh_portfolio",
|
|
50
83
|
description: "Recalculate the user's portfolio P&L. Use after recording a batch of transactions if you want immediate fresh numbers. Requires IWMM_API_KEY.",
|
|
51
84
|
inputSchema: z.object({}),
|
|
52
|
-
handler: () =>
|
|
85
|
+
handler: async () => {
|
|
86
|
+
const { data, error } = await apiClient.POST("/api/v1/portfolio/refresh", {
|
|
87
|
+
headers: AUTH_HEADERS,
|
|
88
|
+
});
|
|
89
|
+
return unwrap(data, error);
|
|
90
|
+
},
|
|
53
91
|
};
|
|
54
92
|
//# sourceMappingURL=portfolio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/tools/portfolio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/tools/portfolio.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { apiClient, unwrap } from "../api-client.js";
|
|
3
3
|
export const searchCardsInputSchema = {
|
|
4
4
|
q: z
|
|
5
5
|
.string()
|
|
@@ -26,10 +26,12 @@ export const searchCardsInputSchema = {
|
|
|
26
26
|
limit: z.number().int().min(1).max(100).optional().describe("Page size (max 100)."),
|
|
27
27
|
};
|
|
28
28
|
export async function searchCards(input) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
// zod validates the query at the tool boundary; the generated spec types
|
|
30
|
+
// most of these params as `unknown`, so cast rather than fight the spec.
|
|
31
|
+
const { data, error } = await apiClient.GET("/api/v1/cards", {
|
|
32
|
+
params: { query: input },
|
|
32
33
|
});
|
|
34
|
+
return unwrap(data, error);
|
|
33
35
|
}
|
|
34
36
|
export const searchCardsTool = {
|
|
35
37
|
name: "search_cards",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-cards.js","sourceRoot":"","sources":["../../src/tools/search-cards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"search-cards.js","sourceRoot":"","sources":["../../src/tools/search-cards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,CAAC,EAAE,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6GAA6G,CAAC;IAC1H,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACtF,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SAC9C,QAAQ,EAAE;SACV,QAAQ,CAAC,mBAAmB,CAAC;IAChC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oEAAoE,CAAC;IACjF,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oFAAoF,CAAC;IACjG,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;SACvC,QAAQ,EAAE;SACV,QAAQ,CAAC,6DAA6D,CAAC;IAC1E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;CACpF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAA8B;IAC9D,yEAAyE;IACzE,yEAAyE;IACzE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,eAAe,EAAE;QAC3D,MAAM,EAAE,EAAE,KAAK,EAAE,KAAc,EAAE;KAClC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,oPAAoP;IACtP,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAC7C,OAAO,EAAE,WAAW;CACrB,CAAC"}
|
package/dist/tools/sets.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { apiClient, unwrap } from "../api-client.js";
|
|
3
3
|
export const searchSetsTool = {
|
|
4
4
|
name: "search_sets",
|
|
5
5
|
description: "List Magic: The Gathering sets, optionally paginated. Returns set code, name, release date, type, and aggregate prices.",
|
|
@@ -7,13 +7,23 @@ export const searchSetsTool = {
|
|
|
7
7
|
page: z.number().int().min(1).optional(),
|
|
8
8
|
limit: z.number().int().min(1).max(100).optional(),
|
|
9
9
|
}),
|
|
10
|
-
handler: (input) =>
|
|
10
|
+
handler: async (input) => {
|
|
11
|
+
const { data, error } = await apiClient.GET("/api/v1/sets", {
|
|
12
|
+
params: { query: input },
|
|
13
|
+
});
|
|
14
|
+
return unwrap(data, error);
|
|
15
|
+
},
|
|
11
16
|
};
|
|
12
17
|
export const getSetTool = {
|
|
13
18
|
name: "get_set",
|
|
14
19
|
description: "Get detail for a single set by code (e.g. 'lea', 'mh3').",
|
|
15
20
|
inputSchema: z.object({ code: z.string() }),
|
|
16
|
-
handler: ({ code }) =>
|
|
21
|
+
handler: async ({ code }) => {
|
|
22
|
+
const { data, error } = await apiClient.GET("/api/v1/sets/{code}", {
|
|
23
|
+
params: { path: { code } },
|
|
24
|
+
});
|
|
25
|
+
return unwrap(data, error);
|
|
26
|
+
},
|
|
17
27
|
};
|
|
18
28
|
export const listSetCardsTool = {
|
|
19
29
|
name: "list_set_cards",
|
|
@@ -27,15 +37,22 @@ export const listSetCardsTool = {
|
|
|
27
37
|
page: z.number().int().min(1).optional(),
|
|
28
38
|
limit: z.number().int().min(1).max(100).optional(),
|
|
29
39
|
}),
|
|
30
|
-
handler: ({ code, ...rest }) =>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
handler: async ({ code, ...rest }) => {
|
|
41
|
+
const { data, error } = await apiClient.GET("/api/v1/sets/{code}/cards", {
|
|
42
|
+
params: { path: { code }, query: rest },
|
|
43
|
+
});
|
|
44
|
+
return unwrap(data, error);
|
|
45
|
+
},
|
|
34
46
|
};
|
|
35
47
|
export const getSealedProductsTool = {
|
|
36
48
|
name: "get_sealed_products",
|
|
37
49
|
description: "List sealed products (booster boxes, bundles, commander decks, etc.) for a set. Each entry includes a TCGPlayer purchase URL.",
|
|
38
50
|
inputSchema: z.object({ code: z.string() }),
|
|
39
|
-
handler: ({ code }) =>
|
|
51
|
+
handler: async ({ code }) => {
|
|
52
|
+
const { data, error } = await apiClient.GET("/api/v1/sets/{code}/sealed-products", {
|
|
53
|
+
params: { path: { code } },
|
|
54
|
+
});
|
|
55
|
+
return unwrap(data, error);
|
|
56
|
+
},
|
|
40
57
|
};
|
|
41
58
|
//# sourceMappingURL=sets.js.map
|
package/dist/tools/sets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sets.js","sourceRoot":"","sources":["../../src/tools/sets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sets.js","sourceRoot":"","sources":["../../src/tools/sets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { apiClient, AUTH_HEADERS, unwrap } from "../api-client.js";
|
|
3
3
|
const transactionCreate = z.object({
|
|
4
4
|
cardId: z.string().describe("Internal IWMM card UUID."),
|
|
5
5
|
type: z.enum(["BUY", "SELL"]),
|
|
@@ -33,17 +33,25 @@ export const listTransactionsTool = {
|
|
|
33
33
|
order: z.enum(["asc", "desc"]).optional(),
|
|
34
34
|
type: z.enum(["BUY", "SELL"]).optional(),
|
|
35
35
|
}),
|
|
36
|
-
handler: (input) =>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
handler: async (input) => {
|
|
37
|
+
const { data, error } = await apiClient.GET("/api/v1/transactions", {
|
|
38
|
+
params: { query: input },
|
|
39
|
+
headers: AUTH_HEADERS,
|
|
40
|
+
});
|
|
41
|
+
return unwrap(data, error);
|
|
42
|
+
},
|
|
41
43
|
};
|
|
42
44
|
export const recordTransactionTool = {
|
|
43
45
|
name: "record_transaction",
|
|
44
46
|
description: "Record a buy or sell transaction. By default this also adjusts inventory (BUY adds, SELL subtracts). This is a real write. Requires IWMM_API_KEY.",
|
|
45
47
|
inputSchema: transactionCreate,
|
|
46
|
-
handler: (input) =>
|
|
48
|
+
handler: async (input) => {
|
|
49
|
+
const { data, error } = await apiClient.POST("/api/v1/transactions", {
|
|
50
|
+
body: input,
|
|
51
|
+
headers: AUTH_HEADERS,
|
|
52
|
+
});
|
|
53
|
+
return unwrap(data, error);
|
|
54
|
+
},
|
|
47
55
|
};
|
|
48
56
|
export const updateTransactionTool = {
|
|
49
57
|
name: "update_transaction",
|
|
@@ -52,13 +60,26 @@ export const updateTransactionTool = {
|
|
|
52
60
|
id: z.number().int().min(1).describe("Transaction ID from list_transactions."),
|
|
53
61
|
patch: transactionUpdate,
|
|
54
62
|
}),
|
|
55
|
-
handler: ({ id, patch }) =>
|
|
63
|
+
handler: async ({ id, patch }) => {
|
|
64
|
+
const { data, error } = await apiClient.PUT("/api/v1/transactions/{id}", {
|
|
65
|
+
params: { path: { id } },
|
|
66
|
+
body: patch,
|
|
67
|
+
headers: AUTH_HEADERS,
|
|
68
|
+
});
|
|
69
|
+
return unwrap(data, error);
|
|
70
|
+
},
|
|
56
71
|
};
|
|
57
72
|
export const deleteTransactionTool = {
|
|
58
73
|
name: "delete_transaction",
|
|
59
74
|
description: "Delete a transaction by ID. Requires IWMM_API_KEY.",
|
|
60
75
|
inputSchema: z.object({ id: z.number().int().min(1) }),
|
|
61
|
-
handler: ({ id }) =>
|
|
76
|
+
handler: async ({ id }) => {
|
|
77
|
+
const { data, error } = await apiClient.DELETE("/api/v1/transactions/{id}", {
|
|
78
|
+
params: { path: { id } },
|
|
79
|
+
headers: AUTH_HEADERS,
|
|
80
|
+
});
|
|
81
|
+
return unwrap(data, error);
|
|
82
|
+
},
|
|
62
83
|
};
|
|
63
84
|
export const getCostBasisTool = {
|
|
64
85
|
name: "get_cost_basis",
|
|
@@ -73,12 +94,20 @@ export const getCostBasisTool = {
|
|
|
73
94
|
.refine((v) => !!v.cardId || (!!v.setCode && !!v.setNumber), {
|
|
74
95
|
message: "Provide either cardId, or both setCode and setNumber.",
|
|
75
96
|
}),
|
|
76
|
-
handler: (input) => {
|
|
97
|
+
handler: async (input) => {
|
|
77
98
|
const query = { isFoil: input.isFoil };
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
99
|
+
if (input.cardId) {
|
|
100
|
+
const { data, error } = await apiClient.GET("/api/v1/transactions/cost-basis/{cardId}", {
|
|
101
|
+
params: { path: { cardId: input.cardId }, query },
|
|
102
|
+
headers: AUTH_HEADERS,
|
|
103
|
+
});
|
|
104
|
+
return unwrap(data, error);
|
|
105
|
+
}
|
|
106
|
+
const { data, error } = await apiClient.GET("/api/v1/transactions/cost-basis/{setCode}/{setNumber}", {
|
|
107
|
+
params: { path: { setCode: input.setCode, setNumber: input.setNumber }, query },
|
|
108
|
+
headers: AUTH_HEADERS,
|
|
109
|
+
});
|
|
110
|
+
return unwrap(data, error);
|
|
82
111
|
},
|
|
83
112
|
};
|
|
84
113
|
//# sourceMappingURL=transactions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"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"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iwantmymtg-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "MCP server for I Want My MTG - query cards/sets and manage your collection from Claude Desktop, Claude Code, Cursor, and other MCP clients.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
"README.md"
|
|
12
12
|
],
|
|
13
13
|
"scripts": {
|
|
14
|
+
"build:types": "node scripts/build-types.mjs",
|
|
15
|
+
"prebuild": "npm run build:types",
|
|
14
16
|
"build": "tsc",
|
|
15
17
|
"start": "node dist/index.js",
|
|
16
18
|
"dev": "tsc --watch",
|
|
@@ -36,11 +38,13 @@
|
|
|
36
38
|
"homepage": "https://iwantmymtg.net",
|
|
37
39
|
"dependencies": {
|
|
38
40
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
41
|
+
"openapi-fetch": "^0.17.0",
|
|
39
42
|
"zod": "^3.23.0",
|
|
40
43
|
"zod-to-json-schema": "^3.23.0"
|
|
41
44
|
},
|
|
42
45
|
"devDependencies": {
|
|
43
46
|
"@types/node": "^20.14.0",
|
|
47
|
+
"openapi-typescript": "^7.13.0",
|
|
44
48
|
"tsx": "^4.16.0",
|
|
45
49
|
"typescript": "^5.5.0"
|
|
46
50
|
}
|