Terminal49 MCP Server
Use the Terminal49 MCP server to let Claude or Cursor answer questions with live container and shipment data—without writing custom glue code.TL;DR – Get Started in 5 Minutes
Get your API token
Go to the Terminal49 dashboard → Settings → API Tokens and create a
T49_API_TOKEN.Paste this config (Claude Desktop)
Edit
~/Library/Application Support/Claude/claude_desktop_config.json:Cursor IDE config
Cursor IDE config
Need test container numbers? See Test Numbers for containers you can use during development.
Transports
| Transport | Endpoint | Best For |
|---|---|---|
| HTTP (streamable) | POST /api/mcp or POST /mcp | Serverless, short-lived requests |
- API token only (OAuth not required for this release)
- Header:
Authorization: Bearer <T49_API_TOKEN>orAuthorization: Token <T49_API_TOKEN> - Or set
T49_API_TOKENenvironment variable when self-hosting
Planning OAuth for hosted MCP? Use the Hosted HTTP OAuth Requirements and Hosted HTTP OAuth Test Plan.
Tools Reference
search_container
Find containers by container number, BL, booking, or your own reference. This is the fastest way to locate containers.
Parameters
query(string, required) – container number, BL, booking, or reference
Example MCP request
Example MCP request
Example response
Example response
- “Find this container and tell me where it is”
- “Show all containers with reference PO-12345”
track_container
Start tracking a new container. Creates a tracking request and returns container details.
Parameters
number(string, required) – container number, BL, or booking numbernumberType(string, optional) – override inference (container,bill_of_lading,booking_number)scac(string, optional) – shipping line code, e.g.,MAEUfor MaerskrefNumbers(string[], optional) – your reference numbers
Example MCP request
Example MCP request
- “Track container CAIU1234567 with Maersk”
- “Start tracking this new shipment”
get_container
Get detailed container information with flexible data loading. Choose what to include based on your question.
Parameters
id(uuid, required) – Terminal49 container UUIDinclude(string[], optional) – what to load:shipment– routing, BOL, line, ref numbers (lightweight)pod_terminal– terminal name, location (lightweight)transport_events– full event history (heavy, 50-100 events)
Example MCP request
Example MCP request
Example response (mapped)
Example response (mapped)
- “What’s the status of this container?”
- “Is it available for pickup? Any holds?”
- “When does demurrage start?”
get_container_transport_events
Get the full event timeline for a container’s journey.
Parameters
id(uuid, required) – Terminal49 container UUID
Example response
Example response
- “Show me the journey timeline”
- “What happened to this container?”
- “How long was the rail portion?”
get_shipment_details
Get shipment-level information including routing, BOL, and all containers.
Parameters
id(uuid, required) – Terminal49 shipment UUIDinclude_containers(boolean, optional) – include container list (default: true)
- “Tell me about this shipment”
- “What containers are on this BL?”
- “Show me the routing”
get_supported_shipping_lines
List carriers supported by Terminal49 with their SCAC codes.
Parameters
search(string, optional) – filter by name or SCAC
- “What carriers do you support?”
- “What’s the SCAC code for CMA CGM?”
get_container_route
Get detailed multi-leg routing with vessel itinerary.
Parameters
id(uuid, required) – Terminal49 container UUID
- “What’s the routing for this container?”
- “Which transshipment ports?”
- “What vessel is it on?”
list_shipments
List shipments with optional filters and pagination.
Parameters
status,port,carrier,updated_after(string, optional)include_containers(boolean, optional)page,page_size(number, optional)
- “List recent shipments”
- “Show in-transit shipments for MAEU”
list_containers
List containers with optional filters and pagination.
Parameters
status,port,carrier,updated_after(string, optional)include(string, optional) – comma-separated include listpage,page_size(number, optional)
- “List containers updated in the last 24h”
- “Show containers at a specific POD port”
list_tracking_requests
List tracking requests with optional filters and pagination.
Parameters
filters(object, optional) – raw query filterspage,page_size(number, optional)
- “Show failed tracking requests”
- “List latest tracking activity”
Prompts Reference
Prompts are pre-built workflows that guide the AI through multi-step analysis.track-shipment
Quick container tracking with optional carrier specification.
Arguments
container_number(string, required) – e.g.,CAIU1234567carrier(string, optional) – SCAC code, e.g.,MAEU
“Using Terminal49, track container CAIU1234567 and show me its current status, location, and ETA.”
check-demurrage
Analyze demurrage/detention risk for a container.
Arguments
container_id(uuid, required) – fromsearch_containerorget_container
“Using Terminal49, check demurrage risk for container CAIU1234567 and explain which fees apply and when.”
analyze-delays
Identify delays and root causes in a container’s journey.
Arguments
container_id(uuid, required) – Container UUID
“Using Terminal49, analyze delays for container CAIU1234567 and tell me what caused them.”
Resources Reference
Resources provide static or dynamic data that AI clients can read.| Resource URI | Description |
|---|---|
terminal49://container/{id} | Container data in markdown format |
terminal49://docs/milestone-glossary | Event/milestone reference documentation |
Example resources/read request
Example resources/read request
Not Yet Supported
These Terminal49 API capabilities are available via the SDK but not yet exposed as MCP tools:| API | Description | Workaround |
|---|---|---|
update_shipment | Update shipment ref numbers/tags | Use REST API |
stop_tracking | Stop tracking a shipment | Use REST API |
resume_tracking | Resume tracking a shipment | Use REST API |
raw_events | Get raw EDI event data | Use REST API |
refresh_container | Force refresh container data | Use REST API |
| Webhooks | Real-time event notifications | Configure via dashboard |
Shipment/container list operations are available via MCP. Update/stop/resume tracking operations still require REST API or direct SDK usage.
Related Guides
- MCP Server Quickstart – Full setup, local dev, deployment
- Rate Limiting – Same limits apply to MCP
- Test Numbers – Containers for testing
- Webhooks – Real-time updates (use with MCP for best results)