# Moltline Shipping Maths

> Dimensional weight, parcel fit, landed cost and freight class. 4 of 6 tools free.

- name: com.moltlinestudio/shipping
- version: 1.2.0
- connection class: R0 (autonomous)
- trust: 84/100 flags: duplicate-repo
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.moltlinestudio%2Fshipping
- tools: https://api.protogrid.dev/v1/servers/com.moltlinestudio%2Fshipping/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "shipping": {
      "type": "http",
      "url": "https://mcp.moltlinestudio.com/shipping"
    }
  }
}
```


## Trust

- hygiene: 60
- liveness: 99
- freshness: 85
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-97% ~updated-41d-ago -duplicate-repo(22 names)
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 91/100 (strong)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 6 of 6 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,816 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 6, about 2,816 tokens to load them all
- tool set hash: 4cda05d3913171fa1c451c47f9dc4bdf
- badge: [![protogrid quality](https://protogrid.dev/badge/com.moltlinestudio/shipping.svg)](https://protogrid.dev/servers/com.moltlinestudio/shipping)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.moltlinestudio.com/shipping (streamable-http, auth none, reachable true, uptime30d 0.9736842)

## Packages

_none_

## Tools (6)

- `dim_weight`: Work out whether a parcel bills on its size or its weight. FREE.

Carriers charge the greater of actual weight and dimensional weight, so a
light bulky box costs more than the scale suggests. Typical input
{"length": 18, "width": 12, "height": 10, "actual_weight": 6} returns
{"cubic": 2160.0, "dim_weight": 15.54, "actual_weight": 6.0,
"billable_weight": 15.54, "billed_on": "dimensional", "overage": 9.54,
"divisor_used": 139.0, "note": "..."}.

Use when deciding whether a smaller box is worth the packing effort, or
why an invoice exceeded the scale weight. Not for choosing a box from a
list 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.
- `free_shipping_threshold`: Find the order value at which free shipping stops costing you money. PREMIUM (license).

Break-even is where the gross margin on the order covers the shipping you
absorb. Typical input {"gross_margin_pct": 45, "ship_cost": 7.5,
"current_aov": 38, "target_uplift_pct": 15} returns {"break_even": 16.67,
"suggested_threshold": 43.7, "above_current_aov_by": 5.7, "rationale":
"..."}.

Use when setting or defending a free-shipping bar. Not for what shipping
should 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.
- `freight_class`: Derive a US LTL freight class from density. FREE.

Density in pounds per cubic foot maps to a class on the published NMFC
density scale. Typical input {"length": 48, "width": 40, "height": 36,
"weight": 400} returns {"cubic_feet": 40.0, "density_pcf": 10.0,
"density_class": "100", "caveat": "..."}.

Use for a first estimate before a carrier quote. Not as a final
classification: NMFC also weighs stowability, handling and liability, so a
carrier 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.
- `landed_cost`: Total what a unit really costs once freight, duty and fees are in. FREE.

Duty is applied to goods value, tax to goods plus duty plus freight — the
common import treatment — and the order is spelled out in the response so
you can check it against your own broker's method. Typical input
{"unit_cost": 8.5, "quantity": 200, "freight_total": 640, "duty_pct": 6.5,
"tax_pct": 0} returns {"goods": 1700.0, "duty": 110.5, "freight": 640.0,
"tax": 0.0, "total_landed": 2450.5, "landed_unit_cost": 12.25, ...}.

Use before setting a price on imported stock. Not for the margin that price
leaves 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.
- `parcel_fit`: Pick the smallest box an item actually fits in, allowing for padding. FREE.

Tries every rotation of the item against every box, so an item that only
fits diagonally-oriented is still found. Typical input {"item_length": 10,
"item_width": 6, "item_height": 4, "box_options": [[12, 9, 4], [14, 10,
6]]} returns {"fits": [{"box": [14, 10, 6], "cubic": 840.0, "slack": [2,
2, 0]}], "best": [14, 10, 6], "rejected": [...]}.

Use when choosing packaging from stock. Not for what the carrier will bill
once 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.
- `rate_card`: Turn a cost model into a customer-facing weight-banded price table. PREMIUM (license).

Prices each band at its upper bound so you never under-charge inside a
band, then rounds up to a tidy increment. Typical input {"base_cost": 4.2,
"cost_per_lb": 0.65, "bands_lb": [1, 2, 5, 10], "margin_pct": 25} returns
{"bands": [{"up_to_lb": 1, "cost": 4.85, "price": 6.5}, ...],
"over_top_band": "quote individually"}.

Use when publishing shipping prices customers pay. Not for the cut-off at
which 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.
