Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
"name": "Terminal49"
},
"metadata": {
"description": "Terminal49 container-tracking tools and agent skills",
"version": "0.1.0"
"description": "Terminal49 container-tracking and trade-intelligence tools and agent skills",
"version": "0.2.0"
},
"plugins": [
{
"name": "terminal49",
"source": "./plugins/terminal49",
"description": "Use Terminal49 MCP tools to track and investigate container shipments",
"version": "0.1.0"
"description": "Use Terminal49 MCP tools to track and investigate container shipments, and Terminal49 trade intelligence to research US ocean imports",
"version": "0.2.0"
}
]
}
8 changes: 4 additions & 4 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
"name": "Terminal49"
},
"metadata": {
"description": "Terminal49 container-tracking tools and agent skills",
"version": "0.1.0"
"description": "Terminal49 container-tracking and trade-intelligence tools and agent skills",
"version": "0.2.0"
},
"plugins": [
{
"name": "terminal49",
"source": "./plugins/terminal49",
"description": "Use Terminal49 MCP tools to track and investigate container shipments",
"version": "0.1.0"
"description": "Use Terminal49 MCP tools to track and investigate container shipments, and Terminal49 trade intelligence to research US ocean imports",
"version": "0.2.0"
}
]
}
12 changes: 10 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@ This is a public, cross-platform plugin marketplace for Terminal49.
resource identifier.
- Do not ask users to paste credentials into chat. Let the client initiate its
OAuth connection flow.
- The `trade-intelligence` skill reads a Terminal49 API key that the user saves
in their own terminal (`T49_API_KEY` or `~/.t49_api_key`). Never put a real
key in examples, logs, or chat.

## Shared source of truth

- `plugins/terminal49/skills/container-tracking/SKILL.md` is the shared behavioral
guidance for all clients.
- The skills under `plugins/terminal49/skills/` are the shared behavioral
guidance for all clients:
- `container-tracking/SKILL.md` covers container and shipment questions with
the Terminal49 MCP tools.
- `trade-intelligence/SKILL.md` covers US import market research through the
Terminal49 REST API, using its bundled `scripts/ti.py` client and
`references/api.md`.
- `plugins/terminal49/.mcp.json` and `plugins/terminal49/mcp.json` are the MCP
adapters for Claude/Codex and Cursor respectively. Keep their server entries
identical.
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Thanks for improving the Terminal49 agent plugins.

## Principles

1. Keep the shared skill client-neutral.
1. Keep the shared skills client-neutral.
2. Prefer tool-selection guidance over duplicating the Terminal49 API docs.
3. Treat `track_container` as a write: search first and create a tracking
request only when the user intends to start tracking.
Expand All @@ -20,4 +20,4 @@ Thanks for improving the Terminal49 agent plugins.
4. Test installation in any client affected by the change.

Platform-specific behavior belongs in its adapter. Guidance that applies to all
clients belongs in `plugins/terminal49/skills/container-tracking/SKILL.md`.
clients belongs in the relevant skill under `plugins/terminal49/skills/`.
31 changes: 23 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# Terminal49 agent plugins

Install Terminal49 container-tracking tools and workflow guidance in Grok Bot,
Cursor, Claude Code, Codex, and GitHub Copilot CLI.
Install Terminal49 container-tracking tools, trade-intelligence research, and
workflow guidance in Grok Bot, Cursor, Claude Code, Codex, and GitHub Copilot
CLI.

This marketplace currently publishes one plugin:

- **Terminal49** — connects to the hosted Terminal49 MCP server and teaches
agents how to search, track, and investigate container shipments.
agents how to search, track, and investigate container shipments, and how to
research US ocean imports with Terminal49 trade intelligence.

## What the plugin provides

Expand All @@ -16,9 +18,14 @@ This marketplace currently publishes one plugin:
demurrage-risk questions
- Guardrails around tracking-request creation, credentials, dates, and missing
data
- A `trade-intelligence` skill for competitor research, sourcing, and market
trends from US ocean import bill-of-lading records since 2022 (for accounts
with trade intelligence enabled)

The plugin does not contain API keys or customer data. Authentication happens
through the MCP client's OAuth flow.
The plugin does not contain API keys or customer data. Container tracking
authenticates through the MCP client's OAuth flow. Trade intelligence currently
uses a Terminal49 API key that you save in your own terminal; see the
[plugin README](plugins/terminal49/README.md#trade-intelligence-api-key).

## Install

Expand Down Expand Up @@ -77,9 +84,12 @@ After connecting your Terminal49 account, ask your agent:
- “Is this container ready for pickup, and are there any holds?”
- “Explain what changed in this container's journey.”
- “Show containers updated since yesterday and group them by status.”
- “Who are the largest US importers of office chairs, and where do they source
them?”

The example identifier is illustrative. Results depend on the shipments visible
to the authenticated Terminal49 account.
to the authenticated Terminal49 account. Trade-intelligence questions need an
account with trade intelligence enabled.

## Repository layout

Expand All @@ -96,10 +106,15 @@ to the authenticated Terminal49 account.
├── mcp.json # Cursor MCP adapter
├── README.md
├── assets/logo.svg # Referenced by the Cursor manifest
└── skills/container-tracking/SKILL.md
└── skills/
├── container-tracking/SKILL.md
└── trade-intelligence/
├── SKILL.md
├── references/api.md # Endpoint parameters and fields
└── scripts/ti.py # Python 3 API client, no dependencies
```

The skill is shared. Each platform-specific manifest and MCP file is a thin
The skills are shared. Each platform-specific manifest and MCP file is a thin
adapter around that shared content, with validation keeping the endpoint in
sync.

Expand Down
7 changes: 4 additions & 3 deletions plugins/terminal49/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "terminal49",
"displayName": "Terminal49",
"version": "0.1.0",
"description": "Track and investigate container shipments with Terminal49 MCP tools and workflow guidance.",
"version": "0.2.0",
"description": "Track and investigate container shipments with Terminal49 MCP tools, and research US ocean import markets with Terminal49 trade intelligence.",
"author": {
"name": "Terminal49"
},
Expand All @@ -15,7 +15,8 @@
"logistics",
"mcp",
"ocean-freight",
"supply-chain"
"supply-chain",
"trade-intelligence"
],
"skills": "./skills/",
"mcpServers": "./.mcp.json"
Expand Down
14 changes: 8 additions & 6 deletions plugins/terminal49/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "terminal49",
"version": "0.1.0",
"description": "Track and investigate container shipments with Terminal49 MCP tools and workflow guidance.",
"version": "0.2.0",
"description": "Track and investigate container shipments with Terminal49 MCP tools, and research US ocean import markets with Terminal49 trade intelligence.",
"author": {
"name": "Terminal49"
},
Expand All @@ -13,14 +13,15 @@
"logistics",
"mcp",
"ocean-freight",
"supply-chain"
"supply-chain",
"trade-intelligence"
],
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Terminal49",
"shortDescription": "Track and investigate container shipments",
"longDescription": "Connect to Terminal49 and use guided workflows for container status, pickup readiness, holds, ETAs, routes, delays, and demurrage risk.",
"shortDescription": "Track container shipments and research US imports",
"longDescription": "Connect to Terminal49 and use guided workflows for container status, pickup readiness, holds, ETAs, routes, delays, and demurrage risk, plus trade-intelligence research on US ocean imports: competitors, sourcing, and market trends.",
"developerName": "Terminal49",
"category": "Productivity",
"capabilities": [
Expand All @@ -29,7 +30,8 @@
],
"websiteURL": "https://terminal49.com",
"defaultPrompt": [
"Track a container or investigate the latest status of my shipments"
"Track a container or investigate the latest status of my shipments",
"Show what a competitor imports, from where, and how its volume is trending"
]
}
}
7 changes: 4 additions & 3 deletions plugins/terminal49/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "terminal49",
"displayName": "Terminal49",
"version": "0.1.0",
"description": "Track and investigate container shipments with Terminal49 MCP tools and workflow guidance.",
"version": "0.2.0",
"description": "Track and investigate container shipments with Terminal49 MCP tools, and research US ocean import markets with Terminal49 trade intelligence.",
"author": {
"name": "Terminal49"
},
Expand All @@ -15,7 +15,8 @@
"logistics",
"mcp",
"ocean-freight",
"supply-chain"
"supply-chain",
"trade-intelligence"
],
"category": "Productivity",
"skills": "./skills/",
Expand Down
37 changes: 32 additions & 5 deletions plugins/terminal49/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# Terminal49 plugin

This plugin connects an agent to Terminal49's hosted MCP server and supplies a
shared skill for reliable container-tracking workflows. It is published from
This plugin connects an agent to Terminal49's hosted MCP server and supplies
shared skills for reliable container-tracking workflows and trade-intelligence
research. It is published from
the [Terminal49/agent-plugins](https://github.com/Terminal49/agent-plugins)
marketplace — see that README for installation instructions.

Expand All @@ -11,7 +12,22 @@ The MCP client should open an OAuth authorization flow when Terminal49 tools are
first used. Authenticate in the browser and return to the client. Do not paste
API keys, access tokens, or one-time codes into chat.

## Included skill
### Trade intelligence API key

The `trade-intelligence` skill calls the Terminal49 REST API with your
Terminal49 API key and needs Python 3. Create a key at
https://app.terminal49.com/developers/api-keys, then save it in your own
terminal (bash or zsh). Never paste it into chat:

```sh
printf 'Terminal49 API key: '; read -rs K; echo; (umask 077; touch ~/.t49_api_key; chmod 600 ~/.t49_api_key; printf %s "$K" > ~/.t49_api_key); unset K
```

Alternatively, set `T49_API_KEY` in the environment your agent runs in.
Trade intelligence is enabled per account. If requests return HTTP 403, contact
[email protected].

## Included skills

`container-tracking` is written for logistics operators and covers:

Expand All @@ -27,11 +43,22 @@ API keys, access tokens, or one-time codes into chat.
- querying fleets with filters and pagination
- presenting dates, holds, missing information, and paid-feature boundaries

`trade-intelligence` answers market questions from US ocean import
bill-of-lading records since 2022, refreshed daily:

- competitor research: what a named company imports, from which countries,
through which US ports and carriers, and how its volume is trending
- sourcing: who imports a product and where it comes from
- market trends by port, coast, carrier, origin, or commodity
- caveats that change the answer: forwarders and brokers on the records, one
company under several names, importers who withhold their names, partial
months, and estimated values

The Terminal49 API and MCP implementation live in
[Terminal49/API](https://github.com/Terminal49/API).

## Plugin evals

Behavioral eval cases use checked-in MCP mocks and never require the live
Terminal49 service. See [`evals/README.md`](evals/README.md) for validation,
Behavioral eval cases cover `container-tracking`, use checked-in MCP mocks,
and never require the live Terminal49 service. See [`evals/README.md`](evals/README.md) for validation,
mocked eval, baseline, and marketplace-submission guidance.
Loading
Loading