Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

ai.shipeasy/mcp

NPM · @SHIPEASY/MCP · 2 COMPONENTS

Feature flags, A/B experiments, kill switches, dynamic config & i18n — Shipeasy MCP server.

0 this week 94 Trust /100

Last scanned (13 hours ago)

Scores higher than 97% of npm servers

Category Developer Tools

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to shipeasy-ai/shipeasy). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability75
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 41944 tokens (~233/item across 180 items; 180 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • Stability check failed: the tool surface changed between 2.8.0 and 2.16.0: 0 tool removals, 1 breaking changes, 65 additions. See how to fix → Fail
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 95% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 17 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 180 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 0
    • Schema quality: 32639 → 41944 ▼ functional
    • Package version: 2.15.0 → 2.16.0 functional
  • 3 Nov 26 0
    • Package version: 2.14.0 → 2.15.0 functional
  • 1 Nov 26 +25
    • Malware scan: unverified → pass ▲ security
    • Known CVEs: unverified → pass ▲ security
    • Dependency health: unverified → 0.86 ▲ functional
    • Package version: 2.13.0 → 2.14.0 functional
  • 31 Oct 26 −25
    • Known CVEs: pass → unverified ▼ security
    • Malware scan: pass → unverified ▼ security
    • Schema quality: 28716 → 31766 ▼ functional
    • Dependency health: 0.86 → unverified ▼ functional
    • Package version: 2.10.0 → 2.13.0 functional
    • Package version: 2.10.0 → 2.12.1 functional
    • Package version: 2.10.0 → 2.12.0 functional
  • 29 Oct 26 0
    • Package version: 2.9.0 → 2.10.0 functional
  • 27 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 26 Oct 26 −16
    • Malware scan: pass → unverified ▼ security
    • Stability: pass → fail ▼ security
    • Schema quality: 194 → 219 ▼ functional
    • Package version: 2.8.0 → 2.9.0 functional
  • 21 Oct 26 +1
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/@shipeasy/mcp@2.16.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo shipeasy-ai/shipeasy
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/shipeasy-ai/shipeasy/.github/workflows/publish-mcp.yml@refs/heads/main
Rekor log index 3692077079
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:c36cf6859854f870be363435a95b68c6d35240e2de58a1b8a5964cb153e7cc7a120d77001328ef46020b4d8be7035fa1b0d36c81b493fe0d0112b13e0

Background: How many MCP packages publish verified provenance →

Dependencies 95 packages
Packages resolved 95
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 180 exposed · ~41,944 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
release_experiments_list ~171

List experiments. Returns a single page of non-archived experiments ordered by `updated_at desc, id desc`. Use the `cursor` query parameter to paginate.

NameTypeReqDescription
cursorstring–Opaque cursor returned in the previous page's `next_cursor`. Omit for the first page.
limitinteger–Page size (1–500). Defaults to 100.
qstring–Case-insensitive substring filter across the resource's human-readable text columns (e.g. `name`, `title`, `description`). OR-matched across those columns; omit to return everything.
statusstring–Filter by lifecycle status. Pass `archived` to return the archive tab; any other value (or omitting it) returns the non-archived experiments.

No output schema declared.

No examples provided.

release_experiments_readout_create ~256

Mint a readout snapshot. Freezes the current results view into an immutable, dated readout snapshot — verdict, headline, per-metric numbers, the caveat list with its acknowledgment state, enrollment, and a hash of the assignment-relevant config. Ship/stop flows mint one automatically; "Share readout" …

NameTypeReqDescription
acknowledgedCaveatIdsarray–Ids of the open caveats the caller ticked (decision-gating acknowledgment). Unlisted caveats are stored as unacknowledged.
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
kindstringyesWhy the snapshot is being minted — `manual` ("Share readout"), or automatically on `ship` / `stop`.
requireAllAcknowledgedboolean–When `true`, refuse (`422`) to mint while any open caveat is not listed in `acknowledgedCaveatIds` — server-side ship gating.

No output schema declared.

No examples provided.

release_experiments_readout_get ~203

Get a readout snapshot. Returns one immutable readout snapshot — the frozen results view (verdict, headline, per-metric numbers, caveats, enrollment) captured when it was minted, plus the `configHash` that tells you whether it is still comparable to the live view.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
readoutIdstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_experiments_reanalyze ~115

Re-queue analysis. Requeues the daily analysis pass for this experiment outside the normal cron cadence. Useful after attaching a new metric or correcting an event taxonomy. The job runs asynchronously.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_experiments_restore ~92

Restore an archived experiment (→ draft). Drives the experiment lifecycle. Allowed transitions:

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_experiments_results ~119

Get analysis results. Returns the latest analysis output for the experiment — one row per metric/group/day, including sample size, mean, % delta vs. control, p-value, and a sample-ratio mismatch flag.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_experiments_set_metrics ~132

Attach metrics. Replaces the experiment's metric attachments wholesale. Each entry pairs an existing `metric_id` with a `role` (`goal` / `guardrail` / `secondary`).

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
metricsarrayyesReplacement metrics list — replaces the current attachments wholesale.

No output schema declared.

No examples provided.

release_experiments_start ~92

Start an experiment (draft → running). Drives the experiment lifecycle. Allowed transitions:

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_experiments_stop ~89

Stop a running experiment. Drives the experiment lifecycle. Allowed transitions:

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_experiments_timeseries ~126

Get analysis timeseries. Same row shape as `/results`, but returns every daily slice rather than the latest. Filter to a single metric with the `metric` query parameter.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
metricstring–Optional metric name to filter the series.

No output schema declared.

No examples provided.

release_experiments_universes_archive ~109

Delete a universe. Soft-deletes the universe. Returns `409` if any non-archived experiment still references it — archive those experiments first.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_experiments_universes_create ~395

Create a universe. Creates a new universe. Only `name` is required — `unit_type` defaults to `user_id` and `holdout_range` defaults to `null` (no holdout).

NameTypeReqDescription
description––Human-readable blurb shown in the universe picker/hovercard.
folder––Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`).
holdout_range––Inclusive `[lo, hi]` bucket range (0–9999) reserved as the **holdout** — callers hashed into this slice are excluded from every experiment in the universe. `null` disables the holdout. Pro plan or hi…
listTokenstring–REQUIRED. The `listToken` returned by the most recent `release_experiments_universes_list` call. It proves you listed existing release experiments universes and confirmed this one doesn't already exi…
namestringyesStable universe key. Single segment or `folder.name`. Lowercase letters, digits, `_` or `-`; max 128 chars. Immutable after create.
param_schema––The universe-owned config schema — an ordered `{ name, type, default }[]`. Experiments may only override values per variant, never add fields. `null` starts an empty schema.
recommended_headroominteger–Basis points of reserved headroom seeded into each new experiment created in this universe (0 = none). Lets variants be appended into a running experiment without reshuffling.
unit_typestring–Unit of randomisation. Typically `user_id`. Use `account_id` to keep whole accounts in the same group across an experiment.

No output schema declared.

No examples provided.

release_experiments_universes_list ~142

List universes. Returns a single page of universes ordered by `created_at desc, id desc`. The universes table has no `updated_at`, so this list is keyed on creation time.

NameTypeReqDescription
cursorstring–Opaque cursor returned in the previous page's `next_cursor`. Omit for the first page.
limitinteger–Page size (1–500). Defaults to 100.
qstring–Case-insensitive substring filter across the resource's human-readable text columns (e.g. `name`, `title`, `description`). OR-matched across those columns; omit to return everything.

No output schema declared.

No examples provided.

release_experiments_universes_update ~279

Update a universe. Partial update. Only `holdout_range` is mutable — `name` and `unit_type` are immutable after create.

NameTypeReqDescription
description––Human-readable blurb shown in the universe picker/hovercard.
folder––Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`).
holdout_range––Inclusive `[lo, hi]` bucket range (0–9999) reserved as the **holdout** — callers hashed into this slice are excluded from every experiment in the universe. `null` disables the holdout. Pro plan or hi…
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
param_schema––Replace the universe config schema. Additive changes + default edits are always allowed; removing a param a running experiment overrides is rejected (deprecate-only).
recommended_headroominteger–Basis points of reserved headroom seeded into new experiments in this universe.

No output schema declared.

No examples provided.

release_experiments_update ~640

Update an experiment. Partial update. `allocation_pct`, `groups`, `salt`, `universe`, `params` are **immutable while running** — returns `409` if you try. Stop the experiment first.

NameTypeReqDescription
allocation_pctinteger–Basis-points allocation (0–10000). Use `allocation_percent` (0–100) for percent. Immutable while the experiment is running.
allocation_percentnumber–Allocation as a **percentage** (0–100). Friendlier alias for `allocation_pct`; converted to basis points server-side. Wins over `allocation_pct` if both are supplied. Immutable while running.
audience–––
bucket_by–––
description–––
folder––Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`).
goal_metricobject–Inline metric — a DSL `query`, or an `event` (+ `aggregation`/`value`) the server compiles into one.
groupsarray–Replacement groups. Weights must sum to `10000 − reserved_headroom`. Existing weights/values are immutable while running; a new variant may be appended into the reserved tail.
guardrail_metricsarray–Replaces the guardrail set wholesale (event auto-upserted per entry).
holdout_gate––Per-experiment holdout gate — the name of a `holdout`-type flag, or `null` to clear. A caller the flag passes is held out.
hypothesis–––
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
min_runtime_daysinteger––
min_sample_sizeinteger––
namestring–Stable experiment key. Single segment or `folder.name` (a-z, 0-9, `_`/`-`; max 128 chars). Used by SDKs as `Shipeasy.getExperiment(user, '<name>')`. Immutable after create.
owner_email–––
paramsobject–**Deprecated** — the universe owns the config schema (`param_schema`). Retained for back-compat. Map of param-name → scalar type.
reserved_headroominteger–Basis points of the split kept empty for appended variants. Group weights must sum to `10000 − reserved_headroom`. May be shrunk (never grown into existing weights) while running when appending a var…
saltstring–Hash salt. Immutable while running.
sequential_testingboolean––
significance_thresholdnumber––
tag–––
targeting_gate–––
universestring–New universe name. Immutable while running. Returns `422` if the universe doesn't exist.

No output schema declared.

No examples provided.

release_flags_activity ~140

List gate activity. Returns recent audit rows for one gate (create, update, enable, disable, delete) ordered newest first. Use the `limit` query parameter to cap the result (1–100, default 20).

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
limitinteger–Max rows to return (1–100). Defaults to 20.

No output schema declared.

No examples provided.

release_flags_archive ~108

Delete a feature gate. Soft-deletes the gate. Returns 409 if the gate is still referenced by a running experiment as a targeting gate — stop the experiment first.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_attributes_archive ~90

Archive a targeting attribute. Soft-deletes (archives) a targeting attribute.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_attributes_create ~235

Declare a targeting attribute. Declare a targeting attribute the SDK reports and gates/experiments can target. `type: enum` requires `enum_values`.

NameTypeReqDescription
descriptionstring–Optional human note shown in the dashboard.
enum_values––Allowed values when `type` is `enum` (required in that case — 422 otherwise); `null` for non-enum types.
listTokenstring–REQUIRED. The `listToken` returned by the most recent `release_flags_attributes_list` call. It proves you listed existing release flags attributes and confirmed this one doesn't already exist before…
namestringyesAttribute key (lowercase alphanumeric start, then letters/digits/`_`/`-`; max 64 chars). Immutable after create.
requiredboolean–Whether the attribute must be present on the evaluation context.
sdk_pathstring–Optional dotted path the SDK reads the value from.
typestringyesDeclared value type of a targeting attribute.

No output schema declared.

No examples provided.

release_flags_attributes_get ~87

Get a targeting attribute. Fetch one targeting attribute by id.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_attributes_list ~92

List targeting attributes. Returns every auto-inferred targeting attribute in the project — the `name` and (when known) the value `type` — for building gate/experiment targeting rules.

NameTypeReqDescription
qstring–Case-insensitive substring filter across the resource's human-readable text columns (e.g. `name`, `title`, `description`). OR-matched across those columns; omit to return everything.

No output schema declared.

No examples provided.

release_flags_attributes_update ~189

Update a targeting attribute. Update a targeting attribute's type, allowed values, required flag, description, or SDK path. `name` is immutable.

NameTypeReqDescription
descriptionstring–Optional human note shown in the dashboard.
enum_values––Replacement allowed values (for `enum`), or `null` to clear.
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
requiredboolean–Whether the attribute must be present on the evaluation context.
sdk_pathstring–Optional dotted path the SDK reads the value from.
typestring–Declared value type of a targeting attribute.

No output schema declared.

No examples provided.

release_flags_create ~688

Create a feature gate. Creates a new gate. Default `enabled: true` at the supplied `rollout_pct` (`0` = fully dark).

NameTypeReqDescription
descriptionstring–Long-form description / runbook. Markdown is rendered in the dashboard.
enabledboolean–Master switch. Defaults to `true`. Set `false` to create the gate disabled (evaluates to `false` regardless of rules/rollout); flip on via `POST /{id}/enable` or PATCH.
folder––Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`).
groupstring–Group label for dashboard organisation (e.g. team or product area).
listTokenstring–REQUIRED. The `listToken` returned by the most recent `release_flags_list` call. It proves you listed existing release flags and confirmed this one doesn't already exist before creating it. Call `rel…
namestringyesStable gate key used by SDKs (`Shipeasy.checkGate(user, '<name>')`). Single segment or `folder.name`. Lowercase letters, digits, `_` or `-`; max 128 chars. Immutable after create — rename = delete +…
owner_emailstring–Owner contact. Displayed verbatim; not used for auth.
rollout_pctinteger–Initial rollout in **basis points** (0–10000 = 0%–100%) — `100` here means **1%**, not 100%. Use `rollout_percent` (0–100) below if you'd rather think in percent. Use `0` to create the gate dark and…
rollout_percentnumber–Initial rollout as a **percentage** (0–100, fractional ok). Friendlier alias for `rollout_pct`; converted internally to basis points (e.g. `100` here = 10000 bp = 100%). If both `rollout_pct` and `ro…
rulesarray–Targeting predicates. AND-combined. If non-empty, the gate returns `true` only for callers that satisfy every rule **and** fall under `rollout_pct`.
saltstring–Hash salt for percentage bucketing. Auto-generated if omitted. Provide explicitly to keep a gate's buckets stable across delete/recreate. **Immutable after create** — there is no PATCH for `salt` bec…
stack––Optional gatekeeper stack. When provided, takes precedence over `rules` + `rollout_pct` at evaluation time. Omit (or pass `null`) for a flat gate.
titlestring–Human-readable title shown in the dashboard. Free-form, no key format constraint.
typestring–Gate kind. `targeting` (default) is a normal flag with the full builder. `holdout` is a **restricted** flag — only a public rollout % and a whitelist are allowed; attribute rules and a gatekeeper sta…

No output schema declared.

No examples provided.

release_flags_disable ~114

Disable a gate. Sets `enabled: false` so the gate evaluates to `false` for every caller, regardless of `rollout_pct` or `rules`. Use as a quick kill switch.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_enable ~94

Enable a gate. Sets `enabled: true`. The current `rollout_pct` is preserved.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_get ~116

Get one gate. Returns the full gate row — including the gatekeeper `stack`, resolved creator/last-editor emails, and the edit `version` — for one gate, addressed by id or `name`.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_list ~127

List feature gates. Returns a single page of gates ordered by `updated_at desc, id desc`. Use the `cursor` query parameter to paginate.

NameTypeReqDescription
cursorstring–Opaque cursor returned in the previous page's `next_cursor`. Omit for the first page.
limitinteger–Page size (1–500). Defaults to 100.
qstring–Case-insensitive substring filter across the resource's human-readable text columns (e.g. `name`, `title`, `description`). OR-matched across those columns; omit to return everything.

No output schema declared.

No examples provided.

release_flags_templates_archive ~108

Delete a gate template. Soft-deletes (archives) a **customer** template. Returns `409` if `id` names a read-only built-in template.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_templates_create ~205

Create a gate template. Creates a per-project (customer) targeting-rule template. Built-ins are read-only and cannot be created here. Returns `409` if a template with this `name` already exists in the project.

NameTypeReqDescription
autoboolean–Mark the attribute as request-derived (resolved at the SDK edge).
categorystring––
descriptionstring–One-liner shown in pickers and matched by the list `query` filter.
icon_keystring–Display-only icon hint.
listTokenstring–REQUIRED. The `listToken` returned by the most recent `release_flags_templates_list` call. It proves you listed existing release flags templates and confirmed this one doesn't already exist before cr…
namestringyesHuman label. Unique per project.
rulesarrayyesThe rule definition captured by the template.

No output schema declared.

No examples provided.

release_flags_templates_get ~108

Get one gate template. Returns a single template by its `id` — a built-in slug (`country`) or a customer `gtpl_…` id.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_templates_list ~146

List gate templates. Returns the merged targeting-rule template catalog — read-only **built-ins first** (the `@team`/`@owner` audience aliases, country, email-domain, region presets, …), then this project's **customer** templates. Each item carries a `rules: [{ attr, op, value }]` definition; the …

NameTypeReqDescription
qstring–Case-insensitive substring filter across the resource's human-readable text columns (e.g. `name`, `title`, `description`). OR-matched across those columns; omit to return everything.
querystring–Deprecated alias for `q`, kept working for one release. Prefer `q`.

No output schema declared.

No examples provided.

release_flags_templates_update ~154

Update a gate template. Partial update of a **customer** template. `rules` replaces the list wholesale. Returns `409` if `id` names a read-only built-in template.

NameTypeReqDescription
autoboolean––
categorystring––
descriptionstring––
icon_key–––
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
namestring––
rulesarray––

No output schema declared.

No examples provided.

release_flags_update ~506

Update a feature gate. Partial update — only supplied fields change. Array fields (`rules`, `stack`) **replace** wholesale; there is no merge or append.

NameTypeReqDescription
descriptionstring–Long-form description / runbook. Markdown is rendered in the dashboard.
enabledboolean–Master switch. `false` makes the gate evaluate to `false` for every caller regardless of `rollout_pct`, `rules`, or `stack` — use as kill switch.
folder––Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`).
groupstring–Group label for dashboard organisation (e.g. team or product area).
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
owner_emailstring–Owner contact. Displayed verbatim; not used for auth.
rollout_pctinteger–New rollout in **basis points** (0–10000 = 0%–100%) — `100` here means **1%**. Use `rollout_percent` (0–100) below for percent. Omit both to leave unchanged.
rollout_percentnumber–New rollout as a **percentage** (0–100). Friendlier alias for `rollout_pct`; converted internally. Wins over `rollout_pct` if both are supplied. Omit both to leave unchanged.
rulesarray–Replaces the rule list wholesale. To add a value to an `in` rule, send the full new `rules` array with the augmented `value` (e.g. previous `['US','CA']` → `['US','CA','GB']`).
stack––Replaces the gatekeeper stack wholesale. Send `null` to revert to flat `rules` + `rollout_pct` evaluation.
titlestring–Human-readable title shown in the dashboard. Free-form, no key format constraint.
typestring–Gate kind. Switching to `holdout` requires the gate carry only a public rollout % + whitelist (attribute rules / stack are rejected).

No output schema declared.

No examples provided.

release_flags_whitelist ~107

Read a gate's whitelist. Returns the gate's whitelist — the always-first allowlist that admits the listed identities before any targeting rule or percentage rollout is evaluated.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_whitelist_add ~199

Add entries to a gate's whitelist. Adds identities to the gate's whitelist, creating the block if the gate doesn't have one yet. Entries already on the list are skipped, so the call is idempotent and safe to retry.

NameTypeReqDescription
attr––Identity attribute to match on. Only honoured when the gate has no whitelist yet (this call creates it); passing an attribute that disagrees with an existing whitelist is a 409 rather than a silent r…
entriesarrayyesIdentities to admit. Already-listed entries are skipped, so the call is idempotent.
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_whitelist_remove ~136

Remove entries from a gate's whitelist. Removes identities from the gate's whitelist. Entries that aren't on the list are skipped, so the call is idempotent.

NameTypeReqDescription
entriesarrayyesIdentities to stop admitting. Entries that aren't listed are skipped, so the call is idempotent.
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_flags_whitelist_set ~172

Replace a gate's whitelist. Replaces the gate's whole whitelist with `entries`, creating the block if the gate didn't have one. Idempotent — the same call twice leaves the same list.

NameTypeReqDescription
attr––Identity attribute to match on. Defaults to the whitelist's current attribute, or `email` when the gate has no whitelist yet.
entriesarrayyesThe complete whitelist after the call. Pass `[]` to remove the whitelist from the gate entirely.
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_killswitch_archive ~102

Delete a killswitch. Soft-deletes the killswitch and rebuilds the project's flags KV blob so SDKs stop seeing it.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_killswitch_create ~266

Create a killswitch. Creates a new killswitch with `value` (default `false`) applied to **every** env at version 1.

NameTypeReqDescription
descriptionstring–Optional free-form description shown in the dashboard. Max 512 chars.
folder––Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`).
listTokenstring–REQUIRED. The `listToken` returned by the most recent `release_killswitch_list` call. It proves you listed existing release killswitch and confirmed this one doesn't already exist before creating it.…
namestringyesStable config/killswitch key in `folder.name` form (two lowercase segments separated by a dot, e.g. `pricing.tiers`). Immutable after create.
switchesobject–Initial per-switch overrides applied to every env. Empty/omitted leaves the killswitch with only the flat `value`.
valueboolean–Default value applied to every env at creation. Defaults to `false`. Use `true` to ship the killswitch pre-tripped.

No output schema declared.

No examples provided.

release_killswitch_get ~105

Get one killswitch. Returns the killswitch metadata plus the latest published `value`/`switches`/`version` per env.

NameTypeReqDescription
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…

No output schema declared.

No examples provided.

release_killswitch_list ~143

List killswitches. Returns a single page of killswitches ordered by `updated_at desc, id desc`. Each row includes the latest published `value`/`switches`/`version` per env.

NameTypeReqDescription
cursorstring–Opaque cursor returned in the previous page's `next_cursor`. Omit for the first page.
limitinteger–Page size (1–500). Defaults to 100.
qstring–Case-insensitive substring filter across the resource's human-readable text columns (e.g. `name`, `title`, `description`). OR-matched across those columns; omit to return everything.

No output schema declared.

No examples provided.

release_killswitch_set ~170

Set one switch entry. Sets or updates a single `switchKey` on a single `env`. Publishes one new version on that env only — other envs untouched.

NameTypeReqDescription
envstringyesTarget environment. One of the project's configured envs (`dev`, `staging`, `prod`).
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
switchKeystringyesSwitch key to set.
valuebooleanyesNew boolean value for this `switchKey` on this `env`.

No output schema declared.

No examples provided.

release_killswitch_set_value ~168

Set the flat value on one env. Sets the flat `value` on a single `env`, publishing one new version on that env only. `switches` and other envs are untouched.

NameTypeReqDescription
envstringyesTarget environment. One of the project's configured envs (`dev`, `staging`, `prod`).
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
valuebooleanyesFlat boolean to publish on `env`. Publishes a new version on that env only.

No output schema declared.

No examples provided.

release_killswitch_toggle ~267

Toggle a killswitch or one of its switches. Flips a killswitch on one environment and publishes a new version there. This is the one-call incident verb: it reads the current value, flips it, and publishes, so you don't have to fetch the killswitch first.

NameTypeReqDescription
env––Environment to publish on. Defaults to `prod` — the environment an incident response means when it says "kill it".
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
switchKey––Which target to flip. Omit (or `null`) to flip the killswitch's own flat `value`; name a switch key to flip that nested sub-switch instead, creating the entry if it doesn't exist yet.
value––The value to publish. Omit (or `null`) to flip whatever is stored now — read-modify-write in one call. Pass an explicit `true`/`false` to make the call idempotent, so a retry can't undo the first att…

No output schema declared.

No examples provided.

release_killswitch_unset ~150

Remove one switch entry. Removes a single `switchKey` from the `switches` map on a single `env`. Publishes a new version on that env.

NameTypeReqDescription
envstringyesTarget environment. One of the project's configured envs (`dev`, `staging`, `prod`).
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
switchKeystringyesSwitch key to remove.

No output schema declared.

No examples provided.

release_killswitch_update ~237

Update a killswitch. Partial update applied to **every** env. Setting `value`/`switches` publishes a new version per env. Description-only patches don't bump versions.

NameTypeReqDescription
description––New description, or `null` to clear it. Max 512 chars.
folder––Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`).
idstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
switchesobject–Replace the switches map wholesale on every env. To edit a single entry on a single env use `PUT /{id}/switch` instead.
valueboolean–Flat value applied to every env. Publishes a new version per env when set. Omit to leave values unchanged.

No output schema declared.

No examples provided.

tags_get ~212

Read an item's tags. Returns the tags attached to one item. The item is addressed by kind (`entityType`) plus its handle, so the same call reads tags off a queue item, a flag, a config, a kill switch, a metric, a tracked error, an alert rule, or an experiment.

NameTypeReqDescription
entityIdstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
entityTypestringyesThe kind of item a tag set hangs off: `ops` (any queue item — bug, feature request, error/alert/measure-plan ticket), `flag` (feature gate), `config` (dynamic config), `killswitch`, `metric`, `error`…

No output schema declared.

No examples provided.

tags_list ~76

List the project's tags. Returns every tag in the project — the shared roster any item (queue items, flags, configs, kill switches, metrics, tracked errors, alert rules, experiments) can carry. Sorted by name.

NameTypeReqDescription
qstring–Case-insensitive substring filter on the tag name. Omit to return every tag.

No output schema declared.

No examples provided.

tags_set ~276

Replace an item's tags. Replaces the item's whole tag set with `tags`: names not yet in the project are created, attached names not in the list are detached, and `[]` clears every tag. Names are deduped case-insensitively, reusing an existing tag's casing (sending `iOS` when `ios` exists attaches `io…

NameTypeReqDescription
entityIdstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
entityTypestringyesThe kind of item a tag set hangs off: `ops` (any queue item — bug, feature request, error/alert/measure-plan ticket), `flag` (feature gate), `config` (dynamic config), `killswitch`, `metric`, `error`…
tagsarrayyesThe complete tag set the item should carry — tags not listed are detached. Names are get-or-created (a new name mints a project tag), deduped case-insensitively; `[]` clears every tag.

No output schema declared.

No examples provided.

tags_update ~273

Add or remove tags on an item. Edits an item's tags incrementally: attaches every name in `add` (creating project tags as needed) and detaches every name in `remove`, leaving the item's other tags untouched. Matching is case-insensitive; a name in both lists ends up removed.

NameTypeReqDescription
addarray–Tag names to attach (get-or-created by name, case-insensitive). Already-attached names are a no-op.
entityIdstringyesA resource path identifier — an opaque `xxx_<ULID>` id (~30 chars) or the resource's `name`/`key`. 1–128 characters; the upper bound matches the longest name/key any resource accepts, so an over-long…
entityTypestringyesThe kind of item a tag set hangs off: `ops` (any queue item — bug, feature request, error/alert/measure-plan ticket), `flag` (feature gate), `config` (dynamic config), `killswitch`, `metric`, `error`…
removearray–Tag names to detach (case-insensitive). Names the item doesn't carry are a no-op. A name in both lists is removed.

No output schema declared.

No examples provided.

Install

How do I install the ai.shipeasy/mcp server?

ai.shipeasy/mcp runs locally as an npm package, launched with npx -y @shipeasy/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @shipeasy/mcp

# add to Claude Code
claude mcp add ai-shipeasy-mcp -- npx -y @shipeasy/mcp
Common questions

What is the ai.shipeasy/mcp server?

ai.shipeasy/mcp is listed in the public MCP registry as ai.shipeasy/mcp. Feature flags, A/B experiments, kill switches, dynamic config & i18n, Shipeasy MCP server. This page covers its npm package (@shipeasy/mcp).

Is the ai.shipeasy/mcp server safe to use?

ai.shipeasy/mcp scores 94 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the ai.shipeasy/mcp server expose?

ai.shipeasy/mcp exposes 180 tools: projects_upsert, auth_check, auth_login, auth_logout, api_keys_create, and 175 more. Their descriptions and schemas cost roughly 41,944 tokens of context every time the server is loaded.

Is the ai.shipeasy/mcp server still maintained?

ai.shipeasy/mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the ai.shipeasy/mcp server under?

ai.shipeasy/mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.