{
  "markdown": "# Trimtab US Trade Ledger — MCP server for US tariff & trade data\n\n**What US importers actually paid at the border — free, no API key, no signup.**\nOfficial duty receipts by product and origin, monthly since 2017, reconciled monthly against the\nUS Treasury's own customs receipts (both books: assessed at entry and kept after refunds — May and\nJune 2026 ran negative). Plus the current HTS rulebook with Federal Register citations, CBP\nclassification rulings, HS code search, US containerised imports by origin × commodity × gateway\n(revision-tracked), and a frozen 2026 archive of own-recorded AIS ship movements. Every response\ncarries its method, its provenance, and its limits, so your agent can verify instead of trust.\n\nPublished by **[Trimtabist](https://trimtabist.com)** — the independent observatory for US trade.\n20 pre-registered ruled studies (nulls published), a public corrections log, and the whole\ncollection pipeline open at [trimtab-pipeline](https://github.com/mrsingh86/trimtab-pipeline).\n\n**Endpoint (streamable HTTP, no auth):**\n```\nhttps://trimtabist.com/mcp\n```\nOfficial MCP registry: `com.trimtabist/us-tariff-ledger` · 13 tools + an archive router ·\ndocs for agents: [trimtabist.com/llms.txt](https://trimtabist.com/llms.txt) ·\nconnect guides: [trimtabist.com/connect](https://trimtabist.com/connect)\n\n## Why\n\nCarrier tracking data doesn't mean what it says. The same event label can mean \"alongside the dock\"\nfor one carrier and \"waiting at anchor\" for another — a difference of hours to days, which is\nexactly the difference that decides a demurrage clock, a drayage appointment, or a customer\npromise. Meanwhile the carriers have been closing their doors to automated readers: several now\nblock AI crawlers *by name* in `robots.txt`, and not one of the top ten runs a public developer\nportal.\n\nSo the software now making shipping decisions is arguing from paperwork it cannot check. This\ninstrument offers the other half: **physics**. A ship is either moving or it isn't; it is either\nalongside a container terminal or it isn't. AIS says so, we record it continuously, and we publish\nwhat we see — including what we can't.\n\n## Add it to your agent\n\nClaude Code:\n\n```bash\nclaude mcp add --transport http trimtab-ais https://ais.trimtabist.com/mcp\n```\n\nClaude Desktop or any MCP client (HTTP transport):\n\n```json\n{ \"mcpServers\": { \"trimtab-ais\": { \"url\": \"https://ais.trimtabist.com/mcp\" } } }\n```\n\nClients that require stdio:\n\n```json\n{ \"mcpServers\": { \"trimtab-ais\": { \"command\": \"npx\", \"args\": [\"-y\", \"trimtab-ais\"] } } }\n```\n\n## Use it from code\n\n```bash\nnpm i trimtab-ais\n```\n\n```js\nimport { gatewayConditions, vesselStatus, hasVesselBerthed } from 'trimtab-ais';\n\nconst la = await gatewayConditions('us_la_longbeach');\n// → { gateways: [{ at_berth: { by_class: { container: 8, tanker: 3, ... } },\n//                  at_anchor: { ... }, container_terminals: { \"LA Pier 400 (APM)\": [...] } }],\n//     as_of, method, coverage, source, attribution }\n\nawait vesselStatus('MSC DARLENE');\n// → moored, container, 366 m, LA Terminal Island (Fenix/Everport), since 2026-07-26T14:47Z\n\nawait hasVesselBerthed('EVER MEGA', 72);\n// → { berthed: true, events: [{ at, gateway, terminal, queue_wait_min }] }\n```\n\nOr from the shell, with no install:\n\n```bash\nnpx trimtab-ais gateway us_savannah\nnpx trimtab-ais vessel \"ONE ORPHEUS\"\nnpx trimtab-ais berthed \"MSC DARLENE\" 48\n```\n\nOr straight over HTTPS — it is plain JSON-RPC:\n\n```bash\ncurl -X POST https://ais.trimtabist.com/mcp -H 'Content-Type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\n       \"params\":{\"name\":\"gateway_conditions\",\"arguments\":{\"gateway\":\"us_ny_nj\"}}}'\n```\n\n## The tools\n\n| Tool | Answers |\n|---|---|\n| `gateway_conditions` | What's happening at a gateway now — vessels at berth and at anchor, classified (container / bulk-general / tanker / service), with container terminals named |\n| `vessel_status` | Where a vessel is, what it's physically doing, which terminal, since when, declared destination |\n| `has_vessel_berthed` | Whether a vessel berthed within a lookback window — timestamp, terminal, anchorage wait if it queued |\n| `recent_events` | The event stream: arrivals, anchorings, berthings, departures, and semantic notes |\n\nUS Trade Ledger series tools (Census-recorded port trade + cross-checks):\n\n| Tool | Answers |\n|---|---|\n| `list_instruments` | Every instrument and data series, with provenance grade and trust state — start here |\n| `describe_series` | What one series measures: unit, source, method, citation, coverage |\n| `query_series` | The data: monthly US port trade by country & commodity, vessel events, ETA reliability |\n| `check_agreement` | Census customs records vs live AIS observation — where independent instruments disagree, one is wrong |\n| `search_series` | Find series by plain language: \"imports from india\", \"houston\", \"vessel arrivals\" |\n\nGateways: `us_la_longbeach` `us_ny_nj` `us_savannah` `us_houston` `us_charleston` `us_norfolk`\n`us_oakland` `us_seattle_tacoma`\n\n## What it covers — and what it doesn't\n\nAn instrument that hides its blind spots isn't an instrument.\n\n- **Covered:** the eight US container gateways above.\n- **Recorded but thin:** Chennai/Ennore/Kattupalli; JNPT, Mundra, Pipavav, Hazira, Vizhinjam,\n  Colombo — terrestrial receivers are sparse there, so coverage is partial to absent. Published, not\n  papered over.\n- **Not covered:** mid-ocean (terrestrial AIS only, no satellite), cargo (AIS sees ships, never\n  boxes), rates, schedules, or anything a carrier declares rather than does.\n- **Archive begins 26 July 2026,** with one disclosed gap (2026-07-26 17:20Z → 2026-07-27 12:16Z)\n  from the instrument's first day. Durations that began before recording started are lower bounds,\n  and say so.\n\n**[Read the method →](https://ais.trimtabist.com/method)** — sources, state-machine thresholds,\nhow container ships are distinguished from bulkers (AIS type codes can't), known limits, and the\ncorrection policy. Written so a stranger can reproduce the numbers, or prove them wrong.\n\n## Licence and citation\n\nData **CC BY 4.0**, code **Apache 2.0**. Use it commercially, build on it, redistribute it — with\nattribution:\n\n> Trimtab AIS (ais.trimtabist.com), built by Mrigank Singh\n\nNot for regulatory or safety-of-life reliance; no warranty. If you find it wrong,\n[tell me](mailto:mrigank@intoglo.com) — corrections are published, with the size of the error\nquantified.\n\n---\n\nBuilt and maintained by **[Mrigank Singh](https://mriganksingh.ai)**, who moves containers for a\nliving — co-founder & COO of Intoglo, an India→US freight forwarder. This is the live-observation layer of the\nTrimtab US Trade Ledger, which measures what trade data actually says versus what actually happens.\n",
  "bytes": 6762,
  "sha": "d611e2c6642f361c18a1754d7259efcbef2c8091a9ad1e9be1ba4ca4dc4c7d60",
  "repo_slug": "mrsingh86/trimtab-ais",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_trimtabist_us_tariff_ledger_2394a285/readme"
}