@clawpify/skills 1.0.1

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 (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/clawpify/SKILL.md +134 -0
  4. package/clawpify/references/blogs.md +385 -0
  5. package/clawpify/references/bulk-operations.md +386 -0
  6. package/clawpify/references/collections.md +71 -0
  7. package/clawpify/references/customers.md +141 -0
  8. package/clawpify/references/discounts.md +431 -0
  9. package/clawpify/references/draft-orders.md +495 -0
  10. package/clawpify/references/files.md +355 -0
  11. package/clawpify/references/fulfillments.md +437 -0
  12. package/clawpify/references/gift-cards.md +453 -0
  13. package/clawpify/references/inventory.md +107 -0
  14. package/clawpify/references/locations.md +349 -0
  15. package/clawpify/references/marketing.md +352 -0
  16. package/clawpify/references/markets.md +346 -0
  17. package/clawpify/references/menus.md +313 -0
  18. package/clawpify/references/metafields.md +461 -0
  19. package/clawpify/references/orders.md +164 -0
  20. package/clawpify/references/pages.md +308 -0
  21. package/clawpify/references/products.md +277 -0
  22. package/clawpify/references/refunds.md +401 -0
  23. package/clawpify/references/segments.md +319 -0
  24. package/clawpify/references/shipping.md +406 -0
  25. package/clawpify/references/shop.md +307 -0
  26. package/clawpify/references/subscriptions.md +429 -0
  27. package/clawpify/references/translations.md +270 -0
  28. package/clawpify/references/webhooks.md +400 -0
  29. package/dist/agent.d.ts +18 -0
  30. package/dist/agent.d.ts.map +1 -0
  31. package/dist/agent.js +100 -0
  32. package/dist/auth.d.ts +34 -0
  33. package/dist/auth.d.ts.map +1 -0
  34. package/dist/auth.js +58 -0
  35. package/dist/index.d.ts +41 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +22 -0
  38. package/dist/mcp-server.d.ts +3 -0
  39. package/dist/mcp-server.d.ts.map +1 -0
  40. package/dist/mcp-server.js +236 -0
  41. package/dist/shopify.d.ts +29 -0
  42. package/dist/shopify.d.ts.map +1 -0
  43. package/dist/shopify.js +41 -0
  44. package/dist/skills.d.ts +8 -0
  45. package/dist/skills.d.ts.map +1 -0
  46. package/dist/skills.js +36 -0
  47. package/package.json +100 -0
  48. package/src/agent.ts +133 -0
  49. package/src/auth.ts +109 -0
  50. package/src/index.ts +55 -0
  51. package/src/mcp-server.ts +190 -0
  52. package/src/shopify.ts +63 -0
  53. package/src/skills.ts +42 -0
@@ -0,0 +1,437 @@
1
+ # Shopify Fulfillments
2
+
3
+ Manage order fulfillment, tracking, and fulfillment orders via the GraphQL Admin API.
4
+
5
+ ## Overview
6
+
7
+ Fulfillment orders represent line items to be fulfilled from specific locations. Fulfillments are the actual shipments created to fulfill those orders.
8
+
9
+ ## List Fulfillment Orders
10
+
11
+ ```graphql
12
+ query ListFulfillmentOrders($first: Int!, $query: String) {
13
+ fulfillmentOrders(first: $first, query: $query) {
14
+ nodes {
15
+ id
16
+ status
17
+ requestStatus
18
+ assignedLocation {
19
+ name
20
+ address1
21
+ city
22
+ }
23
+ order {
24
+ id
25
+ name
26
+ }
27
+ lineItems(first: 10) {
28
+ nodes {
29
+ id
30
+ totalQuantity
31
+ remainingQuantity
32
+ lineItem {
33
+ title
34
+ sku
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
41
+ ```
42
+ Variables: `{ "first": 10 }`
43
+
44
+ ## Get Fulfillment Order
45
+
46
+ ```graphql
47
+ query GetFulfillmentOrder($id: ID!) {
48
+ fulfillmentOrder(id: $id) {
49
+ id
50
+ status
51
+ requestStatus
52
+ createdAt
53
+ updatedAt
54
+ assignedLocation {
55
+ name
56
+ address1
57
+ city
58
+ countryCode
59
+ }
60
+ destination {
61
+ firstName
62
+ lastName
63
+ address1
64
+ city
65
+ provinceCode
66
+ countryCode
67
+ }
68
+ order {
69
+ id
70
+ name
71
+ customer {
72
+ displayName
73
+ }
74
+ }
75
+ lineItems(first: 20) {
76
+ nodes {
77
+ id
78
+ totalQuantity
79
+ remainingQuantity
80
+ lineItem {
81
+ title
82
+ sku
83
+ variant {
84
+ id
85
+ }
86
+ }
87
+ }
88
+ }
89
+ fulfillments(first: 5) {
90
+ nodes {
91
+ id
92
+ status
93
+ trackingInfo {
94
+ number
95
+ url
96
+ company
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+ ```
103
+ Variables: `{ "id": "gid://shopify/FulfillmentOrder/123" }`
104
+
105
+ ## Create Fulfillment
106
+
107
+ > REQUIRES PERMISSION: Creating a fulfillment marks items as shipped and sends shipping notification emails to customers. This affects the customer experience and order status. Always ask the user for explicit confirmation, show the items being fulfilled and tracking info, and wait for approval before executing this operation.
108
+
109
+ ```graphql
110
+ mutation CreateFulfillment($fulfillment: FulfillmentInput!) {
111
+ fulfillmentCreate(fulfillment: $fulfillment) {
112
+ fulfillment {
113
+ id
114
+ status
115
+ trackingInfo {
116
+ number
117
+ url
118
+ company
119
+ }
120
+ }
121
+ userErrors {
122
+ field
123
+ message
124
+ }
125
+ }
126
+ }
127
+ ```
128
+ Variables:
129
+ ```json
130
+ {
131
+ "fulfillment": {
132
+ "lineItemsByFulfillmentOrder": [
133
+ {
134
+ "fulfillmentOrderId": "gid://shopify/FulfillmentOrder/123",
135
+ "fulfillmentOrderLineItems": [
136
+ {
137
+ "id": "gid://shopify/FulfillmentOrderLineItem/456",
138
+ "quantity": 2
139
+ }
140
+ ]
141
+ }
142
+ ],
143
+ "trackingInfo": {
144
+ "number": "1Z999AA10123456784",
145
+ "url": "https://www.ups.com/track?tracknum=1Z999AA10123456784",
146
+ "company": "UPS"
147
+ },
148
+ "notifyCustomer": true
149
+ }
150
+ }
151
+ ```
152
+
153
+ ## Create Fulfillment (Full Order)
154
+
155
+ ```graphql
156
+ mutation CreateFullFulfillment($fulfillment: FulfillmentInput!) {
157
+ fulfillmentCreate(fulfillment: $fulfillment) {
158
+ fulfillment {
159
+ id
160
+ status
161
+ }
162
+ userErrors {
163
+ field
164
+ message
165
+ }
166
+ }
167
+ }
168
+ ```
169
+ Variables:
170
+ ```json
171
+ {
172
+ "fulfillment": {
173
+ "lineItemsByFulfillmentOrder": [
174
+ {
175
+ "fulfillmentOrderId": "gid://shopify/FulfillmentOrder/123"
176
+ }
177
+ ],
178
+ "trackingInfo": {
179
+ "number": "9400111899223033335301",
180
+ "company": "USPS"
181
+ },
182
+ "notifyCustomer": true
183
+ }
184
+ }
185
+ ```
186
+
187
+ ## Cancel Fulfillment
188
+
189
+ > REQUIRES PERMISSION: Cancelling a fulfillment reverses the shipment status and may confuse customers who already received shipping notifications. Always ask the user for explicit confirmation before executing this operation.
190
+
191
+ ```graphql
192
+ mutation CancelFulfillment($id: ID!) {
193
+ fulfillmentCancel(id: $id) {
194
+ fulfillment {
195
+ id
196
+ status
197
+ }
198
+ userErrors {
199
+ field
200
+ message
201
+ }
202
+ }
203
+ }
204
+ ```
205
+
206
+ ## Add Tracking Information
207
+
208
+ ```graphql
209
+ mutation CreateFulfillmentEvent($fulfillmentEvent: FulfillmentEventInput!) {
210
+ fulfillmentEventCreate(fulfillmentEvent: $fulfillmentEvent) {
211
+ fulfillmentEvent {
212
+ id
213
+ status
214
+ happenedAt
215
+ }
216
+ userErrors {
217
+ field
218
+ message
219
+ }
220
+ }
221
+ }
222
+ ```
223
+ Variables:
224
+ ```json
225
+ {
226
+ "fulfillmentEvent": {
227
+ "fulfillmentId": "gid://shopify/Fulfillment/123",
228
+ "status": "IN_TRANSIT",
229
+ "happenedAt": "2025-01-15T14:30:00Z"
230
+ }
231
+ }
232
+ ```
233
+
234
+ ## Hold Fulfillment Order
235
+
236
+ > REQUIRES PERMISSION: Holding a fulfillment order pauses order processing and may delay shipments to customers. Always ask the user for explicit confirmation, show the reason for the hold, and wait for approval before executing this operation.
237
+
238
+ ```graphql
239
+ mutation HoldFulfillmentOrder($id: ID!, $fulfillmentHold: FulfillmentOrderHoldInput!) {
240
+ fulfillmentOrderHold(id: $id, fulfillmentHold: $fulfillmentHold) {
241
+ fulfillmentOrder {
242
+ id
243
+ status
244
+ }
245
+ userErrors {
246
+ field
247
+ message
248
+ }
249
+ }
250
+ }
251
+ ```
252
+ Variables:
253
+ ```json
254
+ {
255
+ "id": "gid://shopify/FulfillmentOrder/123",
256
+ "fulfillmentHold": {
257
+ "reason": "INVENTORY_OUT_OF_STOCK",
258
+ "reasonNotes": "Waiting for restock shipment"
259
+ }
260
+ }
261
+ ```
262
+
263
+ ## Release Hold
264
+
265
+ ```graphql
266
+ mutation ReleaseFulfillmentOrderHold($id: ID!) {
267
+ fulfillmentOrderReleaseHold(id: $id) {
268
+ fulfillmentOrder {
269
+ id
270
+ status
271
+ }
272
+ userErrors {
273
+ field
274
+ message
275
+ }
276
+ }
277
+ }
278
+ ```
279
+
280
+ ## Move Fulfillment Order to Different Location
281
+
282
+ ```graphql
283
+ mutation MoveFulfillmentOrder($id: ID!, $newLocationId: ID!) {
284
+ fulfillmentOrderMove(id: $id, newLocationId: $newLocationId) {
285
+ movedFulfillmentOrder {
286
+ id
287
+ assignedLocation {
288
+ name
289
+ }
290
+ }
291
+ userErrors {
292
+ field
293
+ message
294
+ }
295
+ }
296
+ }
297
+ ```
298
+
299
+ ## Cancel Fulfillment Order
300
+
301
+ > REQUIRES PERMISSION: Cancelling a fulfillment order stops the order from being fulfilled and affects the entire fulfillment workflow. Always ask the user for explicit confirmation before executing this operation.
302
+
303
+ ```graphql
304
+ mutation CancelFulfillmentOrder($id: ID!) {
305
+ fulfillmentOrderCancel(id: $id) {
306
+ fulfillmentOrder {
307
+ id
308
+ status
309
+ }
310
+ userErrors {
311
+ field
312
+ message
313
+ }
314
+ }
315
+ }
316
+ ```
317
+
318
+ ## Split Fulfillment Order
319
+
320
+ ```graphql
321
+ mutation SplitFulfillmentOrder($fulfillmentOrderSplits: [FulfillmentOrderSplitInput!]!) {
322
+ fulfillmentOrderSplit(fulfillmentOrderSplits: $fulfillmentOrderSplits) {
323
+ fulfillmentOrderSplits {
324
+ fulfillmentOrder {
325
+ id
326
+ }
327
+ remainingFulfillmentOrder {
328
+ id
329
+ }
330
+ }
331
+ userErrors {
332
+ field
333
+ message
334
+ }
335
+ }
336
+ }
337
+ ```
338
+ Variables:
339
+ ```json
340
+ {
341
+ "fulfillmentOrderSplits": [
342
+ {
343
+ "fulfillmentOrderId": "gid://shopify/FulfillmentOrder/123",
344
+ "fulfillmentOrderLineItems": [
345
+ {
346
+ "id": "gid://shopify/FulfillmentOrderLineItem/456",
347
+ "quantity": 1
348
+ }
349
+ ]
350
+ }
351
+ ]
352
+ }
353
+ ```
354
+
355
+ ## Fulfillment Order Status
356
+
357
+ | Status | Description |
358
+ |--------|-------------|
359
+ | `OPEN` | Ready to fulfill |
360
+ | `IN_PROGRESS` | Being fulfilled |
361
+ | `CANCELLED` | Cancelled |
362
+ | `INCOMPLETE` | Partially fulfilled, remaining cancelled |
363
+ | `CLOSED` | Fully fulfilled |
364
+ | `SCHEDULED` | Scheduled for future date |
365
+ | `ON_HOLD` | On hold |
366
+
367
+ ## Fulfillment Event Status
368
+
369
+ | Status | Description |
370
+ |--------|-------------|
371
+ | `CONFIRMED` | Shipment confirmed |
372
+ | `IN_TRANSIT` | Package in transit |
373
+ | `OUT_FOR_DELIVERY` | Out for delivery |
374
+ | `DELIVERED` | Delivered |
375
+ | `FAILURE` | Delivery failed |
376
+ | `ATTEMPTED_DELIVERY` | Delivery attempted |
377
+
378
+ ## Hold Reasons
379
+
380
+ | Reason | Description |
381
+ |--------|-------------|
382
+ | `AWAITING_PAYMENT` | Waiting for payment |
383
+ | `HIGH_RISK_OF_FRAUD` | Fraud risk detected |
384
+ | `INCORRECT_ADDRESS` | Address needs verification |
385
+ | `INVENTORY_OUT_OF_STOCK` | Item out of stock |
386
+ | `OTHER` | Custom reason |
387
+
388
+ ## Assigned Fulfillment Orders
389
+
390
+ For fulfillment service apps:
391
+
392
+ ```graphql
393
+ query AssignedFulfillmentOrders($first: Int!) {
394
+ assignedFulfillmentOrders(first: $first, assignmentStatus: FULFILLMENT_REQUESTED) {
395
+ nodes {
396
+ id
397
+ status
398
+ requestStatus
399
+ order {
400
+ name
401
+ }
402
+ }
403
+ }
404
+ }
405
+ ```
406
+
407
+ ## API Scopes Required
408
+
409
+ - `read_orders` - Read fulfillment orders
410
+ - `write_orders` - Create fulfillments
411
+ - `read_assigned_fulfillment_orders` - For fulfillment service apps
412
+ - `write_assigned_fulfillment_orders` - For fulfillment service apps
413
+
414
+ ## Notes
415
+
416
+ - Fulfillment orders are created automatically when orders are placed
417
+ - Multiple fulfillments can be created for one fulfillment order
418
+ - Use `notifyCustomer: true` to send shipping confirmation emails
419
+ - Tracking companies: UPS, USPS, FedEx, DHL, etc.
420
+ - Fulfillment orders can be moved between locations
421
+
422
+ ## Dangerous Operations in This Skill
423
+
424
+ The following operations require explicit user permission before execution:
425
+
426
+ | Operation | Impact | Reversible |
427
+ |-----------|--------|------------|
428
+ | `fulfillmentCreate` | Marks items as shipped, sends customer notifications | Partial (can cancel) |
429
+ | `fulfillmentCancel` | Reverses shipment status, may confuse customers | Partial (can create new) |
430
+ | `fulfillmentOrderHold` | Pauses order processing, delays shipments | Yes (can release) |
431
+ | `fulfillmentOrderReleaseHold` | Resumes order processing | N/A |
432
+ | `fulfillmentOrderCancel` | Stops fulfillment workflow completely | No - Status change is permanent |
433
+
434
+ Permission Protocol:
435
+ - For fulfillment creation: Show order ID, items, quantities, tracking info, and whether customer will be notified
436
+ - For cancellations/holds: Show fulfillment/order ID, current status, and impact on customer experience
437
+ - Wait for explicit "yes", "confirm", or "proceed"