@alfe.ai/shopify-mcp 0.2.0 → 0.2.2

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 (2) hide show
  1. package/dist/server.js +7 -7
  2. package/package.json +3 -3
package/dist/server.js CHANGED
@@ -158,7 +158,7 @@ function registerTools(server, resolveClient, listShops) {
158
158
  description: "List products in a connected Shopify store. Supports a search `query` (Shopify search syntax, e.g. \"title:Shirt status:active\") and cursor pagination.",
159
159
  inputSchema: {
160
160
  shop: shopField,
161
- first: z.number().int().min(1).max(250).optional().describe("Page size (default 50, max 250)."),
161
+ first: z.coerce.number().int().min(1).max(250).optional().describe("Page size (default 50, max 250)."),
162
162
  after: z.string().optional().describe("Pagination cursor from a previous page's pageInfo.endCursor."),
163
163
  query: z.string().optional().describe("Optional Shopify product search query.")
164
164
  }
@@ -285,7 +285,7 @@ function registerTools(server, resolveClient, listShops) {
285
285
  description: "List orders in a connected Shopify store. Supports a Shopify search `query` for status/date filters (e.g. \"financial_status:paid created_at:>2026-01-01 fulfillment_status:unfulfilled\") and cursor pagination.",
286
286
  inputSchema: {
287
287
  shop: shopField,
288
- first: z.number().int().min(1).max(250).optional().describe("Page size (default 50, max 250)."),
288
+ first: z.coerce.number().int().min(1).max(250).optional().describe("Page size (default 50, max 250)."),
289
289
  after: z.string().optional().describe("Pagination cursor."),
290
290
  query: z.string().optional().describe("Optional Shopify order search query (status/date filters).")
291
291
  }
@@ -367,7 +367,7 @@ function registerTools(server, resolveClient, listShops) {
367
367
  notify: z.boolean().optional().describe("Notify the customer (default false)."),
368
368
  refundLineItems: z.array(z.object({
369
369
  lineItemId: z.string().describe("The order line item GID to refund."),
370
- quantity: z.number().int().min(1),
370
+ quantity: z.coerce.number().int().min(1),
371
371
  restockType: z.enum([
372
372
  "NO_RESTOCK",
373
373
  "CANCEL",
@@ -446,7 +446,7 @@ function registerTools(server, resolveClient, listShops) {
446
446
  description: "List customers in a connected Shopify store. Supports a Shopify search `query` (e.g. \"email:*@example.com\") and cursor pagination.",
447
447
  inputSchema: {
448
448
  shop: shopField,
449
- first: z.number().int().min(1).max(250).optional().describe("Page size (default 50, max 250)."),
449
+ first: z.coerce.number().int().min(1).max(250).optional().describe("Page size (default 50, max 250)."),
450
450
  after: z.string().optional(),
451
451
  query: z.string().optional().describe("Optional Shopify customer search query.")
452
452
  }
@@ -537,7 +537,7 @@ function registerTools(server, resolveClient, listShops) {
537
537
  description: "List the inventory locations of a connected Shopify store (needed to adjust inventory levels).",
538
538
  inputSchema: {
539
539
  shop: shopField,
540
- first: z.number().int().min(1).max(250).optional().describe("Page size (default 50).")
540
+ first: z.coerce.number().int().min(1).max(250).optional().describe("Page size (default 50).")
541
541
  }
542
542
  }, guarded(async (client, args) => {
543
543
  return ok(await client.graphql(`query ListLocations($first: Int!) {
@@ -551,7 +551,7 @@ function registerTools(server, resolveClient, listShops) {
551
551
  inputSchema: {
552
552
  shop: shopField,
553
553
  inventoryItemId: z.string().describe("The inventory item GID (variant.inventoryItem.id)."),
554
- first: z.number().int().min(1).max(250).optional().describe("Page size (default 50).")
554
+ first: z.coerce.number().int().min(1).max(250).optional().describe("Page size (default 50).")
555
555
  }
556
556
  }, guarded(async (client, args) => {
557
557
  return ok(await client.graphql(`query InventoryLevels($id: ID!, $first: Int!) {
@@ -577,7 +577,7 @@ function registerTools(server, resolveClient, listShops) {
577
577
  shop: shopField,
578
578
  inventoryItemId: z.string().describe("The inventory item GID."),
579
579
  locationId: z.string().describe("The location GID (from shopify_list_locations)."),
580
- delta: z.number().int().describe("Signed quantity change, e.g. 10 or -3."),
580
+ delta: z.coerce.number().int().describe("Signed quantity change, e.g. 10 or -3."),
581
581
  reason: z.string().optional().describe("Adjustment reason code (default \"correction\").")
582
582
  }
583
583
  }, guarded(async (client, args) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfe.ai/shopify-mcp",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Shopify MCP server — full store management (products, orders incl. fulfil/refund, customers, inventory) over the Admin GraphQL API with Alfe OAuth credentials",
5
5
  "type": "module",
6
6
  "main": "./dist/server.js",
@@ -19,8 +19,8 @@
19
19
  "dependencies": {
20
20
  "@modelcontextprotocol/sdk": "^1.29.0",
21
21
  "zod": "^4.0.5",
22
- "@alfe.ai/config": "0.3.0",
23
- "@alfe.ai/agent-api-client": "0.12.0"
22
+ "@alfe.ai/config": "0.4.0",
23
+ "@alfe.ai/agent-api-client": "0.14.0"
24
24
  },
25
25
  "license": "UNLICENSED",
26
26
  "homepage": "https://alfe.ai",