# Plain Freight (remote · plainfreight.com)

All-in DDP quotes for China to USA shipments, 100 g to 2,000 kg, from a live rate card

- Trust score: 81/100 (high trust)
- Change this week: 0
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `plainfreight.com`: 81/100 (this document), [markdown](https://verifymcp.io/servers/com-plainfreight-quotes/api-mcp.md), [page](https://verifymcp.io/servers/com-plainfreight-quotes/api-mcp)

## Channel facts

- Endpoint: `https://plainfreight.com/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (generate_offer).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 81/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1331 tokens (~190/item across 7 items; 5 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 95% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 5 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 73/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### How do I install the Plain Freight MCP server?

Plain Freight is a hosted endpoint at https://plainfreight.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-plainfreight-quotes 'https://plainfreight.com/api/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "com-plainfreight-quotes": {
      "url": "https://plainfreight.com/api/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-plainfreight-quotes": {
      "type": "http",
      "url": "https://plainfreight.com/api/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-plainfreight-quotes]
url = "https://plainfreight.com/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-plainfreight-quotes": {
      "type": "remote",
      "url": "https://plainfreight.com/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-plainfreight-quotes --url 'https://plainfreight.com/api/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-plainfreight-quotes:
    url: "https://plainfreight.com/api/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "com-plainfreight-quotes": {
      "Transport": "http",
      "Url": "https://plainfreight.com/api/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-plainfreight-quotes -t streamable-http -u 'https://plainfreight.com/api/mcp'
```

### Other

```json
{
  "mcpServers": {
    "com-plainfreight-quotes": {
      "type": "http",
      "url": "https://plainfreight.com/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 81, +1)

- [security] Stability: 0.97 → pass

### 2026-11-04 (score 80, −1)

- [functional] Stability: pass → 0.97

### 2026-10-15 (score 81, +1)

- [security] Stability: 0.97 → pass

### 2026-10-13 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-12 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 90. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-10 (score 78, +3)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 83. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-02 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-28 (score 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

## MCP tools (5)

### `estimate_price` (~284 tokens)

Estimate China to USA shipping cost

Rough price estimate for shipping goods from China to a US address, 100 g to 2,000 kg. Records nothing, contacts no one and needs no email. Inputs: total weight, and optionally the product and carton sizes or total volume. Returns estimated door to door prices in USD for air (and sea from 10 kg chargeable weight), the chargeable weight used (the greater of actual weight and carton volume in cm3 / 6,000), transit estimates, and whether US import duty is included. Figures come from Plain Freight's pricing engine for densely packed goods, priced on the applicable rate; goods that need a review get no figure. The exact ZIP code, pickup city and cartons can move the price, so the result is an estimate, not an offer.

Input parameters:

- `carton_count` (integer): Number of cartons of that size
- `carton_height_cm` (number): One carton's height in cm
- `carton_length_cm` (number): One carton's length in cm
- `carton_width_cm` (number): One carton's width in cm
- `product` (string): What is being shipped, in a few words (sets the goods rate)
- `total_cbm` (number): Total volume in cubic meters, if known instead of carton sizes
- `weight_kg` (number, required): Total actual weight of the shipment in kg

Output parameters:

- `actual_kg` (number)
- `chargeable_kg` (number)
- `error` (string)
- `estimate` (boolean): Always true: a rough figure, not an offer
- `goods` (object)
- `next_step` (string)
- `options` (array)
- `priced_as` (string)
- `priced_on` (string): Date the pricing engine produced these figures
- `volumetric_kg` (number|null)

### `check_goods` (~144 tokens)

Check if goods can be shipped

Checks whether Plain Freight can ship a product from China to the US, and which documents it needs. Records nothing. Input: the product description. Returns a verdict: instant_offer or branded_rate (priced at once, each on its applicable rate) or person_checks_first (for example batteries, chemicals, food, cosmetics, seeds, vapes or weapons: a person reviews the goods before any price), with a plain explanation and the documents or details to have ready. It applies the same goods screen as Plain Freight's offers; it is not legal or customs advice.

Input parameters:

- `product` (string, required): The product, in the user's words (materials and whether it has a battery help)

Output parameters:

- `category` (string|null)
- `error` (string)
- `explanation` (string)
- `have_ready` (string|null): Documents or details the person will ask for
- `next_step` (string)
- `verdict` (string): instant_offer: priced at once; branded_rate: priced at once on its applicable rate; person_checks_first: no price until a person reviews the goods

### `generate_offer` (~335 tokens)

Quote a China to USA shipment

Prices a real shipment from China to a US address, 100 g to 2,000 kg, on Plain Freight's live pricing engine. Returns door to door prices in USD: each option covers freight, US customs clearance and delivery, and says whether US import duty is included (DDP) or paid at import. Carton dimensions affect the price: for light, bulky cargo the volumetric weight sets it. Side effects: each call records a separate quote request with Plain Freight, and if an email is given the written offer is emailed to that address once a second check settles (at most one offer email per address per day). Nothing is booked or charged. The result carries a quote_id, by which the second check's verdict can be read.

Input parameters:

- `destination_zip` (string): US destination ZIP code of the shipment
- `dimensions` (string): Cartons and size, e.g. '4 cartons, 60x40x35 cm each'
- `email` (string): Optional. Address the written offer is mailed to; replying to that email is one way to book.
- `name` (string): Optional. The name to address the offer email to
- `notes` (string): Optional shipment facts: HS code, Amazon FBA requirements, delivery constraints, certifications held
- `origin` (string): Pickup city or supplier's city in China
- `product` (string, required): What is being shipped, e.g. 'LED desk lamps, 500 units'
- `urgency` (string)
- `weight_kg` (number, required): Total weight in kg (0.1 to 2000)

Output parameters:

- `agent_review` (string)
- `book_url` (string): plainfreight.com booking form, prefilled with this shipment and quote
- `contact` (string)
- `error` (string)
- `needs_review` (boolean): true: prices withheld until a person clears the goods
- `next_step` (string)
- `options` (array)
- `questions` (array)
- `quote_id` (string|null): Reference for the offer's second check and for booking
- `shipment` (object)
- `summary` (string)
- `valid_days` (number)

### `check_offer_status` (~122 tokens)

Check an offer's second review

Reads the result of the second check on a Plain Freight offer, by the offer's quote_id. Read-only. Returns settled (true once the check finished), possibly updated options and summary, follow-up questions whose answers change the price or customs channel, the offer email status, and needs_review. When needs_review is true, prices are withheld until a person at Plain Freight reviews the goods (for example batteries, food or chemicals), and Plain Freight follows up by email.

Input parameters:

- `quote_id` (string, required): The quote_id of a Plain Freight offer (a UUID)

Output parameters:

- `email` (string|null): Offer email status: sent, queued, deferred, skipped or failed
- `error` (string)
- `needs_review` (boolean)
- `options` (array)
- `questions` (array)
- `quote_id` (string)
- `settled` (boolean)
- `text` (string|null)

### `track_shipment` (~148 tokens)

Track an existing shipment

Reads a booked Plain Freight shipment from its tracking link. Input: the tracking link from the booking email (https://plainfreight.com/track/<token>) or the bare token; the token is the credential, so only someone the customer shared the link with can read the record. Returns the shipment reference, the current stage on the 10-stage lifecycle (Booking through Delivered), shipment details and the dated event log. Read-only; changes to a booking go by email to info@plainfreight.com with the shipment reference.

Input parameters:

- `tracking_link` (string, required): The tracking URL from the booking email (https://plainfreight.com/track/<token>), or the token by itself

Output parameters:

- `carrier` (string|null): Shown only once the invoice is paid
- `contact` (string)
- `destination_city` (string|null)
- `error` (string)
- `events` (array)
- `goods` (string|null)
- `lifecycle` (array)
- `origin_city` (string|null)
- `record_url` (string)
- `reference` (string|null)
- `stage` (string|null): e.g. '7 of 10'; null when cancelled
- `status` (string)
- `status_label` (string)
- `tracking_number` (string|null): Shown only once the invoice is paid
- `updated_at` (string)
- `weight_kg` (number|null)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-plainfreight-quotes/api-mcp#diagnostics

## Score history

- 2026-11-05: 81
- 2026-11-04: 80
- 2026-11-03: 81
- 2026-11-02: 81
- 2026-11-01: 81
- 2026-10-31: 81
- 2026-10-30: 81
- 2026-10-29: 81
- 2026-10-28: 81
- 2026-10-27: 81
- 2026-10-26: 81
- 2026-10-25: 81
- 2026-10-24: 81
- 2026-10-23: 81
- 2026-10-22: 81
- 2026-10-21: 81
- 2026-10-20: 81
- 2026-10-19: 81
- 2026-10-18: 81
- 2026-10-17: 81
- 2026-10-16: 81
- 2026-10-15: 81
- 2026-10-14: 80
- 2026-10-13: 80
- 2026-10-12: 79
- 2026-10-10: 78
- 2026-10-04: 75
- 2026-10-03: 75
- 2026-10-02: 75
- 2026-10-01: 74

## Common questions

### What is the Plain Freight MCP server?

Plain Freight is an MCP server listed in the public MCP registry as com.plainfreight/quotes. All-in DDP quotes for China to USA shipments, 100 g to 2,000 kg, from a live rate card. This page covers its hosted endpoint (https://plainfreight.com/api/mcp).

### Is the Plain Freight MCP server safe to use?

Plain Freight scores 81 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Plain Freight MCP server expose?

Plain Freight exposes 5 tools: estimate_price, check_goods, generate_offer, check_offer_status, track_shipment. Their descriptions and schemas cost roughly 1,033 tokens of context every time the server is loaded.

### Does the Plain Freight MCP server require authentication?

No. We connected to Plain Freight without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Plain Freight MCP server still maintained?

Plain Freight is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://plainfreight.com/api/mcp
- Repository: https://github.com/plainfreight-com/plainfreight-mcp
- Website: https://plainfreight.com/for-agents
- Changelog RSS feed: https://verifymcp.io/servers/com-plainfreight-quotes/api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-plainfreight-quotes/api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-plainfreight-quotes/api-mcp
