{"name":"com.moltlinestudio/shipping","slug":"moltlinestudio-shipping","title":"Moltline Shipping Maths","description":"Dimensional weight, parcel fit, landed cost and freight class. 4 of 6 tools free.","url":"https://mcp.market/server/moltlinestudio-shipping","rating":null,"grade":"A","score":87,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-19T15:00:29.000Z","license":"MIT"},"uptime":{"percent":100,"checks":3,"ok":3,"last_checked_at":"2026-09-20T03:21:09.969Z","last_ok_at":"2026-09-20T03:21:09.969Z","latency_ms":114},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/GarphenGate/moltline-mcp","website":"https://moltlinestudio.com/servers.html#shipping","version":"1.2.0","remotes":[{"type":"streamable-http","url":"https://mcp.moltlinestudio.com/shipping"}],"packages":[],"tools":[{"name":"dim_weight","description":"Work out whether a parcel bills on its size or its weight. FREE.\n\nCarriers charge the greater of actual weight and dimensional weight, so a\nlight bulky box costs more than the scale suggests. Typical input\n{\"length\": 18, \"width\": 12, \"height\": 10, \"actual_weight\": 6} returns\n{\"cubic\": 2160.0, \"dim_weight\": 15.54, \"actual_weight\": 6.0,\n\"billable_weight\": 15.54, \"billed_on\": \"dimensional\", \"overage\": 9.54,\n\"divisor_used\": 139.0, \"note\": \"...\"}.\n\nUse when deciding whether a smaller box is worth the packing effort, or\nwhy an invoice exceeded the scale weight. Not for choosing a box from a\nlist of candidates — that is parcel_fit. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"custom_divisor must be greater than 0 when divisor is 'custom'\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"length":{"exclusiveMinimum":0,"type":"number","description":"Longest side of the packed parcel, in inches (or centimetres\nwhen using a metric divisor). Must be greater than 0."},"width":{"exclusiveMinimum":0,"type":"number","description":"Second side, same unit as length. Must be greater than 0."},"height":{"exclusiveMinimum":0,"type":"number","description":"Third side, same unit as length. Must be greater than 0."},"actual_weight":{"exclusiveMinimum":0,"type":"number","description":"Scale weight in pounds (or kilograms with a metric\ndivisor). Must be greater than 0."},"divisor":{"default":"ups_daily","enum":["ups_daily","ups_retail","fedex","usps","metric_5000","metric_6000","custom"],"type":"string","description":"Which published divisor to apply. \"ups_daily\" is 139 and\n\"ups_retail\" is 166 cubic inches per pound, as UPS states them;\n\"usps\" is 166; the metric options are cubic centimetres per\nkilogram. Use \"custom\" to supply a contracted divisor."},"custom_divisor":{"default":0,"type":"number","description":"Your contracted divisor, used only when divisor is\n\"custom\". Must be greater than 0 in that case."}},"required":["length","width","height","actual_weight"],"additionalProperties":false}},{"name":"free_shipping_threshold","description":"Find the order value at which free shipping stops costing you money. PREMIUM (license).\n\nBreak-even is where the gross margin on the order covers the shipping you\nabsorb. Typical input {\"gross_margin_pct\": 45, \"ship_cost\": 7.5,\n\"current_aov\": 38, \"target_uplift_pct\": 15} returns {\"break_even\": 16.67,\n\"suggested_threshold\": 43.7, \"above_current_aov_by\": 5.7, \"rationale\":\n\"...\"}.\n\nUse when setting or defending a free-shipping bar. Not for what shipping\nshould cost when it is not free — that is rate_card. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"gross_margin_pct":{"exclusiveMinimum":0,"maximum":100,"type":"number","description":"Gross margin on a typical order, e.g. 45 for 45%.\nMust be above 0 and at most 100."},"ship_cost":{"exclusiveMinimum":0,"type":"number","description":"What one shipment actually costs you to send."},"current_aov":{"exclusiveMinimum":0,"type":"number","description":"Your current average order value."},"target_uplift_pct":{"default":0,"minimum":0,"type":"number","description":"How far above current AOV you want the threshold\nset, to pull baskets up. Default 0, which returns break-even."}},"required":["gross_margin_pct","ship_cost","current_aov"],"additionalProperties":false}},{"name":"freight_class","description":"Derive a US LTL freight class from density. FREE.\n\nDensity in pounds per cubic foot maps to a class on the published NMFC\ndensity scale. Typical input {\"length\": 48, \"width\": 40, \"height\": 36,\n\"weight\": 400} returns {\"cubic_feet\": 40.0, \"density_pcf\": 10.0,\n\"density_class\": \"100\", \"caveat\": \"...\"}.\n\nUse for a first estimate before a carrier quote. Not as a final\nclassification: NMFC also weighs stowability, handling and liability, so a\ncarrier can and does reclassify. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"dimensions produce zero volume\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"length":{"exclusiveMinimum":0,"type":"number","description":"Longest side of the palletised freight. Must be greater than 0."},"width":{"exclusiveMinimum":0,"type":"number","description":"Second side. Must be greater than 0."},"height":{"exclusiveMinimum":0,"type":"number","description":"Third side, including the pallet. Must be greater than 0."},"weight":{"exclusiveMinimum":0,"type":"number","description":"Gross weight including the pallet. Must be greater than 0."},"units":{"default":"in_lb","enum":["in_lb","cm_kg"],"type":"string","description":"\"in_lb\" for inches and pounds, or \"cm_kg\" for centimetres and\nkilograms. Default \"in_lb\"."}},"required":["length","width","height","weight"],"additionalProperties":false}},{"name":"landed_cost","description":"Total what a unit really costs once freight, duty and fees are in. FREE.\n\nDuty is applied to goods value, tax to goods plus duty plus freight — the\ncommon import treatment — and the order is spelled out in the response so\nyou can check it against your own broker's method. Typical input\n{\"unit_cost\": 8.5, \"quantity\": 200, \"freight_total\": 640, \"duty_pct\": 6.5,\n\"tax_pct\": 0} returns {\"goods\": 1700.0, \"duty\": 110.5, \"freight\": 640.0,\n\"tax\": 0.0, \"total_landed\": 2450.5, \"landed_unit_cost\": 12.25, ...}.\n\nUse before setting a price on imported stock. Not for the margin that price\nleaves you — that is the dropship server's margin_check. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"unit_cost":{"exclusiveMinimum":0,"type":"number","description":"Ex-works cost of one unit in your currency. Must be\ngreater than 0."},"quantity":{"default":1,"minimum":1,"type":"integer","description":"Units in the shipment. Must be at least 1. Default 1."},"freight_total":{"default":0,"minimum":0,"type":"number","description":"Total freight and insurance for the whole shipment,\nnot per unit. Default 0."},"duty_pct":{"default":0,"minimum":0,"type":"number","description":"Import duty as a percentage of goods value, e.g. 6.5.\nDefault 0."},"tax_pct":{"default":0,"minimum":0,"type":"number","description":"Import VAT or GST as a percentage of goods plus duty plus\nfreight, e.g. 20. Default 0."},"other_fees":{"default":0,"minimum":0,"type":"number","description":"Brokerage, port and handling charges for the shipment.\nDefault 0."}},"required":["unit_cost"],"additionalProperties":false}},{"name":"parcel_fit","description":"Pick the smallest box an item actually fits in, allowing for padding. FREE.\n\nTries every rotation of the item against every box, so an item that only\nfits diagonally-oriented is still found. Typical input {\"item_length\": 10,\n\"item_width\": 6, \"item_height\": 4, \"box_options\": [[12, 9, 4], [14, 10,\n6]]} returns {\"fits\": [{\"box\": [14, 10, 6], \"cubic\": 840.0, \"slack\": [2,\n2, 0]}], \"best\": [14, 10, 6], \"rejected\": [...]}.\n\nUse when choosing packaging from stock. Not for what the carrier will bill\nonce a box is chosen — that is dim_weight. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"box_options must contain at least one [l, w, h] box\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"item_length":{"exclusiveMinimum":0,"type":"number","description":"Item's longest side, in inches. Must be greater than 0."},"item_width":{"exclusiveMinimum":0,"type":"number","description":"Item's second side, same unit. Must be greater than 0."},"item_height":{"exclusiveMinimum":0,"type":"number","description":"Item's third side, same unit. Must be greater than 0."},"box_options":{"items":{"items":{"type":"number"},"type":"array"},"type":"array","description":"Candidate inner box dimensions, each a list of exactly\nthree positive numbers, e.g. [[12, 9, 4], [14, 10, 6]]."},"padding":{"default":1,"minimum":0,"type":"number","description":"Cushioning allowance added to every item side before the\ncomparison, in the same unit. Default 1.0; use 0 for a bare fit."}},"required":["item_length","item_width","item_height","box_options"],"additionalProperties":false}},{"name":"rate_card","description":"Turn a cost model into a customer-facing weight-banded price table. PREMIUM (license).\n\nPrices each band at its upper bound so you never under-charge inside a\nband, then rounds up to a tidy increment. Typical input {\"base_cost\": 4.2,\n\"cost_per_lb\": 0.65, \"bands_lb\": [1, 2, 5, 10], \"margin_pct\": 25} returns\n{\"bands\": [{\"up_to_lb\": 1, \"cost\": 4.85, \"price\": 6.5}, ...],\n\"over_top_band\": \"quote individually\"}.\n\nUse when publishing shipping prices customers pay. Not for the cut-off at\nwhich shipping becomes free — that is free_shipping_threshold. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"bands_lb must contain at least one upper bound\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"base_cost":{"exclusiveMinimum":0,"type":"number","description":"Fixed cost per shipment before weight, e.g. pick, pack and\nlabel. Must be greater than 0."},"cost_per_lb":{"minimum":0,"type":"number","description":"Marginal cost per pound. Use 0 for a flat rate card."},"bands_lb":{"items":{"type":"number"},"type":"array","description":"Upper weight bound of each band in ascending order, e.g.\n[1, 2, 5, 10]. At least one band, each greater than 0."},"margin_pct":{"default":0,"minimum":0,"type":"number","description":"Margin added on top of cost, e.g. 25 for 25%. Default 0."},"round_to":{"default":0.5,"exclusiveMinimum":0,"type":"number","description":"Increment to round each published price up to, e.g. 0.5 or\n1. Default 0.5."}},"required":["base_cost","cost_per_lb","bands_lb"],"additionalProperties":false}}],"scan":{"score":87,"grade":"A","scanned_at":"2026-09-20T00:23:51.895Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:23:51.885Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 409ms"]},"poisoning":{"score":15,"max":15,"notes":["6 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":5,"max":10,"notes":["namespace and repository owner differ","website matches verified namespace"]}},"findings":[],"inputs":{"probes":[{"url":"https://mcp.moltlinestudio.com/shipping","reachable":true,"authRequired":false,"latencyMs":409,"serverInfo":{"name":"moltline-shipping","version":"1.1.0"}}],"packages":[],"repo":{"found":true,"owner":"GarphenGate","repo":"moltline-mcp","archived":false,"pushedAt":"2026-09-19T15:00:29Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/316633241?v=4","ownerCreatedAt":"2026-08-13T15:17:26Z","license":"MIT"},"icon":{"url":"https://moltlinestudio.com/icon-192.png","source":"registry","width":192,"height":192},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-19T15:00:29.000Z","score":23}}}},"grade_history":[],"reviews":[]}