freight-pulse
# freight-pulse ๐ข
**Ocean & multimodal freight intelligence suite for AI agents.** One MCP server that answers
*any* shipping question an importer, CFO, or supply-chain agent actually asks โ from
*"what's the spot rate Shanghai โ LA?"* to *"what's my total landed cost with duty?"* to
*"should I book this lane now or wait?"* โ across **47 tools** covering rates, total landed
cost, transit reliability, customs, risk, emissions, and a unified **ship decision**.
> Give it a lane, an HS code, a value โ get back **one trustworthy, cross-validated answer**
> with a confidence read, not one vendor's quote. The rate engine, port normalization,
> customs logic, and the accumulating per-lane history all run **server-side** (the moat);
> the npm package is a thin client.
**Hosted endpoint:** `https://freight-pulse-mcp.vercel.app/mcp` ยท streamable-HTTP, no signup for the free tier.
---
## Why an agent picks this
A single freight API returns **one vendor's number** with no second opinion and stops at the
rate. freight-pulse goes the whole distance an importer needs:
- **Cross-validated rates.** Reads Drewry's World Container Index (WCI) and the Freightos
Baltic Index (FBX) server-side (plus your own SeaRates key if you supply one) and reconciles
them into **one normalized USD figure** with a **confidence score** (do the sources agree?)
and a market direction (rising / falling / stable).
- **The whole decision, not just the price.** Landed cost with HS-code duty, all-in door-to-door,
transit time + reliability (p90), air-vs-ocean trade-off, customs, risk, COโ โ folded into a
single **`ship_decision`** verdict: *BOOK NOW / WAIT / SWITCH MODE*.
- **Its own accumulating history.** Every lane queried is cached with a timestamp; trend tools
serve a weeks-long normalized series no single index hands an agent for free.
- **Public, non-sensitive inputs.** Ports, HS codes, declared values โ nothing secret. Safe for
an agent to call without handing over credentials.
---
## Worked example โ Shanghai โ Los Angeles, 40ft, $180k of cargo
```
๐ฒ get_spot_rate โ $5,442 / 40ft ยท confidence ๐ข 80/100 ยท cross-validated from Drewry + FBX (spread 11%)
๐งพ get_all_in_rate โ $6,910 all-in (BAF, THC, doc, ISF, drayage folded in)
๐ฆ get_landed_cost โ $193,180 delivered (rate + 3.4% duty on HS 8516 + MPF/HMF + insurance)
๐ข ship_decision โ BOOK NOW ยท rate stable-to-rising, equipment available, transit p90 within SLA
```
One agent call chain, one verdict. That's the difference between a freight API and a freight *agent*.
---
## What's inside โ 47 tools
| Area | Tools |
|---|---|
| **Rates & trend** | `get_spot_rate` (FREE), `get_lane_trend`, `get_all_in_rate`, `rate_benchmark` (am I overpaying?) |
| **Total cost** | `get_landed_cost`, `total_cost_ownership`, `customs_valuation`, `customs_optimization` |
| **Decision** | `ship_decision`, `simulate_scenario`, `compare_modes` (air vs ocean), `sourcing_analysis` (China+1 / nearshoring) |
| **Transit & risk** | `get_port_intel` (congestion), `lane_risk_index`, `disruption`, `contingency_plan`, `get_scorecard` |
| **Procurement** | `procurement_strategy`, `build_tender`, `evaluate_bids`, `select_provider` (forwarder/3PL), `record_performance` |
| **Customs & docs** | `required_documents`, `incoterm_responsibility`, `qualify_fta_origin`, `export_compliance`, `check_lc_documents` |
| **Carriers & equipment** | `carrier_recommendation`, `equipment_availability`, `booking_strategy`, `appointment_plan`, `dnd_strategy` (demurrage & detention) |
| **Inland & load** | `door_to_door`, `load_plan`, `pallet_plan`, `optimize_network`, `cold_chain` |
| **Finance & risk** | `payment_terms`, `fx_exposure`, `insurance_recommendation`, `inventory_optimization` |
| **Sustainability** | `carbon_footprint` (GLEC/ISO 14083), `decarbonization_roadmap`, `reverse_logistics` |
| **Monitoring** | `create_watch`, `check_watches`, `market_report`, `special_cargo` |
`get_spot_rate` is **free** (the hook). The deep analytical tools are **premium**.
---
## Quickstart (MCP)
```jsonc
{
"mcpServers": {
"freight-pulse": {
"command": "npx",
"args": ["-y", "freight-pulse-mcp"],
"env": {
// optional: unlock premium tools with a prepaid key
"FREIGHT_PULSE_KEY": "fp_โฆ",
// optional: your own SeaRates key โ cross-validated as a THIRD source, RAISES confidence
"SEARATES_API_KEY": "โฆ"
}
}
}
}
```
Or connect over HTTP at `POST https://freight-pulse-mcp.vercel.app/mcp` (streamable).
---
## Free vs Pro
| | Free | Pro |
|---|---|---|
| `get_spot_rate` (cross-validated rate + confidence + direction) | โ
| โ
|
| All 40+ analytical tools (landed cost, ship_decision, customs, risk, trend, โฆ) | upsell preview | โ
full result |
| Accumulating per-lane trend history | โ | โ
|
| Pay how | โ | ๐ช **x402 (USDC on Base)** per call โ agents pay automatically, no signup ยท or ๐ณ **card** via Stripe checkout for a prepaid key |
Two ways to pay a premium call:
- ๐ช **x402 (USDC on Base)** โ an x402-aware agent pays per call automatically, zero signup.
- ๐ณ **Card (Stripe)** โ buy a prepaid API key, send it as `Authorization: Bearer <key>`
(or set `FREIGHT_PULSE_KEY`).
---
## On the data
freight-pulse is **indicative market intelligence** cross-validated from public freight indices
and customs references โ not a carrier quote or a booking. Always verify with your forwarder
before committing. Drewry WCI and Freightos FBX publish weekly assessments; the optional SeaRates
source is bring-your-own-key (it only raises confidence, never required).
The analysis engine โ index fetching, port/HS normalization, cross-validation, the confidence
model, customs/duty logic, and the per-lane history cache โ runs **server-side**. The npm package
is a thin client that forwards to the hosted service.
MIT ยท [github.com/Baneado98/freight-pulse](https://github.com/Baneado98/freight-pulse) ยท Hosted at `freight-pulse-mcp.vercel.app`
TDQS
Scored across 47 tools
Each tool targets a highly specific aspect of freight logistics, from spot rates to customs optimization to scenario simulation. The detailed descriptions provide clear boundaries, and even overlapping areas like demurrage are split into distinct tools (appointment_plan vs dnd_strategy) with unique purposes.
Tool names consistently follow a verb_noun pattern (e.g., get_spot_rate, create_watch, check_watches) or are descriptive noun phrases (e.g., market_report, ship_decision). All use lowercase with underscores, with no mixing of conventions or irregular patterns.
At 47 tools, the count is high, reflecting the server's exhaustive coverage of freight logistics (rates, costs, compliance, risk, optimization). While above the typical sweet spot, the breadth justifies the number, and each tool serves a distinct function without redundancy.
The tool surface covers virtually the entire lifecycle of freight decision-making: market intelligence, cost analysis, regulatory compliance, risk management, procurement, and optimization. Minor gaps (e.g., no tool for real-time tracking) are outside the server's decision-support scope, making it remarkably complete for its stated purpose.