Carrier
Command-line interface

The carrier CLI

Your entire eSIM fleet from the terminal. 40+ deterministic commands across six domains, a natural-language fallback, MCP stdio mode, and a white-label storefront scaffold — all in one binary.

Install

The CLI ships inside the @carrierllc/mcp npm package and installs two binaries: carrier (the CLI) and carrier-mcp (the stdio MCP server). Node 22+ required for the npm paths.

Homebrew (macOS / Linux)

brew tap Lifecycle-Innovations-Limited/carrier
brew trust --tap Lifecycle-Innovations-Limited/carrier   # Homebrew 5+ requires trusting third-party taps
brew install carrier
carrier --version

npm (global)

npm i -g @carrierllc/mcp
carrier --version

npx (no install)

npx -y -p @carrierllc/mcp carrier-mcp

Upgrading: brew update && brew upgrade carrier or npm i -g @carrierllc/mcp@latest.

Authentication

Two modes. Interactive use needs no credentials at all; headless use takes an API key from the environment.

  1. 01OAuth on first use (interactive). carrier plugin install registers the zero-credential MCP URL https://mcp.carrier.llc/mcp in Claude Code. The first tool call opens Clerk sign-in / sign-up in your browser (Google, GitHub, or email). No token to paste. Stuck? claude mcp auth carrier.
  2. 02API key (headless / CI). The fleet commands and carrier ask call the remote MCP directly and read a bearer credential from the environment, in this order: CARRIER_API_KEY, CARRIER_ORG_API_KEY, ESIMVAULT_API_TOKEN, CARRIER_OCS_API_TOKEN.

Headless setup

# Console → Settings → API Keys (keys start with ak_)
export CARRIER_API_KEY=ak_...
carrier ask "show fleet health"
carrier subscribers list --account-id 123 --json

Core commands

carrier

Interactive home: status, plugin + MCP install, optional storefront scaffold.

carrier init [--dir <path>] [--yes] [--full]

Guided setup. --yes uses Carrier defaults with no prompts (plugin + scaffold + build); --full runs the classic plugin + storefront wizard.

carrier status

MCP / plugin / auth status with concrete next steps.

carrier plugin install

Install the Carrier Claude Code plugin and register the zero-cred MCP (OAuth on first use).

carrier plugin status

Plugin + MCP registration state and auth next steps.

carrier open <signup|signin|console|onboarding|mcp>

Open Carrier account and product URLs in your browser.

carrier examples

Natural-language fleet prompts for Claude, plus the full domain command map.

carrier ask "<intent>"

Natural-language fallback for anything the discrete commands miss. Needs CARRIER_API_KEY or an OCS token.

carrier --version / --help

Version and help. Every subcommand also accepts --help.

Fleet commands

137 fleet commands, taken from the CLI registry. Download the Markdown or JSON list, or the full pack.

  • --json — raw tool response on stdout, ready for jq; diagnostics go to stderr.
  • --commit — write commands run as a dry run by default. Nothing changes until you re-run with --commit.
  • Usage windows (--start / --end) are clamped to 7 days — OCS rejects wider windows. Omit both for the last 7 days.

carrier subscribers

Look up, inspect and change subscribers.
carrier subscribers list --account-id <id> --iccid <iccid> --msisdn <msisdn> --imsi <imsi> --activation-code <code> --status <status> --limit <n> --offset <n>

List subscribers. With no filter, uses your default account (lowest-id account under your reseller).

MCP list_subscribers

carrier subscribers get --iccid <iccid> --msisdn <msisdn> --gz-counter

Full record for one subscriber by ICCID or MSISDN.

MCP get_subscriber

carrier subscribers location --iccid <iccid>

Last-known location from the most recent cell tower usage.

MCP get_subscriber_location

carrier subscribers usage --iccid <iccid> --start <date> --end <date>

Daily data, voice and SMS usage over a window of up to 7 days.

MCP subscriber_usage

carrier subscribers events --iccid <iccid> --start <date> --end <date>

Network attach/detach events over a window of up to 7 days.

MCP subscriber_network_events

carrier subscribers active-period --iccid <iccid>

First and last usage dates for one subscriber.

MCP subscriber_active_period

carrier subscribers esim-status --account-id <id> --reseller-id <id>

eSIM state counts per account: active, suspended, inventory.

MCP esim_status_per_account

carrier subscribers set-status --iccid <iccid> --status <status>
write · dry-run default

Change a subscriber's status.

MCP modify_subscriber_status

carrier subscribers set-balance --iccid <iccid> --amount <amount> --mode <mode>
write · dry-run default

Add to or replace a subscriber's balance.

MCP modify_subscriber_balance

carrier subscribers sim-status show --iccid <iccid>

SIM/eSIM status at the SIM provider level, distinct from OCS status.

MCP get_sim_provider_status

carrier subscribers sim-status set --iccid <iccid> --status <status>
write · dry-run default

Change the SIM/eSIM status at the SIM provider level. ENABLED and DISABLED map to OCS Affected and Free.

MCP change_sim_status

carrier subscribers phone-number set --iccid <iccid> --phone-number <e164> --phone-type <type>
write · dry-run default

Assign a phone number (MSISDN) to a subscriber.

MCP affect_subscriber_phone_number

carrier subscribers contact set --iccid <iccid> --first-name <name> --last-name <name> --company <name> --email <email> --phone-number <number>
write · dry-run default

Update contact details on a subscriber. Omitted fields stay unchanged.

MCP modify_subscriber_contact_info

carrier subscribers mobile-plan set --iccid <iccid> --plan-id <id>
write · dry-run default

Change the mobile pricing plan a subscriber is billed under.

MCP modify_subscriber_mobile_plan

carrier subscribers voip-plan set --iccid <iccid> --plan-id <id>
write · dry-run default

Change the VoIP pricing plan assigned to a subscriber.

MCP modify_subscriber_voip_plan

carrier subscribers traffic set --iccid <iccid> --data <bool> --moc <bool> --mtc <bool> --sms <bool>
write · dry-run default

Enable or disable data, calls and SMS per traffic type. Omit a flag to leave it unchanged.

MCP set_subscriber_traffic_restrictions

carrier subscribers bitrate show --iccid <iccid>

Current HLR-level bandwidth cap for a subscriber.

MCP hlr_get_bitrate

carrier subscribers bitrate set --iccid <iccid> --bitrate <bps> --bitrate-string <level>
write · dry-run default

Set an HLR-level bandwidth cap. Bits per second are mapped onto the OCS KB_ enum.

MCP hlr_set_bitrate

carrier subscribers greenzone reset --iccid <iccid>
write · dry-run default

Reset the Green Zone byte counter to zero. Irreversible.

MCP reset_subscriber_gz_counter

carrier subscribers cell-location --radio-type <type> --mcc <mcc> --mnc <mnc> --lac <lac> --cell-id <id> --signal-strength <dbm>

Resolve a raw cell tower tuple to coordinates (Bridge4IP GeoSense).

MCP get_subscriber_location_by_cell_id

carrier packages

Packages assigned to a subscriber.
carrier packages list --iccid <iccid>

Packages on one subscriber, with allowance and expiry.

MCP list_subscriber_packages

carrier packages assign --iccid <iccid> --template-id <id> --account-id <id> --request-key <key> --start-date <date> --end-date <date> --validity-period <days> --business-kind <kind> --business-id <id> --business-line <line> --business-verb <verb>
write · dry-run default

Assign a one-time package from a template.

MCP assign_package

carrier packages set-status --iccid <iccid> --package-id <id> --status <status>
write · dry-run default

Activate or deactivate one package without deleting it.

MCP modify_package_status

carrier packages set-expiry --iccid <iccid> --package-id <id> --expires <date> --validity-days <n>
write · dry-run default

Move a package's expiry date. Pass an absolute date or a day count.

MCP modify_package_expiry

carrier packages set-limits --iccid <iccid> --package-id <id> --limits <json>
write · dry-run default

Change data, voice or SMS ceilings on an assigned package.

MCP modify_package_limits

carrier packages assign-recurring --iccid <iccid> --template-id <id> --activate-at-first-use --start-time <iso>
write · dry-run default

Assign an auto-renewing package from a recurring-enabled template.

MCP assign_recurring_package

carrier packages recurring set --iccid <iccid> --package-id <id> --action <action>
write · dry-run default

Pause or restart the auto-renewal of a recurring package.

MCP stop_resume_recurring_package

carrier packages active-period set --iccid <iccid> --package-id <id> --start <date> --end <date> --comment <text>
write · dry-run default

Move the start and/or end of a package's active period.

MCP modify_subscriber_package_active_period

carrier packages clean --iccid <iccid>
write · dry-run default

Remove ALL packages from a subscriber. Irreversible.

MCP clean_all_packages

carrier packages delete --iccid <iccid> --package-id <id>
write · dry-run default

Permanently remove one package from a subscriber.

MCP delete_subscriber_package

carrier templates

The package template catalog.
carrier templates list

Browse package templates available for assignment.

MCP list_package_templates

carrier templates create --template <json>
write · dry-run default

Create a package template from a JSON configuration.

MCP create_package_template

carrier templates set-core --template-id <id> --changes <json>
write · dry-run default

Change name, limits, cost, validity or zone on a template.

MCP modify_template_core

carrier templates set-recurring --template-id <id> --changes <json>
write · dry-run default

Change auto-renewal settings on a template.

MCP modify_template_recurring

carrier templates set-throttling --template-id <id> --changes <json>
write · dry-run default

Change throttling thresholds. Applies to existing packages too.

MCP modify_template_throttling

carrier zones

Location zones and destination lists.
carrier zones list --reseller-id <id> --verbose <bool>

Location zones with countries and operators. Prefer this over `elements`.

MCP list_detailed_location_zones

carrier zones elements --zone-id <id>

Raw zone elements. Upstream OCS returns malformed rows for some zones.

MCP list_location_zones

carrier zones create --zone <json>
write · dry-run default

Create a location zone from a JSON configuration.

MCP create_location_zone

carrier zones network-profile set --zone-id <id> --network-profile-id <id>
write · dry-run default

Attach or change the network profile on an existing location zone.

MCP change_network_profile_of_location_zone

carrier zones destinations --reseller-id <id>

Destination list catalog for voice and SMS packages.

MCP list_destination_lists

carrier zones prefixes --destination-list-id <id>

Dialling prefixes inside one destination list.

MCP list_destination_prefixes

carrier steering

Network steering lists and operator preference.
carrier steering list --reseller-id <id>

Steering lists configured for this reseller.

MCP list_steering_lists

carrier steering assign --iccid <iccid> --list-id <id>
write · dry-run default

Assign a steering list to a subscriber. Follow with `push`.

MCP modify_subscriber_steering_list

carrier steering push --iccid <iccid>
write · dry-run default

Push the assigned operator preference list to the device now.

MCP push_steering_to_subscriber

carrier network-default

Which networks a SIM gets per country. Default: the cheapest available.
carrier network-default show

Show the org network default (cheapest_available, all or custom) and what applies today. New assignments only.

MCP get_network_default

carrier network-default set --mode <mode> --list-id <id>
write · dry-run default

Store the org network default. Changes no SIM and writes nothing to OCS; applies to new assignments.

MCP set_network_default

carrier network-default plan --countries <codes> --sim-mode <mode> --sim-list-id <id> --package-mode <mode> --package-list-id <id> --reseller-id <id>

Show which networks a SIM would get in the given countries. Read only. Falls back to all networks with a loud warning when the tariff is missing.

MCP plan_network_default

carrier accounts

Reseller accounts: balances and subscriber moves.
carrier accounts list --reseller-id <id>

Accounts under a reseller with name, balance and type.

MCP list_reseller_accounts

carrier accounts balance set --account-id <id> --amount <amount> --mode <mode>
write · dry-run default

Add to or replace an account's monetary balance.

MCP modify_account_balance

carrier accounts move-subscribers --src-account-id <id> --dest-account <id> --range-type <type> --range-start <value> --range-end <value>
write · dry-run default

Move a contiguous IMSI or ICCID range of subscribers to another account.

MCP move_subscriber_range_to_account

carrier reseller

The reseller the token belongs to.
carrier reseller show --reseller-id <id>

Full reseller record: balance, pricing plans, contact and traffic config.

MCP get_reseller_info

carrier tariff

Wholesale tariffs: mobile and VoIP rates.
carrier tariff show --reseller-id <id> --country <name|iso2> --traffic-type <type> --verbose <bool>

Per-country wholesale rates for data, voice and SMS.

MCP get_tariff

carrier tariff voip --reseller-id <id>

VoIP tariff catalog for a reseller.

MCP list_subscriber_voip_tariff

carrier tariff voip-rules --voip-plan-id <id>

Rate rules inside one VoIP plan.

MCP list_voip_tariff_rule

carrier sms

Mobile-terminated SMS to subscribers.
carrier sms send --iccid <iccid> --msisdn <msisdn> --message <text> --sender <sender>
write · dry-run default

Send an MT SMS to one subscriber.

MCP send_sms

carrier sponsors

Sponsor networks backing the eSIM profiles.
carrier sponsors list --reseller-id <id>

Sponsor carriers available to this reseller.

MCP list_sponsors

carrier network-profiles

Roaming configuration profiles for zones and provisioning.
carrier network-profiles list

Network profiles available to this reseller.

MCP list_network_profiles

carrier webhooks

Bridge4IP webhook and relay flag status.
carrier webhooks show --reseller-id <id>

Current relay flags (LU, Gy, VoIP, calls+SMS) and notification webhooks.

MCP carrier_webhook_config

carrier intelligence

Composite reports over the fleet.
carrier intelligence fleet-health --account-id <id>

eSIM counts, low-balance accounts and what needs attention.

MCP fleet_health

carrier intelligence diagnose --iccid <iccid>

Why one subscriber is offline, throttled or failing to attach.

MCP diagnose_subscriber

carrier intelligence anomalies --iccid <iccid>

Usage spikes and burn rates that exhaust the package early.

MCP detect_usage_anomalies

carrier intelligence churn --iccid <iccid>

Churn risk score with contributing factors.

MCP churn_risk

carrier intelligence optimize --iccid <iccid>

Better-fitting package for one subscriber, with the saving.

MCP optimize_package

carrier intelligence coverage --account-id <id> --limit <n>

Networks subscribers actually attach to, against your steering lists.

MCP audit_network_coverage

carrier intelligence high-cost --account-id <id> --limit <n> --threshold-pct <n>

Subscribers whose consumption erodes the margin.

MCP high_cost_subscribers

carrier intelligence marketing --account-id <id>

Where subscribers and revenue concentrate, and which markets grow.

MCP marketing_intelligence

carrier intelligence country-entry --iccid <iccid> --expected-country <iso2>

Country a subscriber is in now, optionally diffed against the last known one.

MCP detect_country_entry

carrier api-keys

Mint Carrier API keys (ak_…) for headless and CI use
carrier api-keys create --name <name> --description <text> --seconds-until-expiration <n>

Create an org API key. The secret is shown once and never stored by the CLI.

carrier onboard

Connect a new account to OCS without opening a browser
carrier onboard status

Show how far onboarding has got. Same state the console renders.

carrier onboard org --name <name> --website <url> --country <iso2> --operator-type <type>

Record who the operator is (step 1).

carrier onboard connect --token <token>

Connect your own eSIMVault token (step 2, BYO). Verified against OCS, then stored encrypted; the token is never echoed back.

carrier onboard managed

Let Carrier provision the OCS sub-account instead (step 2, the primary path). Idempotent, and clears any BYO token.

carrier onboard plan --template-id <id> --display-name <name>

Record the starting plan template (step 3).

carrier onboard plan-skip

Skip the plan step and come back to it later (step 3).

carrier onboard test-esim

Read back one eSIM from the connected fleet (step 4). Nothing is provisioned; a demo ICCID with a reason comes back if OCS has nothing to show.

carrier onboard complete

Mark onboarding done (step 5).

carrier affiliate

Carrier affiliate program: profile, referral link and commissions
carrier affiliate status

Read-only: returns the affiliate profile, referral code, link, counts, money owed and paid, and Connect payouts status for the authenticated operator.

MCP affiliate_status

carrier affiliate commissions --limit <n>

Read-only: returns the list of commission records for the authenticated operator.

MCP affiliate_commissions

carrier affiliate join

Join the Carrier affiliate program and generate a personal referral code and link.

MCP affiliate_join

carrier billing

Carrier plan credits, spend thresholds and rate-limit state
carrier billing events --limit <n>

View recent billing threshold events: notifications, invoice triggers, hard cap alerts, and overage pauses.

MCP billing_events

carrier billing configure --overages-enabled <bool> --billing-threshold-cents <n> --hard-cap-cents <n> --auto-pause-on-cap <bool> --notify-at-pct <list> --notification-email <email> --notification-phone <phone> --webhook-url <url>

Configure your billing preferences: enable/disable overages, set billing thresholds (bill shock prevention), configure notification percentages, and set hard spending caps.

MCP configure_billing

carrier billing credits

Read how much of this Carrier MCP plan is left: credits remaining, daily free credits, overage state, volume discount tier, and billing threshold state.

MCP credit_balance

carrier billing plans

View all available Carrier MCP pricing plans with credit allotments, features, overage rates, and volume discount tiers.

MCP pricing_plans

carrier billing projection --days-to-project <n>

Project your credit usage and costs for the remainder of the billing period based on current consumption rate.

MCP usage_projection

carrier billing rate-limit --endpoint <endpoint>

Inspect Bridge4IP OCS rate-limit governor state — bucket fill levels, per-endpoint limits, and 80% alert thresholds.

MCP rate_limit_status

carrier wallet

The Carrier prepaid wallet: balance and top-ups
carrier wallet balance

Read the caller organisation's Carrier prepaid wallet: current balance and auto-top-up settings.

MCP wallet_balance

carrier wallet topup --pack <pack>

Create a Stripe Checkout link so a human can top up the Carrier prepaid wallet by card.

MCP wallet_topup_checkout

carrier wallet auto-topup --pack-cents <n>

Charge the organisation's saved card off-session, right now, and credit the Carrier prepaid wallet with the pack.

MCP wallet_auto_topup

carrier stripe

Money in the operator's connected Stripe account
carrier stripe balance

Read the money sitting in the operator's connected Stripe account: available and pending, split per currency.

MCP stripe_connect_balance

carrier stripe payouts --limit <n> --status <status>

List money Stripe has already sent from the operator's connected account to their bank, newest first.

MCP stripe_connect_payouts

carrier stripe charges --limit <n> --starting-after <after>

List recent payments (charges) on the operator's connected Stripe account, e.g. storefront purchases.

MCP stripe_connect_charges_list

carrier stripe disputes --limit <n> --status <status>

List chargebacks customers have raised with their bank against the operator's connected Stripe account.

MCP stripe_connect_dispute_list

carrier stripe refund --charge-id <id> --amount-cents <n> --reason <reason> --confirm-token <token>

Refund money to a customer on one charge in the operator's connected Stripe account.

MCP stripe_connect_refund

carrier radar

Stripe Radar fraud reviews and value lists
carrier radar reviews --open-only <bool> --limit <n>

List the Stripe Radar fraud reviews waiting on a manual approve/decline decision, newest first.

MCP radar_review_list

carrier radar approve --review-id <id> --confirm-token <token>

Clear a Stripe Radar fraud review so the held charge is captured and the money is taken.

MCP radar_review_approve

carrier radar decline --review-id <id> --confirm-token <token>

Always refuses and calls nothing: Stripe has no endpoint to decline a Radar review (its Reviews API only lists, retrieves and approves).

MCP radar_review_decline

carrier radar rule-toggle --rule-id <id> --enabled <bool>

Report a Stripe Radar rule's state. Stripe exposes no API to change it, so this changes nothing.

MCP radar_rule_toggle

carrier radar value-list add --value-list-id <id> --value <value> --confirm-token <token>

Add one value to an existing Stripe Radar value list, changing how every future charge is scored.

MCP radar_value_list_add

carrier greenzone

The Bridge4IP Greenzone whitelist
carrier greenzone list --from-portal <bool>

List current Greenzone whitelist entries from the KV cache.

MCP greenzone_whitelist_list

carrier greenzone add --host <host> --ip <ip>
write · dry-run default

Add a host or IP to the Greenzone whitelist. Needs Kapture running in the operator's own Chrome — without it the dry run still returns the portal steps to follow by hand.

MCP greenzone_whitelist_add

carrier greenzone remove --host <host> --ip <ip>
write · dry-run default

Remove a host or IP from the Greenzone whitelist. Needs Kapture running in the operator's own Chrome — without it the dry run still returns the portal steps to follow by hand.

MCP greenzone_whitelist_remove

carrier agent

Steel browsing agents: one-off tasks and cron schedules
carrier agent ask --prompt <prompt> --max-steps <n>
write · dry-run default

Send a plain-language task to a hosted browsing agent, which drives a real browser on the open web — navigating pages, searching, extracting content, filling forms outside the OCS portal.

MCP ui_agent_ask

carrier agent status --task-id <id>

Poll the status of a browser agent task dispatched by ui_agent_ask or any ui_* tool.

MCP ui_agent_status

carrier agent pending

Returns all browser automation tasks that are currently paused waiting for human input.

MCP ui_agent_list_pending

carrier agent reply --task-id <id> --reply <reply>

Resumes a browser automation task that paused waiting for input.

MCP ui_agent_reply

carrier agent usage

Returns an estimated Anthropic API cost for Steel agent tasks dispatched this calendar month.

MCP ui_agent_usage

carrier agent schedule list

Lists all Steel recurring schedules stored in KV.

MCP ui_agent_schedule_list

carrier agent schedule create --name <name> --cron <cron> --prompt-template <template>

Creates a recurring Steel agent run on a cron schedule.

MCP ui_agent_schedule_create

carrier agent schedule pause --schedule-id <id>

Pauses an active Steel recurring schedule.

MCP ui_agent_schedule_pause

carrier agent schedule resume --schedule-id <id>

Resumes a paused Steel recurring schedule.

MCP ui_agent_schedule_resume

carrier agent schedule delete --schedule-id <id>

Permanently deletes a Steel recurring schedule.

MCP ui_agent_schedule_delete

carrier portal

OCS portal changes that only exist in the web UI, driven by Kapture
carrier portal account create --name <name> --description <description> --initial-balance <n>
write · dry-run default

Creates a new sub-account under the reseller via the OCS web dashboard.

MCP ui_create_account

carrier portal steering build --steering-list-id <n> --add-operators <list> --remove-operators <list> --operator-type <type>
write · dry-run default

Change which mobile operators sit on a steering list that already exists, by driving the OCS web dashboard — the OCS REST API cannot edit list membership.

MCP ui_build_steering_list

carrier portal steering create --name <name> --description <description>
write · dry-run default

Create a new, empty network steering list (OPLMN preference set) by driving the OCS web dashboard, because the OCS REST API cannot create one.

MCP ui_create_steering_list

carrier portal steering set-account --account-id <n> --steering-list-id <n>
write · dry-run default

Assigns or removes a steering list at the account level via the OCS web dashboard.

MCP ui_set_account_steering_list

carrier portal relay request --reseller-id <n> --relay-gy <bool> --relay-calls-sms <bool> --relay-voip <bool> --reason <reason>

Drafts the parent-reseller/support request for reseller relay flags that are visible but read-only in the OCS portal at the current account tier.

MCP ui_request_reseller_relay_change

carrier portal destinations create --name <name> --prefixes <list> --description <description>
write · dry-run default

Creates a new destination list (named set of phone number prefixes for MOC call permissions) via the OCS web dashboard.

MCP ui_create_destination_list

carrier portal destinations edit --destination-list-id <n> --add-prefixes <list> --remove-prefixes <list> --new-name <name>
write · dry-run default

Edits an existing destination list via the OCS web dashboard.

MCP ui_edit_destination_list

carrier portal destinations delete --destination-list-id <n>
write · dry-run default

Delete a destination list — a named set of phone-number prefixes — by driving the OCS web dashboard.

MCP ui_delete_destination_list

carrier portal zones edit --zone-id <n> --new-name <name> --add-countries <list> --remove-countries <list>
write · dry-run default

Edits an existing location zone via the OCS web dashboard. `create_location_zone` is available via API; edit is UI-only.

MCP ui_edit_location_zone

carrier portal zones delete --zone-id <n>
write · dry-run default

Delete a location zone by driving the OCS web dashboard, because the OCS REST API can create a zone (`create_location_zone`) but not remove one.

MCP ui_delete_location_zone

carrier portal templates delete --template-id <n>
write · dry-run default

Remove a package template from the reseller's product catalogue for good, by driving the OCS web dashboard — the OCS REST API cannot delete a template.

MCP ui_delete_package_template

carrier events

Buffered OCS event history per subscriber
carrier events ocs --iccid <iccid> --limit <n> --event-types <list> --since <since>

Return the last N OCS events buffered for a given ICCID.

MCP list_recent_ocs_events

carrier events countries --subscriber-id <id> --start-date <date> --end-date <date> --limit <n>

Return cross-border movement history for a subscriber, reconstructed from OCS Gy charging events.

MCP subscriber_country_history

carrier events depletion --subscriber-id <id> --since <since>

Look up bundle depletion events for a subscriber (or list recent fleet-wide depletions).

MCP subscriber_depletion_events

carrier panels

MCP UI surfaces. A terminal sees the underlying data, not the panel.
carrier panels fleet --account-id <n>

Fleet overview as a UI panel. Prefer `carrier intelligence fleet-health` in a terminal; use --json to read the panel's data.

MCP fleet_health_app

carrier panels topup --iccid <iccid> --delta <n> --preview <bool>

Adjust the OCS account balance behind one subscriber. Previews unless --preview false.

MCP balance_topup_form

carrier panels provision --step <step> --wizard-id <id> --subscriber-iccid <iccid> --package-template-id <n>

Step through the provisioning wizard. Pass --step confirm to execute; every earlier step only reads.

MCP provision_esim_wizard

carrier env

This environment: credentials, catalog and machine-readable context
carrier env info

View your Carrier environment configuration — active organization, reseller details, connected services, and deployment environment.

MCP environment_info

carrier env credentials

Report on the stored eSIMVault credential without changing it: whether a token is present, whether it is encrypted, how old it is, and whether rotation is recommended (over 90 days).

MCP credential_status

carrier env rotate --new-token <token> --confirm <bool>

Replace the stored eSIMVault API token with one you supply.

MCP rotate_credentials

carrier env catalog --category <category> --tier <tier>

Browse the Carrier service catalog — discover available services, their requirements, endpoints, and documentation.

MCP service_catalog

carrier env llm-context --format <format> --include-examples <bool>

Generate a comprehensive LLM context document describing your Carrier environment, available tools, current tier, usage patterns, and best practices.

MCP llm_context

carrier env describe --tool-name <name>

Get full documentation for any registered Carrier MCP tool: description, parameters, 2-3 example invocations, required scope, destructive flag, and guidance.

MCP carrier_ask_describe

carrier brand

Storefront brand assets
carrier brand logo --name <name> --accent <accent> --tagline <tagline>

Generate a storefront logo (SVG always; PNG when an image key is configured on the Carrier worker).

MCP generate_storefront_logo

carrier atlas

Carrier Atlas coverage catalog. Configured networks, not live radio telemetry.
carrier atlas coverage --country <country> --status <status> --technology <technology>

List the mobile networks Carrier Atlas has configured for one country.

MCP get_atlas_coverage

carrier atlas network --mcc <mcc> --mnc <mnc>

Read one mobile network from Carrier Atlas by MCC and MNC, including the latest status sample and the last 24 hours of probes.

MCP get_atlas_network_status

Examples

# Read: fleet overview, one subscriber, usage
carrier intelligence fleet-health
carrier subscribers get --iccid 8944500000000000000
carrier subscribers usage --iccid 8944500000000000000 --start 2026-08-10 --end 2026-08-17

# Pipe JSON into jq
carrier subscribers list --account-id 123 --json | jq '.[].iccid'

# Write: always previews first, then --commit applies
carrier subscribers set-status --iccid 8944500000000000000 --status SUSPENDED
carrier subscribers set-status --iccid 8944500000000000000 --status SUSPENDED --commit

# Anything the commands miss, in plain words
carrier ask "which subscribers in account 123 are close to their data limit?"

White-label storefront

Scaffold a fully branded eSIM storefront (Next.js, from the Mango template), preview it locally, and deploy it to Cloudflare Workers — three commands.

carrier site create [dir] [--name --domain --accent --yes]

Scaffold a white-labeled eSIM storefront from the Mango template, with brand config and generated logo.

carrier site deploy [dir] [--name <worker>]

Install deps, build, and deploy the storefront to Cloudflare Workers (needs wrangler login).

carrier site logo [dir]

Regenerate the storefront logo — SVG always; PNG when an image key is available.

End to end

carrier site create ./my-storefront --name "Nomad Mobile" --accent "#ff5a1f"
cd my-storefront && pnpm install && pnpm dev    # local preview
carrier site deploy ./my-storefront             # build + deploy (npx wrangler login first)

Re-brand anytime by editing src/brand.config.ts in the scaffolded project.

MCP stdio mode

The same package ships carrier-mcp, a local stdio MCP server for Claude Desktop, Cursor, Windsurf and any MCP-compatible client. Your OCS token stays on your machine — no outbound auth call to Carrier.

Run directly

ESIMVAULT_API_TOKEN=<your-token> npx -y -p @carrierllc/mcp carrier-mcp

Claude Desktop / Cursor / Windsurf — mcp.json

{
  "mcpServers": {
    "carrier": {
      "command": "npx",
      "args": ["-y", "-p", "@carrierllc/mcp", "carrier-mcp"],
      "env": { "ESIMVAULT_API_TOKEN": "<your-token>" }
    }
  }
}

Prefer the hosted server? (zero-cred, OAuth on first use)

claude mcp add --transport http carrier https://mcp.carrier.llc/mcp

Full tool reference: API Reference · MCP Server architecture

Troubleshooting

“No headless token in the environment”

Fleet commands and carrier ask need a credential. Export CARRIER_API_KEY=ak_… (Console → Settings → API Keys), or use the interactive Claude path where OAuth runs on first use.

MCP returns 401 / 403

The key was rejected. Confirm it is a valid org key from app.carrier.llc, and that OCS onboarding is complete (carrier open onboarding).

brew install fails on a pre-release macOS

If Homebrew reports Xcode as outdated, fall back to npm i -g @carrierllc/mcp. Also make sure you ran brew trust --tap Lifecycle-Innovations-Limited/carrier — Homebrew 5+ refuses untrusted third-party formulae.

`claude` CLI not on PATH during plugin install

The plugin files are still copied; finish wiring manually: claude mcp add --transport http carrier https://mcp.carrier.llc/mcp.

A write command did nothing

By design. Write commands preview as a dry run; add --commit to apply the change.

Usage window rejected

OCS caps usage queries at 7 days. The CLI clamps wider windows and tells you when it moved the start date.