packing-list

Packing slips: cartons, contents, weights, chargeable weight and what is still to pack.

我该使用它吗

质量与安全性

A
描述质量
92%
模式完整度
93%
命名质量
80%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(3)

  • LOWTool 'pack_item' description lacks action verb在 pack_item 中
  • LOWTool 'carton_report' description lacks action verb在 carton_report 中
  • LOWTool 'packing_shortfall' description lacks action verb在 packing_shortfall 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~3,384token 数(工具定义)
~1.9 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.64%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "packing-list": {
      "command": "uvx",
      "args": [
        "https://github.com/theluckystrike/mcp-servers/releases/download/v0.21.0/packing-list.mcpb"
      ]
    }
  }
}

可运行的软件包

mcpbhttps://github.com/theluckystrike/mcp-servers/releases/download/v0.21.0/packing-list.mcpb0.21.0stdio
mcpbhttps://github.com/theluckystrike/mcp-servers/releases/download/v0.22.0/packing-list.mcpb0.22.0stdio

远程端点

https://mcp.zovo.one/mcp/packing-slipstreamable-http

它能做什么

工具清单

工具(14)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟡packing_list_create(reference, reference_kind, consignee, ship_to, date, ...)

Open a packing list against an order and return its PL-YYYY-NNNN number: the order reference, the consignee, where it ships to and the date. Free tier: 3 open at once; shipping or cancelling frees a slot.

输入模式

{
  "type": "object",
  "properties": {
    "reference": {
      "type": "string",
      "maxLength": 64,
      "description": "The order this ships against, by id, e.g. WO-2026-0001, INV-2026-0007 or PO-4471"
    },
    "reference_kind": {
      "type": "string",
      "enum": [
        "quote",
        "work_order",
        "invoice",
        "order"
      ],
      "description": "What the reference is. Inferred from the id when omitted: WO- work order, INV- invoice, Q- quote, otherwise a plain order"
    },
    "consignee": {
      "type": "string",
      "maxLength": 200,
      "description": "Who receives the goods, as named on the order"
    },
    "ship_to": {
      "type": "string",
      "maxLength": 2000,
      "description": "The delivery address, printed on the slip. Omit to leave it off"
    },
    "date": {
      "type": "string",
      "maxLength": 10,
      "description": "The day the list was raised, YYYY-MM-DD. Default today"
    },
    "note": {
      "type": "string",
      "maxLength": 2000
    },
    "duplicate_ok": {
      "type": "boolean",
      "description": "Open it even though an OPEN list already exists on this reference. Default false"
    }
  },
  "required": [
    "reference",
    "consignee"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡packing_expect(packing_list, description, quantity, sku)

Add an ordered line to a packing list so the shortfall is real: a SKU, a description and a quantity. Nothing is read from the quotes, work order or invoice store; what the order says is stated here.

输入模式

{
  "type": "object",
  "properties": {
    "packing_list": {
      "type": "string",
      "maxLength": 200,
      "description": "The packing list id, e.g. PL-2026-0001, or the order reference when only one list carries it"
    },
    "description": {
      "type": "string",
      "maxLength": 2000,
      "description": "The goods as the order names them, e.g. Oak shelf 900mm"
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000,
      "description": "How many units the order says should ship. Whole units"
    },
    "sku": {
      "type": "string",
      "maxLength": 64,
      "description": "Stock code, upper-cased and stripped of spaces. Lines with a SKU are matched on it, lines without on their description"
    }
  },
  "required": [
    "packing_list",
    "description",
    "quantity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡carton_add(packing_list, label, tare_grams, length_cm, width_cm, ...)

Add a carton to a packing list and return its C01-style id: a label, the empty weight in WHOLE GRAMS, and optionally length, width and height in WHOLE CENTIMETRES. Dimensions are what make a chargeable weight possible.

输入模式

{
  "type": "object",
  "properties": {
    "packing_list": {
      "type": "string",
      "maxLength": 200,
      "description": "The packing list id, e.g. PL-2026-0001, or the order reference when only one list carries it"
    },
    "label": {
      "type": "string",
      "maxLength": 200,
      "description": "What is written on the box, e.g. Box 1 of 3 or Pallet A"
    },
    "tare_grams": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000,
      "description": "The EMPTY carton with its packaging, in whole grams. 0 when it is not known"
    },
    "length_cm": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2000,
      "description": "Outer length in whole centimetres. All three dimensions or none"
    },
    "width_cm": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2000,
      "description": "Outer width in whole centimetres"
    },
    "height_cm": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2000,
      "description": "Outer height in whole centimetres"
    },
    "note": {
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "packing_list",
    "label",
    "tare_grams"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡pack_item(packing_list, carton, description, quantity, unit_grams, ...)

Put a quantity of one item into a named carton: a description, how many, and the per-unit weight in WHOLE GRAMS. Leave unit_grams out when it was not weighed and the carton gross comes back as a lower bound.

输入模式

{
  "type": "object",
  "properties": {
    "packing_list": {
      "type": "string",
      "maxLength": 200,
      "description": "The packing list id, e.g. PL-2026-0001, or the order reference when only one list carries it"
    },
    "carton": {
      "type": "string",
      "maxLength": 16,
      "description": "The carton id, e.g. C01, or its exact label"
    },
    "description": {
      "type": "string",
      "maxLength": 2000,
      "description": "The goods going in, e.g. Oak shelf 900mm"
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000,
      "description": "How many units go into THIS carton. Split across cartons with one call each"
    },
    "unit_grams": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000,
      "description": "Weight of ONE unit in whole grams. Omit when not weighed; the carton is then a lower bound"
    },
    "sku": {
      "type": "string",
      "maxLength": 64,
      "description": "Stock code, upper-cased and stripped of spaces. Lines with a SKU are matched on it, lines without on their description"
    },
    "note": {
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "packing_list",
    "carton",
    "description",
    "quantity"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴unpack_item(packing_list, line)

Remove one packed line from a packing list by its L01-style id and return the carton it came out of. The line is deleted, not zeroed, so the slip does not print an item nobody packed.

输入模式

{
  "type": "object",
  "properties": {
    "packing_list": {
      "type": "string",
      "maxLength": 200,
      "description": "The packing list id, e.g. PL-2026-0001, or the order reference when only one list carries it"
    },
    "line": {
      "type": "string",
      "maxLength": 16,
      "description": "The packed line id, e.g. L03, as shown by packing_list_show or carton_report"
    }
  },
  "required": [
    "packing_list",
    "line"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢packing_list_show(packing_list, divisor)

The whole packing list: its cartons with contents and derived weights, the ordered lines, the shortfall, whether it is ready to ship and why not, and its status history. Nothing here is stored; it is computed.

输入模式

{
  "type": "object",
  "properties": {
    "packing_list": {
      "type": "string",
      "maxLength": 200,
      "description": "The packing list id, e.g. PL-2026-0001, or the order reference when only one list carries it"
    },
    "divisor": {
      "type": "integer",
      "description": "Volumetric divisor in cm3 per kg: 5000 courier air (default), 6000 IATA air, 4000 some road tariffs"
    }
  },
  "required": [
    "packing_list"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢packing_list_list(status, open_only, reference, consignee, divisor)

Packing lists newest first, with cartons, units, gross weight and how many ordered lines are still short. Filter by status, by order reference or by consignee. Returns at most 500 rows.

输入模式

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "packed",
        "shipped",
        "cancelled"
      ],
      "description": "Only lists in this status"
    },
    "open_only": {
      "type": "boolean",
      "description": "Only draft and packed lists, the ones that count against the free tier. Default false"
    },
    "reference": {
      "type": "string",
      "maxLength": 64,
      "description": "Only lists against this order reference, matched case-insensitively"
    },
    "consignee": {
      "type": "string",
      "maxLength": 200,
      "description": "Only lists whose consignee contains this text"
    },
    "divisor": {
      "type": "integer",
      "description": "Volumetric divisor in cm3 per kg: 5000 courier air (default), 6000 IATA air, 4000 some road tariffs"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢carton_report(packing_list, divisor)

Per carton and for the shipment: tare, net, gross, volume, volumetric weight and the chargeable weight, the greater of gross and volumetric. A carton with no dimensions makes the chargeable total null, never a guess.

输入模式

{
  "type": "object",
  "properties": {
    "packing_list": {
      "type": "string",
      "maxLength": 200,
      "description": "The packing list id, e.g. PL-2026-0001, or the order reference when only one list carries it"
    },
    "divisor": {
      "type": "integer",
      "description": "Volumetric divisor in cm3 per kg: 5000 courier air (default), 6000 IATA air, 4000 some road tariffs"
    }
  },
  "required": [
    "packing_list"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪packing_shortfall(packing_list)

Ordered against packed, line by line: what is still short, what was over-packed, and what was packed that is not on the order at all. A packed line with no ordered line is reported, never dropped.

输入模式

{
  "type": "object",
  "properties": {
    "packing_list": {
      "type": "string",
      "maxLength": 200,
      "description": "The packing list id, e.g. PL-2026-0001, or the order reference when only one list carries it"
    }
  },
  "required": [
    "packing_list"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢packing_list_status(packing_list, status, date, carrier, tracking, ...)

Move a packing list draft to packed to shipped, or cancel it. Shipping records the carrier, the tracking number and the date, and freezes the list. A shipped list cannot be reopened or edited.

输入模式

{
  "type": "object",
  "properties": {
    "packing_list": {
      "type": "string",
      "maxLength": 200,
      "description": "The packing list id, e.g. PL-2026-0001, or the order reference when only one list carries it"
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "packed",
        "shipped",
        "cancelled"
      ],
      "description": "The status to move to. draft to packed to shipped, or cancelled from either open status"
    },
    "date": {
      "type": "string",
      "maxLength": 10,
      "description": "The day the step happened, YYYY-MM-DD. Default today"
    },
    "carrier": {
      "type": "string",
      "maxLength": 200,
      "description": "Who is carrying it, recorded when moving to shipped"
    },
    "tracking": {
      "type": "string",
      "maxLength": 200,
      "description": "The carrier's consignment or tracking number, recorded when moving to shipped"
    },
    "note": {
      "type": "string",
      "maxLength": 2000
    },
    "force": {
      "type": "boolean",
      "description": "Ship even though lines are short, over-packed or not on the order. Default false, and the reasons come back either way"
    }
  },
  "required": [
    "packing_list",
    "status"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢packing_slip(packing_list, out_path, overwrite, divisor)

The packing slip as plain text on every tier: cartons, contents, weights and a signature line, and no prices anywhere. Pro also gets it back as a .txt download link valid for one hour, named by out_path; an existing name is refused unless told to overwrite.

输入模式

{
  "type": "object",
  "properties": {
    "packing_list": {
      "type": "string",
      "maxLength": 200,
      "description": "The packing list id, e.g. PL-2026-0001, or the order reference when only one list carries it"
    },
    "out_path": {
      "type": "string",
      "maxLength": 1000,
      "description": "Name for the downloaded .txt file, e.g. order-4471-slip. Pro only. Omit to get the slip back as text, which every tier can do; the file comes back as a download link valid for one hour"
    },
    "overwrite": {
      "type": "boolean",
      "description": "Replace out_path if a file is already there. Default false, and an existing file is refused with nothing written"
    },
    "divisor": {
      "type": "integer",
      "description": "Volumetric divisor in cm3 per kg: 5000 courier air (default), 6000 IATA air, 4000 some road tariffs"
    }
  },
  "required": [
    "packing_list"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴packing_list_delete(packing_list, confirm)

Delete a packing list for good, with its cartons and packed lines. A shipped list is refused: it is the record of what left the building. Cancel a list you no longer want instead of deleting a real shipment.

输入模式

{
  "type": "object",
  "properties": {
    "packing_list": {
      "type": "string",
      "maxLength": 200,
      "description": "The packing list id, e.g. PL-2026-0001, or the order reference when only one list carries it"
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be true. There is no undo and nothing is copied anywhere first"
    }
  },
  "required": [
    "packing_list",
    "confirm"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢license_status

Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪license_activate(key)

Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.

输入模式

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "License key from checkout, MCPL1.<payload>.<signature>"
    }
  },
  "required": [
    "key"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本14 个工具