Getting Data Out
Connect Trackberry to your AI assistant
Ask Claude, ChatGPT or Cursor about your shipments, free time, alerts and documents. Read-only unless you allow changes.
17 min readLast updated
Goal
Ask your AI assistant questions about your own shipments and get answers from live Trackberry data: “which containers will cost us demurrage this week?”, “has the ETA on the Rotterdam shipment moved?”, “which shipments are missing a certificate of origin?”.
Trackberry runs a Model Context Protocol (MCP) server for this. MCP is the standard way an assistant such as Claude, ChatGPT or Cursor calls tools in another product. The assistant decides which Trackberry tool to call, reads the answer, and explains it in plain language.
The connection is read-only unless you decide otherwise. The assistant can look at what you can already see in Trackberry. If you allow it when you connect, it can also pre-allocate boxes to your customers, add notes, label and archive shipments and tidy up checks and alerts, and nothing else. See What it can change.
What you need
- A Trackberry account with access to the organization you want to ask about. Every Trackberry plan includes the MCP server.
- An assistant that supports remote MCP servers: Claude (web, desktop or Claude Code), ChatGPT or Cursor. Custom connectors depend on the assistant’s own plan; the steps below say where.
- The server address, which is the same for everyone:
https://trackberry.com/mcp
There are two ways to sign in. Claude, ChatGPT, Claude Code and Cursor send you
to Trackberry to approve the connection, and you choose the organization there.
Nothing needs copying: the assistant registers itself with Trackberry the first
time it connects. If you would rather not sign in through a browser, or you run
the assistant on a server without one, use an API token instead, the same tb_
token described in The Trackberry API.
Connect Claude or Claude Desktop
Trackberry is listed in Claude’s connector directory. The quickest way in is Trackberry in the Claude directory: add it from there, then approve on the Trackberry page as in steps 3 and 4 below. To add it by hand as a custom connector instead:
- Open Customize → Connectors and click Add custom connector. The web
app and the desktop app work the same way. On the Free plan you can add one
custom connector.
- On a Team or Enterprise plan only an Owner can add it, under Organization settings → Connectors (Add → Custom). Members then find Trackberry under Customize → Connectors and click Connect.
- Enter the server address,
https://trackberry.com/mcp. Leave the OAuth client ID and secret empty. If Claude asks how it should identify itself, choose Register automatically. - Your browser opens a Trackberry page headed with the address you will be
sent back to: claude.ai wants to read data from one of your
organizations. The desktop app shows
claude.aitoo. Sign in if you are not already. If the address is notclaude.ai, deny the request. - Choose the organization this connection may read and click Approve. If you belong to several, none is picked for you. The page also asks whether the assistant may make changes. Allow this app to make changes is ticked; untick it to keep the connection read-only.
- In a conversation, open the + menu, then Connectors, and switch Trackberry on.
Connect ChatGPT
Trackberry is also listed in ChatGPT’s plugin directory. The quickest way in is Trackberry in the ChatGPT directory: add it from there, then approve on the Trackberry page as in steps 3 and 4 above. To add it by hand in developer mode instead:
- In ChatGPT on the web, turn on Developer mode under Settings → Security and login. On a Business, Enterprise or Edu workspace an admin may need to allow it first. Which plans offer developer mode is up to OpenAI, so check yours if the switch is missing.
- Open Plugins, click +, give the connection a name and enter
https://trackberry.com/mcp. If it asks how to authenticate, choose OAuth. - Approve on the Trackberry page as in steps 3 and 4 above. The address shown
is
chatgpt.com; deny if it is anything else. - In a conversation, choose Developer mode from the + menu and pick Trackberry.
The approval stays in place while you use it. The assistant renews its access in the background; if it goes unused for 30 days, connect again.
Connect Claude Code
Add the server, then sign in from inside Claude Code:
claude mcp add --transport http trackberry https://trackberry.com/mcp
Start Claude Code, type /mcp, choose trackberry and select
Authenticate. Your browser opens the same Trackberry approval page as above,
and returns you to Claude Code on your own machine (the address shown is
localhost or 127.0.0.1). If the browser cannot reach Claude Code after you
approve, paste the full address from the address bar back into Claude Code.
To use a token instead, for example on a server with no browser, create one
under Organization settings → API & webhooks (/your-slug/settings/api) and pass it as a
header:
claude mcp add --transport http trackberry https://trackberry.com/mcp \
--header "Authorization: Bearer tb_your_token"
Run claude mcp list to check that it is connected.
Connect Cursor
With Cursor installed, click Add to Cursor. Cursor asks you to confirm, then adds the server for you.
To add it by hand, put this in ~/.cursor/mcp.json, or in .cursor/mcp.json
inside a project:
{
"mcpServers": {
"trackberry": {
"url": "https://trackberry.com/mcp"
}
}
}
Cursor opens the Trackberry approval page and returns to localhost on your
computer. To use a token instead, create one under Organization settings → API & webhooks,
put it in an environment variable and add it as a header, so the token itself
stays out of the file:
{
"mcpServers": {
"trackberry": {
"url": "https://trackberry.com/mcp",
"headers": { "Authorization": "Bearer ${env:TRACKBERRY_TOKEN}" }
}
}
}
Claude Desktop with a token
Claude Desktop is best connected through Customize → Connectors, as above.
If you must use a token instead, the community mcp-remote helper can bridge a
local configuration entry to the server. Anthropic does not support this set-up,
and it needs Node.js. Open Settings → Developer → Edit Config and add:
{
"mcpServers": {
"trackberry": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://trackberry.com/mcp", "--header", "Authorization: Bearer ${TRACKBERRY_TOKEN}"],
"env": { "TRACKBERRY_TOKEN": "tb_your_token" }
}
}
}
Quit Claude Desktop completely and start it again after saving the file.
What to ask
The assistant works best with a specific question about your own shipments. Some that work well:
- Free time. “Which containers are at risk of demurrage this week, and how many days does each one have left?” “Which shipments have no free-time terms set?”
- ETAs. “Which shipments arriving next week have had their ETA pushed back, and by how much?” “What happened to shipment shp_123 since it left Callao?”
- Missing paperwork. “Which shipments in transit have no commercial invoice attached?” “What is the consignee on the bill of lading of shp_123?”
- What you can still sell. “How many size 14 avocados for Rotterdam are not pre-allocated yet, with a QC score of at least 6?” “Which mango sizes are still unsold on the water?”
What needs attention. “Anything wrong with my shipments today?” “Are there failed checks on the grapes coming into Rotterdam?”
Pre-allocations and notes, if you allowed changes. “Who are the pallets on MSCU1234567 allocated to?” “Set 40 boxes of the size 14 line on pallet 12 aside for Acme at 12.50 EUR a box.” “Add a note to that shipment: the buyer wants delivery before Friday.”
You can also ask it to combine answers, for example to draft a short status email for a customer from the timeline of one shipment. Check figures that matter before you act on them: the assistant reads the data correctly but can still summarize it badly.
The tools
The assistant sees thirty-seven tools and picks between them. Twenty-one only read.
Sixteen change data, and work only on a connection you allowed to make changes. All but
query_stock map to a part of the API and return the
same fields, except that search results are short by default, with each
shipment’s latest event, so an overview of many shipments stays quick.
| Tool | What it answers |
|---|---|
search_shipments |
Finds shipments by text, status, arrival window, archive state, supplier, forwarder or customer, newest first, with where each one stands |
get_shipment |
One shipment in full, with its free-time summary |
get_shipment_details |
A shipment’s inspection reports with per-pallet scores and defects, the emails filed on it (summaries, never the bodies) and the claim notices sent about it (without their text) |
get_claim_notice |
One claim notice with its full text, as it was sent to the carrier or forwarder |
get_tracking_timeline |
Route legs, tracking events and every ETA revision for one shipment |
list_free_time_at_risk |
Containers close to or past their free time, most urgent first |
query_stock |
Boxes not yet pre-allocated on live shipments, by produce and calibre, with their QC score and the containers carrying them. It counts the same stock as the Trading View, and a QC minimum applies pallet by pallet |
list_alerts |
Open alerts and failed or warning checks, for everything or for one shipment |
get_warehouse |
The warehouse where containers are delivered: the weekdays it opens, its closures and which of the next days can receive a container, and why not. Opening hours are not recorded |
list_companies |
Your suppliers, forwarders and customers, found by name or any other spelling of it, with their ids and how many live shipments each is on |
get_company |
One supplier, forwarder or customer by id, with its other spellings, country, ERP code and live shipment counts |
list_documents |
The documents attached to one shipment |
get_document_data |
The fields Trackberry extracted from one document |
get_document_file |
The original file of one document for the assistant to read: a PDF up to 5 MB, a picture up to 3.75 MB, or text up to 200 KB |
list_products |
The product catalogue with each supplier’s reference and description; finds your SKU from the code on a supplier’s document; narrow to one supplier by its id from list_companies |
list_purchase_orders |
Purchase orders with their lines, open ones by default: what is still to come from a supplier and whether an order has shipped; narrow to one supplier by its id from list_companies |
list_expected_containers |
Containers suppliers have agreed to send, with the documents received and the shipment each was matched to; narrow to one supplier by its id from list_companies |
list_organizations |
The organization this connection is scoped to |
list_labels |
The organization’s labels, with their ids, names and colors; q finds one by the words you would use |
list_carrier_free_times |
The organization’s negotiated free-time terms with each carrier |
list_preallocations |
Who holds what on one shipment: every pre-allocation with its customer, boxes and tentative price, and every packing line with the boxes still free |
create_preallocation |
Changes data. Sets boxes of one packing line aside for a customer, with an optional price |
update_preallocation |
Changes data. Changes the customer, boxes or price of one pre-allocation |
delete_preallocation |
Changes data. Removes one pre-allocation and frees its boxes |
add_shipment_note |
Changes data. Adds a paragraph to the end of a shipment’s notes |
add_label |
Changes data. Puts one of the organization’s labels on a shipment, by the words you use (“urgent” finds “🔥 Urgent”) |
remove_label |
Changes data. Takes a label off a shipment |
run_checks |
Changes data. Runs a shipment’s quality checks again |
refresh_tracking |
Changes data. Asks for fresh tracking on a shipment, at most once every 5 minutes per shipment |
acknowledge_check |
Changes data. Accepts a failing check with the reason you give. Admins and owners only |
unacknowledge_check |
Changes data. Withdraws the acceptance of a check, so it holds the shipment back again. Admins and owners only |
snooze_alert |
Changes data. Hides an alert for 1, 3 or 7 days |
dismiss_alert |
Changes data. Hides an alert for as long as the problem lasts |
restore_alert |
Changes data. Brings a snoozed or dismissed alert back |
archive_shipment |
Changes data. Archives a shipment: it leaves the active lists but stays readable |
unarchive_shipment |
Changes data. Brings an archived shipment back |
mark_in_warehouse |
Changes data. Marks a shipment as received at the warehouse. Admins and owners only, and it is not undone from here |
Shipments are named shp_ plus a number, documents doc_, packing lines pln_
and pre-allocations pre_, the same ids as in the API (products are prd_, purchase orders por_ and expected containers exs_). The assistant finds them itself; you can also quote one
in a question. Answers about a shipment link to it in Trackberry, and you need to be signed in to open the link. If you ask for a tracking link to send to a customer, the assistant gives you the shipment’s public tracking page instead, which needs no login. That link is only available when your organization has public tracking pages on and the shipment is not archived or still awaiting validation; see The Trackberry API.
When you ask where a shipment is or how its journey is going, assistants that support MCP Apps also show a map inside the conversation. It is the same map as the shipment’s page in Trackberry. It shows the sea route, marked as traveled or still to sail, and the ports of loading, transshipment and discharge. It also shows the vessel pointing the way it is heading, and the track it has recorded. Above it are the container or air waybill number, linked to the shipment, its status, the vessel and carrier, and the ETA with how far it has moved. The map appears once per answer, with the tracking timeline, even when the assistant also looks the shipment up.
Which assistants show the map. Claude on the web, in the desktop app and in the iOS app, and ChatGPT, draw it. Claude Code and other assistants without MCP Apps support give the same answer as text. The map shows only positions the carrier has reported, so a shipment that has not moved yet reads “No position yet”.
The map’s background tiles are loaded from OpenStreetMap. Your assistant fetches the tiles for the area on screen from the OpenStreetMap Foundation’s servers. This shows the Foundation roughly which part of the world you are looking at, but no shipment details are sent to it.
What it can change
Only what you approve. When you connect Claude, ChatGPT or another assistant that signs in through the browser, the Trackberry approval page asks Do you also want it to make changes? The box is ticked. Untick it, and the connection is read-only, as every connection made before November 2026 is.
If you leave Allow this app to make changes ticked, the assistant can:
- pre-allocate boxes of a packing line to a customer, with a tentative price;
- change or remove a pre-allocation;
- add a paragraph to the end of a shipment’s notes;
- put a label on a shipment or take one off;
- run a shipment’s checks again, or ask for fresh tracking (a shipment’s tracking can be refreshed once every 5 minutes);
- accept a failing check, with a reason you give, or withdraw that (admins and owners only);
- snooze, dismiss or bring back an alert;
- archive or unarchive a shipment;
- mark a shipment as received at the warehouse (admins and owners only).
That is the whole list. It cannot edit or delete the notes already there, create labels, edit a shipment’s data, approve or delete a shipment, upload, replace or delete a document, send an email, invite anyone or touch your settings.
What to know before you approve:
- It acts as you. Each change is recorded in the organization’s Activity Log under your name, marked as made through the assistant and naming the app, so a colleague can tell it from one you made by hand.
- Your assistant asks first, if you let it. Trackberry marks these tools as tools that change data, and changing or removing a pre-allocation, and marking a shipment as received, as destructive. Claude and ChatGPT use that to ask for your confirmation before they call one. Keep that confirmation on, and read what it is about to do: the customer, the boxes, the price, the shipment.
- Read-only members stay read-only. If your role is Viewer, the page does not ask: the assistant can read, and cannot make changes for you. If an admin later makes you a member, the same connection can, without connecting again.
- The same limits as the app. A line cannot be allocated beyond its box count, notes are limited to 20,000 characters, only admins and owners can accept a check or mark a shipment as received, and a shipment’s tracking is refreshed at most once every 5 minutes.
- To change your mind, connect the app again. Approve with the box unticked and the app can no longer make changes anywhere: its earlier connections that could are disconnected, on every device, and need connecting again. Approve with it ticked and nothing else changes, so the same assistant on your phone and your computer keeps working on both. A read-only connection never gains the right to make changes on its own.
With an API token instead of the browser sign-in, the token decides: one created as Read and write lets the assistant make these changes, a Read only token does not.
If the assistant says the connection is read-only when you ask for a change, disconnect Trackberry in the assistant, connect it again and leave the box ticked.
Security
- Changes need your approval. A connection changes nothing unless you approved it with Allow this app to make changes ticked, or gave it a read-and-write token. Even then it can only make the changes listed above: it cannot edit a shipment’s data, send an email or delete a document. Connected apps shows which of your connections can make changes.
- Documents and notes can carry instructions. An assistant reads text that other people wrote: a supplier’s document, a colleague’s note. Such text can try to tell the assistant what to do. If you allow changes, keep your assistant’s confirmation prompts on, so a change never happens without you seeing it.
- One organization per connection. A token or an approval belongs to you
and to one organization, and every answer comes from that organization only.
To ask about another one, connect again and choose it. The
list_organizationstool tells the assistant which organization it is reading. - Only what you can see. A connection reads what you can read in Trackberry. If you leave the organization, or your membership is removed, it stops working immediately.
- Revoke at any time. Click Revoke next to a token under Organization settings → API & webhooks (API for members), or click Disconnect next to the app under Connected apps on the same page, and the connection stops on its next request. Admins see and can disconnect every member’s apps. Approvals and disconnections are recorded in the organization’s Activity Log.
- Check where you are sent back to. Any app can call itself “Claude”. The approval page leads with the address it returns you to, which is the part that cannot be faked, and warns you in red when it does not recognize that address. Deny if it is not the assistant you started from.
- Treat a token like a password. Anyone who holds it can read your organization’s shipments through any assistant, and make the changes listed above if it is a read-and-write token. Keep it out of shared config files and repositories.
- Your assistant sees the answers. What a tool returns is sent to the assistant’s provider as part of your conversation, under that provider’s own terms. Connect only the organizations whose data you are happy to discuss with that assistant.
Limits and errors
Each token or connection can make 600 requests every 5 minutes, and the server shares the limits described in The Trackberry API. The assistant is told when a tool call fails and usually tries again or asks you for what is missing, for example a shipment id that does not exist in your organization.
Tool results are always in the latest shape. Unlike the API, they are not pinned to a version, and new fields can appear at any time. The assistant reads them by meaning, so that is rarely visible, but do not build a script on top of the MCP server. Use the API for that.
Troubleshooting
| You see | What to do |
|---|---|
| The assistant says it cannot connect | Check the address is exactly https://trackberry.com/mcp, with no trailing path |
| 401 or “invalid token” | The token is wrong, expired or revoked, or you left the organization. Create a new one, or connect the app again |
| The assistant asks you to sign in again | The connection was disconnected, went unused for 30 days, or your membership changed. Approve it again |
| Trackberry says “This app can’t connect” | The app sent a request Trackberry does not accept, for example a return address that is not https. Start again from the assistant; if it keeps happening, use a token |
| It answers about the wrong organization | The connection is scoped to one. Disconnect and connect again, choosing the other |
| “This connection is read-only” when you ask for a change | The connection was approved without changes. Disconnect the app, connect it again and leave Allow this app to make changes ticked. With a token, create a Read and write one |
| “Read-only members cannot…” | Your role in the organization is Viewer. Ask an admin to change it |
| A shipment “does not exist” | It belongs to another organization, is still waiting for approval, or the id has a typo |
| 429 “rate limit exceeded” | Wait the number of seconds it gives, then ask again |
If you are stuck, write to [email protected] with the assistant you use and the error it shows.