posha-api-mcp 1.0.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.
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Static metadata for all 17 resources, derived from the Java FieldRegistry
3
+ * implementations. Each entry describes the filterable/sortable fields,
4
+ * their types, tiers, and allowed operators.
5
+ */
6
+ function f(name, type, tier, sortable, operators) {
7
+ return { name, type, tier, sortable, operators };
8
+ }
9
+ export const RESOURCES = [
10
+ {
11
+ resourceName: "Users",
12
+ slug: "users",
13
+ collectionName: "users",
14
+ idField: "uid",
15
+ approximateDocCount: "~50K",
16
+ fields: [
17
+ f("uid", "STRING", "TIER_1", false, ["eq", "ne", "in", "nin", "regex"]),
18
+ f("email", "STRING", "TIER_1", false, ["eq", "ne", "in", "nin", "regex"]),
19
+ f("updatedOn", "STRING", "TIER_1", true, ["eq", "gt", "gte", "lt", "lte"]),
20
+ f("lastLoginAt", "STRING", "TIER_1", true, ["eq", "gt", "gte", "lt", "lte"]),
21
+ f("emailVerified", "BOOLEAN", "TIER_2", false, ["eq"]),
22
+ f("isOnBoarded", "BOOLEAN", "TIER_2", false, ["eq"]),
23
+ f("simplifiedByDefault", "BOOLEAN", "TIER_2", false, ["eq"]),
24
+ f("groceryOnboarded", "BOOLEAN", "TIER_2", false, ["eq"]),
25
+ f("specialObs", "BOOLEAN", "TIER_2", false, ["eq"]),
26
+ f("currentMachine", "STRING", "TIER_2", false, ["eq", "ne", "in", "nin"]),
27
+ f("machines", "STRING", "TIER_2", false, ["in", "nin"]),
28
+ f("schemaVersion", "INTEGER", "TIER_2", false, ["eq", "ne", "gt", "gte", "lt", "lte"]),
29
+ f("referralCode", "STRING", "TIER_2", false, ["eq", "ne", "regex", "exists"]),
30
+ f("stripeId", "STRING", "TIER_2", false, ["eq", "exists"]),
31
+ f("chargebeeInfo.chargebeeId", "STRING", "TIER_2", false, ["eq", "exists"]),
32
+ f("authProvider", "STRING", "TIER_2", false, ["in", "nin"]),
33
+ ],
34
+ },
35
+ {
36
+ resourceName: "Sessions",
37
+ slug: "sessions",
38
+ collectionName: "sessions",
39
+ idField: "_id",
40
+ approximateDocCount: "~500K",
41
+ fields: [
42
+ f("createdOn", "STRING", "TIER_1", true, ["eq", "gt", "gte", "lt", "lte"]),
43
+ f("cookedBy.uid", "STRING", "TIER_1", false, ["eq", "ne", "in", "nin"]),
44
+ f("recipeId", "STRING", "TIER_1", false, ["eq", "ne", "in", "nin"]),
45
+ f("cookedOn", "STRING", "TIER_1", false, ["eq", "ne", "in", "nin"]),
46
+ f("createdDate", "DATETIME", "TIER_1", true, ["eq", "gt", "gte", "lt", "lte"]),
47
+ f("status", "STRING", "TIER_2", false, ["eq", "ne", "in", "nin"]),
48
+ f("recipeName", "STRING", "TIER_2", false, ["eq", "regex"]),
49
+ f("servings", "INTEGER", "TIER_2", false, ["eq", "ne", "gt", "gte", "lt", "lte"]),
50
+ f("prepAlongMode", "BOOLEAN", "TIER_2", false, ["eq"]),
51
+ f("isCoPilot", "BOOLEAN", "TIER_2", false, ["eq"]),
52
+ f("appVersion", "STRING", "TIER_2", false, ["eq", "in"]),
53
+ f("recipeVersion", "STRING", "TIER_2", false, ["eq", "in"]),
54
+ f("schemaVersion", "INTEGER", "TIER_2", false, ["eq"]),
55
+ f("prepType", "STRING", "TIER_2", false, ["eq", "in"]),
56
+ f("timezone", "STRING", "TIER_2", false, ["eq"]),
57
+ f("overallFeedback", "INTEGER", "TIER_2", false, ["eq", "gt", "gte", "lt", "lte"]),
58
+ f("cookedBy.email", "STRING", "TIER_2", false, ["eq", "regex"]),
59
+ f("cookedBy.name", "STRING", "TIER_2", false, ["eq", "regex"]),
60
+ f("updatedOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
61
+ ],
62
+ },
63
+ {
64
+ resourceName: "Session Logs",
65
+ slug: "session-logs",
66
+ collectionName: "session_logs_new",
67
+ idField: "_id",
68
+ approximateDocCount: "~121M",
69
+ fields: [
70
+ f("sId", "STRING", "TIER_1", false, ["eq"]),
71
+ f("logC", "STRING", "TIER_1", false, ["eq", "in", "nin"]),
72
+ f("logT", "LONG", "TIER_1", true, ["eq", "gt", "gte", "lt", "lte"]),
73
+ f("logCtx", "STRING", "TIER_2", false, ["eq", "in", "regex"]),
74
+ f("logS", "STRING", "TIER_2", false, ["eq", "in"]),
75
+ f("msg", "STRING", "TIER_2", false, ["eq", "regex"]),
76
+ f("tags", "STRING", "TIER_2", false, ["in", "nin"]),
77
+ ],
78
+ },
79
+ {
80
+ resourceName: "Recipes",
81
+ slug: "recipes",
82
+ collectionName: "recipes",
83
+ idField: "_id",
84
+ approximateDocCount: "~2.5K",
85
+ fields: [
86
+ f("name", "STRING", "TIER_1", true, ["eq", "ne", "in", "regex"]),
87
+ f("debug", "BOOLEAN", "TIER_1", false, ["eq"]),
88
+ f("classifications", "STRING", "TIER_1", false, ["eq", "in", "nin"]),
89
+ f("userVisibility.isUserSpecific", "BOOLEAN", "TIER_1", false, ["eq"]),
90
+ f("schemaVersion", "INTEGER", "TIER_2", false, ["eq"]),
91
+ f("version", "INTEGER", "TIER_2", false, ["eq", "gt", "gte", "lt", "lte"]),
92
+ f("regions", "STRING", "TIER_2", false, ["eq", "in", "nin"]),
93
+ f("isCustomisable", "BOOLEAN", "TIER_2", false, ["eq"]),
94
+ f("isServing5", "BOOLEAN", "TIER_2", false, ["eq"]),
95
+ f("createdOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
96
+ f("updatedOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
97
+ f("tags", "STRING", "TIER_2", false, ["eq", "in", "nin"]),
98
+ f("addConfig", "STRING", "TIER_2", false, ["eq", "in"]),
99
+ ],
100
+ },
101
+ {
102
+ resourceName: "Recipe Revisions",
103
+ slug: "recipe-revisions",
104
+ collectionName: "recipe_revisions",
105
+ idField: "_id",
106
+ approximateDocCount: "~46K",
107
+ fields: [
108
+ f("masterId", "STRING", "TIER_2", false, ["eq", "in"]),
109
+ f("masterType", "STRING", "TIER_2", false, ["eq"]),
110
+ f("patch", "INTEGER", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
111
+ f("createdOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
112
+ ],
113
+ },
114
+ {
115
+ resourceName: "Recipe Classifications",
116
+ slug: "recipe-classifications",
117
+ collectionName: "recipe_classifications",
118
+ idField: "_id",
119
+ approximateDocCount: "~296",
120
+ fields: [
121
+ f("name", "STRING", "TIER_2", true, ["eq", "ne", "in", "regex"]),
122
+ f("value", "STRING", "TIER_2", false, ["eq", "in"]),
123
+ f("type", "STRING", "TIER_2", false, ["eq", "in"]),
124
+ f("createdOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
125
+ ],
126
+ },
127
+ {
128
+ resourceName: "Recipe Categories",
129
+ slug: "recipe-categories",
130
+ collectionName: "recipe_categories",
131
+ idField: "_id",
132
+ approximateDocCount: "~43",
133
+ fields: [
134
+ f("name", "STRING", "TIER_2", true, ["eq", "ne", "in", "regex"]),
135
+ f("type", "STRING", "TIER_2", false, ["eq", "in"]),
136
+ f("createdOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
137
+ f("updatedOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
138
+ ],
139
+ },
140
+ {
141
+ resourceName: "Recipe Ingredient Classifications",
142
+ slug: "recipe-ingredient-classifications",
143
+ collectionName: "recipe_ingredient_classification",
144
+ idField: "_id",
145
+ approximateDocCount: "~943",
146
+ fields: [
147
+ f("name", "STRING", "TIER_2", true, ["eq", "ne", "in", "regex"]),
148
+ ],
149
+ },
150
+ {
151
+ resourceName: "Machines",
152
+ slug: "machines",
153
+ collectionName: "machines",
154
+ idField: "machineId",
155
+ approximateDocCount: "~2.4K",
156
+ fields: [
157
+ f("machineId", "STRING", "TIER_1", false, ["eq", "ne", "in", "nin", "regex"]),
158
+ f("createdOn", "STRING", "TIER_1", true, ["eq", "gt", "gte", "lt", "lte"]),
159
+ f("updatedOn", "STRING", "TIER_1", true, ["eq", "gt", "gte", "lt", "lte"]),
160
+ f("debug", "BOOLEAN", "TIER_2", false, ["eq"]),
161
+ f("schemaVersion", "INTEGER", "TIER_2", false, ["eq"]),
162
+ f("manufacturedOn", "STRING", "TIER_2", false, ["eq", "gt", "gte", "lt", "lte"]),
163
+ f("testedOn", "STRING", "TIER_2", false, ["eq"]),
164
+ ],
165
+ },
166
+ {
167
+ resourceName: "Ingredients",
168
+ slug: "ingredients",
169
+ collectionName: "ingredients",
170
+ idField: "_id",
171
+ approximateDocCount: "~614",
172
+ fields: [
173
+ f("name", "STRING", "TIER_2", true, ["eq", "ne", "in", "regex"]),
174
+ f("abbreviation", "STRING", "TIER_2", false, ["eq", "regex"]),
175
+ f("category", "STRING", "TIER_2", false, ["eq", "in", "nin"]),
176
+ f("machineDispenseType", "STRING", "TIER_2", false, ["eq", "in"]),
177
+ f("ingredientType", "STRING", "TIER_2", false, ["eq", "in", "nin"]),
178
+ f("approx", "BOOLEAN", "TIER_2", false, ["eq"]),
179
+ f("version", "INTEGER", "TIER_2", false, ["eq"]),
180
+ f("bioFamily", "STRING", "TIER_2", false, ["eq", "in", "regex"]),
181
+ f("groceryCategory", "STRING", "TIER_2", false, ["eq", "in"]),
182
+ f("createdOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
183
+ f("updatedOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
184
+ ],
185
+ },
186
+ {
187
+ resourceName: "Ingredient Blocks",
188
+ slug: "ingredient-blocks",
189
+ collectionName: "ingredient_blocks",
190
+ idField: "_id",
191
+ approximateDocCount: "~31",
192
+ fields: [
193
+ f("name", "STRING", "TIER_2", true, ["eq", "ne", "in", "regex"]),
194
+ f("categories", "STRING", "TIER_2", false, ["eq", "in", "nin"]),
195
+ f("createdOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
196
+ f("updatedOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
197
+ ],
198
+ },
199
+ {
200
+ resourceName: "Ingredient Normalizations",
201
+ slug: "ingredient-normalizations",
202
+ collectionName: "ingredient_normalizations",
203
+ idField: "_id",
204
+ approximateDocCount: "~234",
205
+ fields: [
206
+ f("normalizedName", "STRING", "TIER_2", true, ["eq", "ne", "in", "regex"]),
207
+ f("primaryIngredientId", "STRING", "TIER_2", false, ["eq", "in"]),
208
+ ],
209
+ },
210
+ {
211
+ resourceName: "Food Properties",
212
+ slug: "food-properties",
213
+ collectionName: "food_properties",
214
+ idField: "_id",
215
+ approximateDocCount: "~29",
216
+ fields: [
217
+ f("name", "STRING", "TIER_2", true, ["eq", "ne", "in", "regex"]),
218
+ f("abbreviation", "STRING", "TIER_2", false, ["eq", "in"]),
219
+ f("category", "STRING", "TIER_2", false, ["eq", "in"]),
220
+ f("createdOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
221
+ f("updatedOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
222
+ ],
223
+ },
224
+ {
225
+ resourceName: "Cook Templates",
226
+ slug: "cook-templates",
227
+ collectionName: "cook_templates",
228
+ idField: "_id",
229
+ approximateDocCount: "~57",
230
+ fields: [
231
+ f("name", "STRING", "TIER_2", true, ["eq", "ne", "in", "regex"]),
232
+ f("createdOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
233
+ f("updatedOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
234
+ ],
235
+ },
236
+ {
237
+ resourceName: "Dispense Templates",
238
+ slug: "dispense-templates",
239
+ collectionName: "dispense_templates",
240
+ idField: "_id",
241
+ approximateDocCount: "~59",
242
+ fields: [
243
+ f("name", "STRING", "TIER_2", true, ["eq", "ne", "in", "regex"]),
244
+ f("containerType", "STRING", "TIER_2", false, ["eq", "in"]),
245
+ f("createdOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
246
+ f("updatedOn", "STRING", "TIER_2", true, ["eq", "gt", "gte", "lt", "lte"]),
247
+ ],
248
+ },
249
+ {
250
+ resourceName: "Analytical Events",
251
+ slug: "analytical-events",
252
+ collectionName: "analytical_events",
253
+ idField: "_id",
254
+ approximateDocCount: "~8.9M",
255
+ fields: [
256
+ f("userId", "STRING", "TIER_1", false, ["eq", "ne", "in", "nin"]),
257
+ f("timestamp", "STRING", "TIER_1", true, ["eq", "gt", "gte", "lt", "lte"]),
258
+ f("event", "STRING", "TIER_1", false, ["eq", "ne", "in", "nin", "regex"]),
259
+ f("type", "STRING", "TIER_1", false, ["eq", "in"]),
260
+ f("properties.session_id", "STRING", "TIER_1", false, ["eq", "in"]),
261
+ f("context.client", "STRING", "TIER_1", false, ["eq", "in"]),
262
+ f("name", "STRING", "TIER_2", false, ["eq", "regex"]),
263
+ f("context.clientVersion", "STRING", "TIER_2", false, ["eq", "in"]),
264
+ ],
265
+ },
266
+ ];
267
+ export const RESOURCE_SLUGS = RESOURCES.map((r) => r.slug);
268
+ export function getResourceBySlug(slug) {
269
+ return RESOURCES.find((r) => r.slug === slug);
270
+ }
271
+ export function getFilterableFields(resource) {
272
+ return resource.fields.filter((f) => f.tier !== "TIER_3");
273
+ }
274
+ export function getSortableFields(resource) {
275
+ return resource.fields.filter((f) => f.sortable);
276
+ }
277
+ //# sourceMappingURL=resource-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-metadata.js","sourceRoot":"","sources":["../src/resource-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function createServer(): McpServer;
3
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,wBAAgB,YAAY,IAAI,SAAS,CAgBxC"}
package/dist/server.js ADDED
@@ -0,0 +1,20 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { registerResourceTools } from "./tools/resource-tools.js";
3
+ import { registerSessionTools } from "./tools/session-tools.js";
4
+ import { registerImageTools } from "./tools/image-tools.js";
5
+ import { registerMachineTools } from "./tools/machine-tools.js";
6
+ export function createServer() {
7
+ const server = new McpServer({
8
+ name: "posha-api",
9
+ version: "1.0.0",
10
+ description: "Query the Posha API — users, cooking sessions, recipes, machines, " +
11
+ "ingredients, images, analytical events, and more. Provides read-only access " +
12
+ "to 17 MongoDB-backed resources with filtering, sorting, and pagination.",
13
+ });
14
+ registerResourceTools(server);
15
+ registerSessionTools(server);
16
+ registerImageTools(server);
17
+ registerMachineTools(server);
18
+ return server;
19
+ }
20
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAChB,WAAW,EACT,oEAAoE;YACpE,8EAA8E;YAC9E,yEAAyE;KAC5E,CAAC,CAAC;IAEH,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerImageTools(server: McpServer): void;
3
+ //# sourceMappingURL=image-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-tools.d.ts","sourceRoot":"","sources":["../../src/tools/image-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuN1D"}
@@ -0,0 +1,205 @@
1
+ import { z } from "zod";
2
+ import { getClient } from "../api-client.js";
3
+ export function registerImageTools(server) {
4
+ server.tool("list_session_images", "List all images captured during a cooking session, sorted by capture time. Returns image summaries with filename, capture time, instruction ID, and image type.", {
5
+ sessionId: z
6
+ .string()
7
+ .describe("The session ObjectId (24-char hex string)"),
8
+ }, async ({ sessionId }) => {
9
+ try {
10
+ const client = getClient();
11
+ const data = await client.get(`/sessions/${sessionId}/images/list`);
12
+ return {
13
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
14
+ };
15
+ }
16
+ catch (err) {
17
+ return {
18
+ content: [{ type: "text", text: `Error: ${JSON.stringify(err)}` }],
19
+ isError: true,
20
+ };
21
+ }
22
+ });
23
+ server.tool("get_session_instruction_images", "Get images for a specific cooking instruction within a session. Optionally include only pre/post dispense images.", {
24
+ sessionId: z
25
+ .string()
26
+ .describe("The session ObjectId (24-char hex string)"),
27
+ instructionId: z
28
+ .number()
29
+ .describe("The instruction ID (integer)"),
30
+ prePostDispenseOnly: z
31
+ .boolean()
32
+ .optional()
33
+ .default(false)
34
+ .describe("If true, returns only pre-dispense and post-dispense images for the instruction"),
35
+ }, async ({ sessionId, instructionId, prePostDispenseOnly }) => {
36
+ try {
37
+ const client = getClient();
38
+ const path = prePostDispenseOnly
39
+ ? `/sessions/${sessionId}/images/instruction/${instructionId}/pre-post-dispense`
40
+ : `/sessions/${sessionId}/images/instruction/${instructionId}`;
41
+ const data = await client.get(path);
42
+ return {
43
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
44
+ };
45
+ }
46
+ catch (err) {
47
+ return {
48
+ content: [{ type: "text", text: `Error: ${JSON.stringify(err)}` }],
49
+ isError: true,
50
+ };
51
+ }
52
+ });
53
+ server.tool("get_session_image_detail", "Get full metadata for a specific image including camera details, tangible/intangible details, and image client context.", {
54
+ sessionId: z
55
+ .string()
56
+ .describe("The session ObjectId (24-char hex string)"),
57
+ imageId: z
58
+ .string()
59
+ .describe("The image filename (with or without extension)"),
60
+ }, async ({ sessionId, imageId }) => {
61
+ try {
62
+ const client = getClient();
63
+ const data = await client.get(`/sessions/${sessionId}/images/${imageId}/detail`);
64
+ return {
65
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
66
+ };
67
+ }
68
+ catch (err) {
69
+ return {
70
+ content: [{ type: "text", text: `Error: ${JSON.stringify(err)}` }],
71
+ isError: true,
72
+ };
73
+ }
74
+ });
75
+ server.tool("search_images", "Search images across all sessions within a time range. Requires at least a time range. Supports filtering by session IDs, instruction types (Cook, Dispense), container types (Macro, Liquid, Micro), machine ID, recipe ID, user ID, ingredient IDs, image tags, and more. Time limits: 30 days default, 90 days with narrowing filters.", {
76
+ startTime: z
77
+ .string()
78
+ .optional()
79
+ .describe("Start time in ISO8601 format (e.g. 2026-03-29T00:00:00Z). Either startTime or startTimeEpoch required."),
80
+ endTime: z
81
+ .string()
82
+ .optional()
83
+ .describe("End time in ISO8601 format"),
84
+ startTimeEpoch: z
85
+ .number()
86
+ .optional()
87
+ .describe("Start time in epoch milliseconds (alternative to startTime)"),
88
+ endTimeEpoch: z
89
+ .number()
90
+ .optional()
91
+ .describe("End time in epoch milliseconds (alternative to endTime)"),
92
+ sessionIds: z
93
+ .array(z.string())
94
+ .optional()
95
+ .describe("Filter by session IDs (max 10)"),
96
+ instructionTypes: z
97
+ .array(z.string())
98
+ .optional()
99
+ .describe('Filter by instruction types (e.g. ["Cook", "Dispense"])'),
100
+ containerTypes: z
101
+ .array(z.string())
102
+ .optional()
103
+ .describe('Filter by container types (e.g. ["Macro", "Liquid", "Micro"])'),
104
+ inferenceSources: z
105
+ .array(z.string())
106
+ .optional()
107
+ .describe("Filter by inference source (logCtx)"),
108
+ messageTypes: z
109
+ .array(z.string())
110
+ .optional()
111
+ .describe("Filter by message type"),
112
+ imageTags: z
113
+ .array(z.string())
114
+ .optional()
115
+ .describe('Filter by image tags (e.g. ["pre_dispense_image", "post_dispense_image"])'),
116
+ machineId: z.string().optional().describe("Filter by machine ID"),
117
+ recipeId: z.string().optional().describe("Filter by recipe ID"),
118
+ userId: z.string().optional().describe("Filter by user ID"),
119
+ instructionId: z
120
+ .number()
121
+ .optional()
122
+ .describe("Filter by instruction ID"),
123
+ ingredientIds: z
124
+ .array(z.string())
125
+ .optional()
126
+ .describe("Filter by ingredient IDs present in the image"),
127
+ limit: z
128
+ .number()
129
+ .min(1)
130
+ .max(500)
131
+ .optional()
132
+ .describe("Max results (default 100, max 500)"),
133
+ offset: z
134
+ .number()
135
+ .optional()
136
+ .describe("Number of results to skip (default 0)"),
137
+ sortField: z
138
+ .string()
139
+ .optional()
140
+ .describe("Sort field (default: captureTime)"),
141
+ sortDirection: z
142
+ .enum(["asc", "desc"])
143
+ .optional()
144
+ .describe("Sort direction (default: desc)"),
145
+ }, async (params) => {
146
+ const body = {
147
+ timeRange: {
148
+ ...(params.startTime && { startTimeIso: params.startTime }),
149
+ ...(params.endTime && { endTimeIso: params.endTime }),
150
+ ...(params.startTimeEpoch && { startTime: params.startTimeEpoch }),
151
+ ...(params.endTimeEpoch && { endTime: params.endTimeEpoch }),
152
+ },
153
+ };
154
+ const filters = {};
155
+ if (params.sessionIds)
156
+ filters.sessionIds = params.sessionIds;
157
+ if (params.instructionTypes)
158
+ filters.instructionTypes = params.instructionTypes;
159
+ if (params.containerTypes)
160
+ filters.containerTypes = params.containerTypes;
161
+ if (params.inferenceSources)
162
+ filters.inferenceSources = params.inferenceSources;
163
+ if (params.messageTypes)
164
+ filters.messageTypes = params.messageTypes;
165
+ if (params.imageTags)
166
+ filters.imageTags = params.imageTags;
167
+ if (params.machineId)
168
+ filters.machineId = params.machineId;
169
+ if (params.recipeId)
170
+ filters.recipeId = params.recipeId;
171
+ if (params.userId)
172
+ filters.userId = params.userId;
173
+ if (params.instructionId !== undefined)
174
+ filters.instructionId = params.instructionId;
175
+ if (params.ingredientIds)
176
+ filters.ingredientIds = params.ingredientIds;
177
+ if (Object.keys(filters).length > 0)
178
+ body.filters = filters;
179
+ const pagination = {};
180
+ if (params.limit)
181
+ pagination.limit = params.limit;
182
+ if (params.offset)
183
+ pagination.offset = params.offset;
184
+ if (params.sortField)
185
+ pagination.sortField = params.sortField;
186
+ if (params.sortDirection)
187
+ pagination.sortDirection = params.sortDirection;
188
+ if (Object.keys(pagination).length > 0)
189
+ body.pagination = pagination;
190
+ try {
191
+ const client = getClient();
192
+ const data = await client.post("/images/search", body);
193
+ return {
194
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
195
+ };
196
+ }
197
+ catch (err) {
198
+ return {
199
+ content: [{ type: "text", text: `Error: ${JSON.stringify(err)}` }],
200
+ isError: true,
201
+ };
202
+ }
203
+ });
204
+ }
205
+ //# sourceMappingURL=image-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-tools.js","sourceRoot":"","sources":["../../src/tools/image-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerMachineTools(server: McpServer): void;
3
+ //# sourceMappingURL=machine-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-tools.d.ts","sourceRoot":"","sources":["../../src/tools/machine-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4E5D"}
@@ -0,0 +1,59 @@
1
+ import { z } from "zod";
2
+ import { getClient } from "../api-client.js";
3
+ export function registerMachineTools(server) {
4
+ server.tool("get_machine_storage", "Get the on-device storage reflection (snapshot) for a specific machine, including installed recipes and ingredient data.", {
5
+ machineId: z
6
+ .string()
7
+ .describe('The machine ID (e.g. "g3.33")'),
8
+ }, async ({ machineId }) => {
9
+ try {
10
+ const client = getClient();
11
+ const data = await client.get(`/machines/${encodeURIComponent(machineId)}/storage-reflection`);
12
+ return {
13
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
14
+ };
15
+ }
16
+ catch (err) {
17
+ return {
18
+ content: [{ type: "text", text: `Error: ${JSON.stringify(err)}` }],
19
+ isError: true,
20
+ };
21
+ }
22
+ });
23
+ server.tool("get_machine_details", 'Get additional details for a machine: users registered on the machine, and/or crash dump files from S3. Use the "include" parameter to choose what to fetch.', {
24
+ machineId: z
25
+ .string()
26
+ .describe('The machine ID (e.g. "g3.33")'),
27
+ include: z
28
+ .enum(["users", "crash-dumps", "both"])
29
+ .default("both")
30
+ .describe('What to include: "users" for registered users, "crash-dumps" for crash dump files, "both" for everything'),
31
+ }, async ({ machineId, include }) => {
32
+ const client = getClient();
33
+ const results = {};
34
+ try {
35
+ const encodedId = encodeURIComponent(machineId);
36
+ if (include === "users" || include === "both") {
37
+ results.users = await client.get(`/machines/${encodedId}/users`);
38
+ }
39
+ if (include === "crash-dumps" || include === "both") {
40
+ results.crashDumps = await client.get(`/machines/${encodedId}/crash-dumps`);
41
+ }
42
+ return {
43
+ content: [
44
+ {
45
+ type: "text",
46
+ text: JSON.stringify(results, null, 2),
47
+ },
48
+ ],
49
+ };
50
+ }
51
+ catch (err) {
52
+ return {
53
+ content: [{ type: "text", text: `Error: ${JSON.stringify(err)}` }],
54
+ isError: true,
55
+ };
56
+ }
57
+ });
58
+ }
59
+ //# sourceMappingURL=machine-tools.js.map