Koskamo

BerthTime MCP

An official MCP server by BerthTime that allows AI assistants to track ocean containers and shipments. It provides live ETAs, delay notifications, carrier events, and shipment history by querying the user's BerthTime account data via OAuth or API keys.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

BerthTime MCP logo, by BerthTimeVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by BerthTime
You need:You need a BerthTime account and an account with your AI assistant.
MCP endpoint (Streamable HTTP)
https://berthtime.com/api/v1/mcp
Vendor documentation

What its tools do

18 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

18 of 18 have a description · 18 of 18 declare behavior hints · 17 of 17 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to berthtime.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Find a shipment by container, bill of lading, or booking number
  • Tell you the carrier's ETA and whether it has slipped
  • List what arrives soon and what is delayed
  • Walk you through the history of a shipment

Source and maintenance

Vendor evidenceRegistry 1.0.4
Maintenance checked

Protocol and capabilities

Server
berthtime 0.1.0
MCP protocol negotiated in check
2025-11-25
Tools
18 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

BerthTime tracks ocean shipments (container, bill of lading or booking numbers) at the carrier. All data belongs to a company. Use list_shipments / list_arriving_shipments / list_delayed_shipments to find shipments, get_shipment for route, ETA and latest events, and track_shipment to start tracking a new reference. BerthTime updates every shipment automatically in the background (get_shipment shows when); there is no manual refresh. Times are UTC. Write tools need the `write` scope (a read + write API key, or read + write access granted at sign-in by an owner or admin of the company). Errors come back as a tool result with isError and a plain explanation of what to do next. You are not signed in: tools/list works, but every tool call needs a sign-in (OAuth, advertised in the 401 WWW-Authenticate header) or `Authorization: Bearer bt_live_...` (a BerthTime API key).

Tools

18 advertised

list_companies — Who am I / my companies
Advertised by the server during the last successful anonymous check.
Advertised read-only

Who this connection acts as (user or API key) and every company it may act for, with read or read + write access in each (a.k.a. whoami). Call it first when the user belongs to several companies or a call says access is denied; then pass `company` (id, @handle or exact name) to the other tools. No arguments. Returns: acting_as {type, name, email or prefix, app}, connection (api_key or oauth), all_companies, default_company and companies[] {id, name, handle, plan, plan_name, role, access, default}.

list_companies input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_companies annotations
{
  "title": "Who am I / my companies",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_shipments — List shipments
Advertised by the server during the last successful anonymous check.
Advertised read-only

List or search the company's own tracked shipments, newest first. Use it to find a shipment (free-text `q`: reference, customer reference, container number, vessel) or to filter by status (default active), carrier SCAC, phase, tag, ETA window (eta_after / eta_before, ISO 8601) or predicted eta_risk. For one shipment's full detail use get_shipment; for the next N days use list_arriving_shipments; for slipped ETAs use list_delayed_shipments; shipments other companies share with you are in list_shared_shipments. All arguments are optional. Returns: shipments[] {id, reference, ref_type, carrier, customer_reference, status, tracking_status, phase, pol, pod, eta, original_eta, delay_hours, predicted_eta, eta_risk, vessel, containers, booking_number, bl_number, tracked_via}, has_more, next_cursor. Paging: limit 1-100 (default 20); pass next_cursor as `cursor` for the next page.

list_shipments input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 100,
      "description": "Search text: reference, customer reference, container number or vessel name."
    },
    "tag": {
      "type": "string",
      "maxLength": 50,
      "description": "Only shipments with this tag (exact tag name, as shown in the web app)."
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Page size, 1-100 (default 20)."
    },
    "phase": {
      "enum": [
        "pending",
        "booked",
        "in_transit",
        "arrived",
        "delivered"
      ],
      "type": "string",
      "description": "Only shipments in this phase: pending (no carrier data yet), booked, in_transit, arrived or delivered."
    },
    "cursor": {
      "type": "string",
      "description": "next_cursor from a previous call."
    },
    "status": {
      "enum": [
        "active",
        "archived",
        "all"
      ],
      "type": "string",
      "default": "active",
      "description": "active (default) = being tracked; archived; or all."
    },
    "carrier": {
      "type": "string",
      "maxLength": 8,
      "description": "Carrier SCAC, e.g. MSCU, MAEU."
    },
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "eta_risk": {
      "enum": [
        "on_time",
        "at_risk",
        "likely_late"
      ],
      "type": "string",
      "description": "Predicted ETA risk (estimate based on vessel position)."
    },
    "eta_after": {
      "type": "string",
      "format": "date-time",
      "description": "Only ETAs at or after this (ISO 8601)."
    },
    "eta_before": {
      "type": "string",
      "format": "date-time",
      "description": "Only ETAs at or before this (ISO 8601)."
    }
  },
  "additionalProperties": false
}
list_shipments annotations
{
  "title": "List shipments",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_shared_shipments — Shipments shared with us
Advertised by the server during the last successful anonymous check.
Advertised read-only

Shipments that other companies (network connections) share with this company, read only, and open tracking requests (filter=requests). They are not the company's own shipments, so list_shipments, get_shipment and the write tools do not see them. All arguments are optional: filter (all or requests), free-text `q`. Returns: shipments[] {id, reference, ref_type, carrier, carrier_name, customer_reference, owner (@handle), owner_name, status, tracking_status, phase, eta, delay_hours, pol, pod, vessel, kind, request_status, paid_by_you, shared_at}, has_more, next_cursor. Paging: limit 1-100 (default 20) and `cursor`.

list_shared_shipments input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 100,
      "description": "Search text: reference, customer reference, container number or vessel name."
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Page size, 1-100 (default 20)."
    },
    "cursor": {
      "type": "string",
      "description": "next_cursor from a previous call."
    },
    "filter": {
      "enum": [
        "all",
        "requests"
      ],
      "type": "string",
      "default": "all",
      "description": "all (default), or requests = open tracking requests only."
    },
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    }
  },
  "additionalProperties": false
}
list_shared_shipments annotations
{
  "title": "Shipments shared with us",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_shipment — Get shipment
Advertised by the server during the last successful anonymous check.
Advertised read-only

Everything about one shipment: summary, route (POL, transshipments, POD with actual and estimated times), current position estimate, carrier ETA and predicted ETA, and the latest actual events. Use it for "where is X" questions; for the full event history use get_shipment_events. `shipment` (required) is the BerthTime id, the tracked reference, or a container number on the shipment. Optional `events` (0-50, default 5) = how many latest actual events to include. Returns: shipment {id, reference, ref_type, carrier, customer_reference, status, tracking_status, phase, pol, pod, eta, original_eta, delay_hours, predicted_eta, eta_risk, vessel, containers, booking_number, bl_number, tracked_via, last_position, container_remarks}, route {stops[] {role, name, un_locode, arrival, departure}, legs[], current_position} or null, latest_events[]. Unknown reference: an error that suggests list_shipments or track_shipment.

get_shipment input schema
{
  "type": "object",
  "required": [
    "shipment"
  ],
  "properties": {
    "events": {
      "type": "integer",
      "default": 5,
      "maximum": 50,
      "minimum": 0,
      "description": "How many of the latest events to include."
    },
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "shipment": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1,
      "description": "BerthTime shipment id, or the tracked reference (container, bill of lading or booking number), or a container number on the shipment."
    }
  },
  "additionalProperties": false
}
get_shipment annotations
{
  "title": "Get shipment",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_shipment_events — Shipment events
Advertised by the server during the last successful anonymous check.
Advertised read-only

The full DCSA-style event timeline of one shipment (gate in, load, departure, arrival, discharge, ...), oldest first. Use it when the user wants the history; get_shipment already includes the last few actual events. `shipment` (required) is the BerthTime id, the tracked reference, or a container number on the shipment. Optional: classifier (ACT actual, EST estimated, PLN planned; default all), limit (most recent N, 1-500, default 50). Returns: shipment_id, reference, events[] {at, timezone, precision, classifier, code, type, description, location, un_locode, vessel, voyage, container}. Times are UTC.

get_shipment_events input schema
{
  "type": "object",
  "required": [
    "shipment"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 50,
      "maximum": 500,
      "minimum": 1,
      "description": "Most recent N events (returned oldest first)."
    },
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "shipment": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1,
      "description": "BerthTime shipment id, or the tracked reference (container, bill of lading or booking number), or a container number on the shipment."
    },
    "classifier": {
      "enum": [
        "ACT",
        "EST",
        "PLN"
      ],
      "type": "string",
      "description": "ACT actual, EST estimated, PLN planned. Default: all."
    }
  },
  "additionalProperties": false
}
get_shipment_events annotations
{
  "title": "Shipment events",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_arriving_shipments — Arriving soon
Advertised by the server during the last successful anonymous check.
Advertised read-only

Active shipments not yet arrived whose carrier ETA falls within the next N days, soonest first. Use it for "what arrives this week"; for an exact date range or other filters use list_shipments with eta_after / eta_before. All arguments are optional: days (1-120, default 7), limit (1-200, default 50). Returns: days, shipments[] {id, reference, ref_type, carrier, customer_reference, status, tracking_status, phase, pol, pod, eta, original_eta, delay_hours, predicted_eta, eta_risk, vessel, containers, booking_number, bl_number, tracked_via}. No paging: raise limit or narrow days.

list_arriving_shipments input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 7,
      "maximum": 120,
      "minimum": 1,
      "description": "Look-ahead window in days from now."
    },
    "limit": {
      "type": "integer",
      "default": 50,
      "maximum": 200,
      "minimum": 1,
      "description": "Maximum shipments returned, 1-200 (default 50)."
    },
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    }
  },
  "additionalProperties": false
}
list_arriving_shipments annotations
{
  "title": "Arriving soon",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_delayed_shipments — Delayed shipments
Advertised by the server during the last successful anonymous check.
Advertised read-only

Active shipments whose carrier ETA has slipped versus the first ETA BerthTime saw, by at least min_delay_hours, most delayed first. Use it for "what is late"; for shipments predicted to be late from the vessel position use list_shipments with eta_risk=likely_late. All arguments are optional: min_delay_hours (0-10000, default 24), limit (1-200, default 50). Returns: min_delay_hours, shipments[] {id, reference, ref_type, carrier, customer_reference, status, tracking_status, phase, pol, pod, eta, original_eta, delay_hours, predicted_eta, eta_risk, vessel, containers, booking_number, bl_number, tracked_via} (delay_hours = the slip). No paging.

list_delayed_shipments input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 50,
      "maximum": 200,
      "minimum": 1,
      "description": "Maximum shipments returned, 1-200 (default 50)."
    },
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "min_delay_hours": {
      "type": "number",
      "default": 24,
      "maximum": 10000,
      "minimum": 0,
      "description": "Minimum ETA slip vs the first ETA seen, in hours."
    }
  },
  "additionalProperties": false
}
list_delayed_shipments annotations
{
  "title": "Delayed shipments",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
detect_reference — Detect reference
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check a number before tracking it: is it a container (ISO 6346 check digit), bill of lading or booking number, and which carrier issued it. Stores nothing and needs no company. Use it when the user is unsure what a number is; track_shipment detects on its own. Required: reference (3-64 characters, e.g. MSCU1234566). Returns: reference, ref_type, carrier_scac, carrier_name, confidence, check_digit_valid, note, suggested_carrier.

detect_reference input schema
{
  "type": "object",
  "required": [
    "reference"
  ],
  "properties": {
    "reference": {
      "type": "string",
      "maxLength": 64,
      "minLength": 3,
      "description": "Container, bill of lading or booking number."
    }
  },
  "additionalProperties": false
}
detect_reference annotations
{
  "title": "Detect reference",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_carriers — List carriers
Advertised by the server during the last successful anonymous check.
Advertised read-only

The carriers BerthTime knows: SCAC, name, which reference types each supports and whether tracking is live today. Use it to find the SCAC for track_shipment's `carrier` or to answer "do you support X". Optional: live_only (default false). Returns: carriers[] {scac, name, ref_types, tracking, ...}. No paging (the full list).

list_carriers input schema
{
  "type": "object",
  "properties": {
    "live_only": {
      "type": "boolean",
      "default": false,
      "description": "Only carriers with live tracking today."
    }
  },
  "additionalProperties": false
}
list_carriers annotations
{
  "title": "List carriers",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_usage — Plan and usage
Advertised by the server during the last successful anonymous check.
Advertised read-only

The company's plan and billable shipments for one month: included allowance, used, overage, cost so far and trial end. A shipment counts once per month when the carrier returned data for it. Use it for plan, quota or billing questions. Optional: month (YYYY-MM, UTC; default this month), include_shipments (default false) to list the counted shipments. Returns: month, plan, plan_name, included (null = unlimited), used, overage, projected_cost, currency, trial_ends_at, trial_active, and with include_shipments: shipments[] {shipment_id, reference, ref_type, first_counted_at, merged}.

get_usage input schema
{
  "type": "object",
  "properties": {
    "month": {
      "type": "string",
      "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
      "description": "Calendar month YYYY-MM (UTC). Default: this month."
    },
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "include_shipments": {
      "type": "boolean",
      "default": false,
      "description": "Also list the counted shipments."
    }
  },
  "additionalProperties": false
}
get_usage annotations
{
  "title": "Plan and usage",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_alert_rules — Email alert rules
Advertised by the server during the last successful anonymous check.
Advertised read-only

The company's email alert rules (delay over N days, arrived, delivered, tracking failed), their scope (all shipments, a tag or a carrier) and how many people get them. Read only: rules are created and changed in the web app (Settings > Notifications). Optional: include_inactive (default false) to add paused rules. Returns: rules[] {id, name, summary, rule_type, delay_days, delay_mode, failure_count, scope, scope_value, is_active, recipients {all_members, members, extra_emails}}.

list_alert_rules input schema
{
  "type": "object",
  "properties": {
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "include_inactive": {
      "type": "boolean",
      "default": false,
      "description": "Also list paused rules."
    }
  },
  "additionalProperties": false
}
list_alert_rules annotations
{
  "title": "Email alert rules",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_support_requests — Support requests
Advertised by the server during the last successful anonymous check.
Advertised read-only

The company's support requests to the BerthTime team, most recent activity first. Use it to check the status of a request; to open one use create_support_request. Internal staff notes are never included. Optional: status (active = open + pending, the default; open, pending, resolved, closed or all), limit (1-100, default 20). Returns: tickets[] {id, number (BT-1234), subject, topic, status, priority, last_message_at, last_message_by, message_count, preview}, counts by status.

list_support_requests input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum requests returned, 1-100 (default 20)."
    },
    "status": {
      "enum": [
        "active",
        "open",
        "pending",
        "resolved",
        "closed",
        "all"
      ],
      "type": "string",
      "default": "active",
      "description": "active = open + pending (default)"
    },
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    }
  },
  "additionalProperties": false
}
list_support_requests annotations
{
  "title": "Support requests",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
track_shipment — Track shipment
Advertised by the server during the last successful anonymous check.
Open-world

Start tracking a container, bill of lading or booking number. Type and carrier are detected when omitted; if the carrier is not recognised the shipment is added but not tracked, and you should call again with `carrier` (SCAC, see list_carriers). Already tracked references are returned as they are (archived ones are re-activated), so repeating a call is safe. Required: reference (4-64 characters, e.g. MSCU1234566). Optional: ref_type (container, bl, booking), carrier, customer_reference, tags, booking_number and bl_number (the other numbers of the same shipment, e.g. a container with its booking: one shipment, not three). Returns: result (created or exists), shipment {id, reference, ref_type, carrier, customer_reference, status, tracking_status, phase, pol, pod, eta, original_eta, delay_hours, predicted_eta, eta_risk, vessel, containers, booking_number, bl_number, tracked_via}. The first carrier data arrives in the background: check get_shipment a minute later. Counts towards the plan's monthly allowance once the carrier returns data. Needs write access: a read + write API key, or read + write access granted at sign-in by an owner or admin of the company.

track_shipment input schema
{
  "type": "object",
  "required": [
    "reference"
  ],
  "properties": {
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Labels for filtering."
    },
    "carrier": {
      "type": "string",
      "maxLength": 8,
      "description": "Carrier SCAC. Auto-detected when omitted; required when detection fails (see list_carriers)."
    },
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "ref_type": {
      "enum": [
        "container",
        "bl",
        "booking"
      ],
      "type": "string",
      "description": "Auto-detected when omitted."
    },
    "bl_number": {
      "type": "string",
      "maxLength": 64,
      "description": "Bill of lading number of the same shipment, e.g. with a container reference."
    },
    "reference": {
      "type": "string",
      "maxLength": 64,
      "minLength": 4,
      "description": "Container (ISO 6346, e.g. MSCU1234566), bill of lading or booking number."
    },
    "booking_number": {
      "type": "string",
      "maxLength": 64,
      "description": "Booking number of the same shipment, e.g. with a container reference."
    },
    "customer_reference": {
      "type": "string",
      "maxLength": 200,
      "description": "Your PO / order / file number."
    }
  },
  "additionalProperties": false
}
track_shipment annotations
{
  "title": "Track shipment",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
update_shipment_identifiers — Set booking / B/L / containers
Advertised by the server during the last successful anonymous check.
Open-world

Set, change or remove the booking and bill of lading numbers of a tracked shipment, or add container numbers to it. Use it when the user gives another number of a shipment already tracked (e.g. the booking of a container); track_shipment would start a new shipment instead. The tracker asks these numbers when the reference fails, and first when the carrier's booking query gives more than its container query (e.g. COSCO). `shipment` (required) is the BerthTime id, the tracked reference, or a container number on the shipment. Optional: booking_number, bl_number (an empty string removes it; omitted = unchanged), containers (ISO 6346, up to 20). At least one of them is required. Returns: shipment {id, reference, ref_type, carrier, customer_reference, status, tracking_status, phase, pol, pod, eta, original_eta, delay_hours, predicted_eta, eta_risk, vessel, containers, booking_number, bl_number, tracked_via}, retracking (true = a re-track was queued). A container number given as booking or B/L, or a malformed number, is an error. Needs write access: a read + write API key, or read + write access granted at sign-in by an owner or admin of the company.

update_shipment_identifiers input schema
{
  "type": "object",
  "required": [
    "shipment"
  ],
  "properties": {
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "shipment": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1,
      "description": "BerthTime shipment id, or the tracked reference (container, bill of lading or booking number), or a container number on the shipment."
    },
    "bl_number": {
      "type": "string",
      "maxLength": 64,
      "description": "Bill of lading number to set or change; an empty string removes it. Omit to leave it as it is."
    },
    "containers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Container numbers (ISO 6346) to add to the shipment. Numbers already on it are ignored."
    },
    "booking_number": {
      "type": "string",
      "maxLength": 64,
      "description": "Booking number to set or change; an empty string removes it. Omit to leave it as it is."
    }
  },
  "additionalProperties": false
}
update_shipment_identifiers annotations
{
  "title": "Set booking / B/L / containers",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_share_link — Get share link
Advertised by the server during the last successful anonymous check.

The shipment's current public read-only tracking link (a URL anyone can open without logging in), if it has one. Use it before sending a link; use create_share_link when there is none. `shipment` (required) is the BerthTime id, the tracked reference, or a container number on the shipment. Returns: shipment_id, share_link {url, active, expires_at, view_count, ...} or null. Needs write access: a read + write API key, or read + write access granted at sign-in by an owner or admin of the company.

get_share_link input schema
{
  "type": "object",
  "required": [
    "shipment"
  ],
  "properties": {
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "shipment": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1,
      "description": "BerthTime shipment id, or the tracked reference (container, bill of lading or booking number), or a container number on the shipment."
    }
  },
  "additionalProperties": false
}
get_share_link annotations
{
  "title": "Get share link",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_share_link — Create share link
Advertised by the server during the last successful anonymous check.

Create a public read-only tracking link for a shipment, or return the active one (safe to repeat). Anyone with the URL sees status, ETA, route and events, but no tags or company data. Disable or regenerate it in the web app. `shipment` (required) is the BerthTime id, the tracked reference, or a container number on the shipment. Returns: shipment_id, created (false = the existing link), share_link {url, active, expires_at, view_count, ...}. New links need a paid plan (the Free plan gets an error). Needs write access: a read + write API key, or read + write access granted at sign-in by an owner or admin of the company.

create_share_link input schema
{
  "type": "object",
  "required": [
    "shipment"
  ],
  "properties": {
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "shipment": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1,
      "description": "BerthTime shipment id, or the tracked reference (container, bill of lading or booking number), or a container number on the shipment."
    }
  },
  "additionalProperties": false
}
create_share_link annotations
{
  "title": "Create share link",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_support_request — Contact BerthTime support
Advertised by the server during the last successful anonymous check.

Open a support request with the BerthTime team on behalf of the user. Only when the user asks to contact support or report a problem; to see existing requests use list_support_requests. Required: subject (3-200 characters), message (plain text). Optional: topic (support, sales, billing, partnership, other; default support), priority (normal or high, high only when the user says it is urgent). Returns: id, number (BT-1234), status, requester_email. The team answers by email and in the web app. Each call opens a new request, so do not repeat it. Needs write access: a read + write API key, or read + write access granted at sign-in by an owner or admin of the company.

create_support_request input schema
{
  "type": "object",
  "required": [
    "subject",
    "message"
  ],
  "properties": {
    "topic": {
      "enum": [
        "sales",
        "support",
        "billing",
        "partnership",
        "other"
      ],
      "type": "string",
      "default": "support",
      "description": "What the request is about (default support)."
    },
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "message": {
      "type": "string",
      "maxLength": 20000,
      "minLength": 1,
      "description": "What the user needs help with, in plain text."
    },
    "subject": {
      "type": "string",
      "maxLength": 200,
      "minLength": 3,
      "description": "Short summary of the request, e.g. 'Wrong ETA on MSCU1234566'."
    },
    "priority": {
      "enum": [
        "normal",
        "high"
      ],
      "type": "string",
      "default": "normal",
      "description": "high only when the user says it is urgent (default normal)."
    }
  },
  "additionalProperties": false
}
create_support_request annotations
{
  "title": "Contact BerthTime support",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
archive_shipment — Archive shipment
Advertised by the server during the last successful anonymous check.
Advertised destructive

Stop tracking a shipment. Its history is kept and track_shipment with the same reference re-activates it. Only when the user asks to stop or remove a shipment. `shipment` (required) is the BerthTime id, the tracked reference, or a container number on the shipment. Returns: shipment_id, status (archived). Archiving an archived shipment changes nothing. Needs write access: a read + write API key, or read + write access granted at sign-in by an owner or admin of the company.

archive_shipment input schema
{
  "type": "object",
  "required": [
    "shipment"
  ],
  "properties": {
    "company": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Which company to act for: its id, @handle or exact name (see list_companies). Omit for the connection's default company."
    },
    "shipment": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1,
      "description": "BerthTime shipment id, or the tracked reference (container, bill of lading or booking number), or a container number on the shipment."
    }
  },
  "additionalProperties": false
}
archive_shipment annotations
{
  "title": "Archive shipment",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1676 ms
95th percentile latency
1676 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1676 ms · metadata changed · 18 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http berthtime-mcp https://berthtime.com/api/v1/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add berthtime-mcp --url https://berthtime.com/api/v1/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable berthtime-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "berthtime-mcp": {
      "url": "https://berthtime.com/api/v1/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "berthtime-mcp": {
      "type": "streamableHttp",
      "url": "https://berthtime.com/api/v1/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start berthtime-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "berthtime-mcp": {
      "type": "http",
      "url": "https://berthtime.com/api/v1/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http berthtime-mcp https://berthtime.com/api/v1/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://berthtime.com/api/v1/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "berthtime-mcp": {
      "serverUrl": "https://berthtime.com/api/v1/mcp"
    }
  }
}

Let your agent find its tools

Find servers like BerthTime MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run BerthTime MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing