MCP-Server

Plain Freight

com.plainfreight/quotes
Business & Betrieb Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Checks shipment eligibility, estimates and generates China-to-US freight quotes, checks offer status, and tracks booked shipments.

check_goods
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['product'], 'properties': {'product': {'type': 'string', 'description': "The product, in the user's words (materials and whether it has a battery help)"}}}
Ausgabeschema
{'type': 'object', 'properties': {'error': {'type': 'string'}, 'verdict': {'enum': ['instant_offer', 'branded_rate', 'person_checks_first'], 'type': 'string', 'description': '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'}, 'category': {'type': ['string', 'null']}, 'next_step': {'type': 'string'}, 'have_ready': {'type': ['string', 'null'], 'description': 'Documents or details the person will ask for'}, 'explanation': {'type': 'string'}}}
check_offer_status
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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['quote_id'], 'properties': {'quote_id': {'type': 'string', 'description': 'The quote_id of a Plain Freight offer (a UUID)'}}}
Ausgabeschema
{'type': 'object', 'properties': {'text': {'type': ['string', 'null']}, 'email': {'type': ['string', 'null'], 'description': 'Offer email status: sent, queued, deferred, skipped or failed'}, 'error': {'type': 'string'}, 'options': {'type': 'array', 'items': {'type': 'object', 'properties': {'key': {'type': 'string', 'description': 'air, sea or express'}, 'firm': {'type': 'boolean', 'description': 'false means an estimate confirmed before booking'}, 'label': {'type': 'string'}, 'price': {'type': 'number', 'description': 'Price in USD for the whole shipment'}, 'transit': {'type': 'string', 'description': 'Door to door transit estimate'}, 'includes': {'type': 'string', 'description': 'Exactly what this price covers'}, 'duties_included': {'type': 'boolean', 'description': 'true when US import duty is inside the price (DDP); false when duty is paid to the government at import'}}}}, 'settled': {'type': 'boolean'}, 'quote_id': {'type': 'string'}, 'questions': {'type': 'array', 'items': {'type': 'string'}}, 'needs_review': {'type': 'boolean'}}}
estimate_price
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 100 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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['weight_kg'], 'properties': {'product': {'type': 'string', 'description': 'What is being shipped, in a few words (sets the goods rate)'}, 'total_cbm': {'type': 'number', 'description': 'Total volume in cubic meters, if known instead of carton sizes'}, 'weight_kg': {'type': 'number', 'maximum': 2000, 'minimum': 0.1, 'description': 'Total actual weight of the shipment in kg'}, 'carton_count': {'type': 'integer', 'minimum': 1, 'description': 'Number of cartons of that size'}, 'carton_width_cm': {'type': 'number', 'description': "One carton's width in cm"}, 'carton_height_cm': {'type': 'number', 'description': "One carton's height in cm"}, 'carton_length_cm': {'type': 'number', 'description': "One carton's length in cm"}}}
Ausgabeschema
{'type': 'object', 'properties': {'error': {'type': 'string'}, 'goods': {'type': 'object', 'properties': {'verdict': {'enum': ['instant_offer', 'branded_rate', 'person_checks_first'], 'type': 'string', 'description': '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'}, 'category': {'type': ['string', 'null']}, 'have_ready': {'type': ['string', 'null'], 'description': 'Documents or details the person will ask for'}, 'explanation': {'type': 'string'}}}, 'options': {'type': 'array', 'items': {'type': 'object', 'properties': {'mode': {'enum': ['air', 'sea'], 'type': 'string'}, 'label': {'type': 'string'}, 'transit': {'type': 'string'}, 'per_kg_usd': {'type': 'number'}, 'estimate_usd': {'type': 'number', 'description': 'Estimated price in USD for the whole shipment'}, 'duty_included': {'type': 'boolean'}}}}, 'estimate': {'type': 'boolean', 'description': 'Always true: a rough figure, not an offer'}, 'actual_kg': {'type': 'number'}, 'next_step': {'type': 'string'}, 'priced_as': {'enum': ['general', 'branded'], 'type': 'string'}, 'priced_on': {'type': 'string', 'description': 'Date the pricing engine produced these figures'}, 'chargeable_kg': {'type': 'number'}, 'volumetric_kg': {'type': ['number', 'null']}}}
generate_offer
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.
Destruktiv Externer Zugriff
Eingabeschema
{'type': 'object', 'required': ['product', 'weight_kg'], 'properties': {'name': {'type': 'string', 'description': 'Optional. The name to address the offer email to'}, 'email': {'type': 'string', 'description': 'Optional. Address the written offer is mailed to; replying to that email is one way to book.'}, 'notes': {'type': 'string', 'description': 'Optional shipment facts: HS code, Amazon FBA requirements, delivery constraints, certifications held'}, 'origin': {'type': 'string', 'description': "Pickup city or supplier's city in China"}, 'product': {'type': 'string', 'description': "What is being shipped, e.g. 'LED desk lamps, 500 units'"}, 'urgency': {'enum': ['Not urgent', 'Need best balance of cost and speed', 'Urgent'], 'type': 'string'}, 'weight_kg': {'type': 'number', 'maximum': 2000, 'minimum': 0.1, 'description': 'Total weight in kg (0.1 to 2000)'}, 'dimensions': {'type': 'string', 'description': "Cartons and size, e.g. '4 cartons, 60x40x35 cm each'"}, 'destination_zip': {'type': 'string', 'description': 'US destination ZIP code of the shipment'}}}
Ausgabeschema
{'type': 'object', 'properties': {'error': {'type': 'string'}, 'contact': {'type': 'string'}, 'options': {'type': 'array', 'items': {'type': 'object', 'properties': {'key': {'type': 'string', 'description': 'air, sea or express'}, 'firm': {'type': 'boolean', 'description': 'false means an estimate confirmed before booking'}, 'label': {'type': 'string'}, 'price': {'type': 'number', 'description': 'Price in USD for the whole shipment'}, 'transit': {'type': 'string', 'description': 'Door to door transit estimate'}, 'includes': {'type': 'string', 'description': 'Exactly what this price covers'}, 'duties_included': {'type': 'boolean', 'description': 'true when US import duty is inside the price (DDP); false when duty is paid to the government at import'}}}}, 'summary': {'type': 'string'}, 'book_url': {'type': 'string', 'description': 'plainfreight.com booking form, prefilled with this shipment and quote'}, 'quote_id': {'type': ['string', 'null'], 'description': "Reference for the offer's second check and for booking"}, 'shipment': {'type': 'object', 'properties': {'product': {'type': 'string'}, 'weight_kg': {'type': 'number'}, 'dimensions': {'type': 'string'}, 'chargeable_kg': {'type': 'number', 'description': 'weight the price is computed on: the greater of actual and volumetric weight'}, 'destination_zip': {'type': 'string'}}}, 'next_step': {'type': 'string'}, 'questions': {'type': 'array', 'items': {'type': 'string'}}, 'valid_days': {'type': 'number'}, 'agent_review': {'enum': ['pending', 'not_running'], 'type': 'string'}, 'needs_review': {'type': 'boolean', 'description': 'true: prices withheld until a person clears the goods'}}}
track_shipment
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 hello@plainfreight.com with the shipment reference.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['tracking_link'], 'properties': {'tracking_link': {'type': 'string', 'description': 'The tracking URL from the booking email (https://plainfreight.com/track/<token>), or the token by itself'}}}
Ausgabeschema
{'type': 'object', 'properties': {'error': {'type': 'string'}, 'goods': {'type': ['string', 'null']}, 'stage': {'type': ['string', 'null'], 'description': "e.g. '7 of 10'; null when cancelled"}, 'events': {'type': 'array', 'items': {'type': 'object', 'properties': {'status': {'type': ['string', 'null'], 'description': 'Lifecycle status the event belongs to'}, 'happened_at': {'type': 'string'}, 'customer_note': {'type': 'string'}}}}, 'status': {'type': 'string'}, 'carrier': {'type': ['string', 'null'], 'description': 'Shown only once the invoice is paid'}, 'contact': {'type': 'string'}, 'lifecycle': {'type': 'array', 'items': {'type': 'string'}}, 'reference': {'type': ['string', 'null']}, 'weight_kg': {'type': ['number', 'null']}, 'record_url': {'type': 'string'}, 'updated_at': {'type': 'string'}, 'origin_city': {'type': ['string', 'null']}, 'status_label': {'type': 'string'}, 'tracking_number': {'type': ['string', 'null'], 'description': 'Shown only once the invoice is paid'}, 'destination_city': {'type': ['string', 'null']}}}
Geändert
track_shipment
29. September 2026 03:02
Geändert
check_offer_status
29. September 2026 03:02
Geändert
generate_offer
29. September 2026 03:02
Hinzugefügt
check_goods
29. September 2026 03:02
Hinzugefügt
estimate_price
29. September 2026 03:02
Hinzugefügt
track_shipment
17. September 2026 12:36
Hinzugefügt
check_offer_status
17. September 2026 12:36
Hinzugefügt
generate_offer
17. September 2026 12:36