ai.shipeasy/mcp
NPM · @SHIPEASY/MCP · SCANNED AUG 3
Feature flags, A/B experiments, kill switches, dynamic config & i18n — Shipeasy MCP server.
Available components
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 →
Supply Chain Security88
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (97 of 101), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (97 of 101), so this covers what we could see, not the whole tree. 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 6 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability72
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 22388 tokens (~194/item across 115 items; 115 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 Management26
- Stability check failed: the tool surface changed between 2.5.0 and 2.8.0: 0 tool removals, 1 breaking changes, 0 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
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @shipeasy/mcp
claude mcp add ai-shipeasy-mcp -- npx -y @shipeasy/mcp
codex mcp add ai-shipeasy-mcp -- npx -y @shipeasy/mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ai-shipeasy-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@shipeasy/mcp"
],
"enabled": true
}
}
} openclaw mcp add ai-shipeasy-mcp --command npx --arg -y --arg @shipeasy/mcp
mcp_servers:
ai-shipeasy-mcp:
command: "npx"
args: ["-y", "@shipeasy/mcp"] {
"mcpServers": {
"ai-shipeasy-mcp": {
"command": "npx",
"args": [
"-y",
"@shipeasy/mcp"
]
}
}
} 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.
- 3 Aug 26 −2
No change was recorded against any check on this day. Supply Chain Security went from 97 to 88. Other categories moved too: Stability & Change Management rose 3.
- 2 Aug 26 +44
- Known CVEs: unverified → partial ▲ security
- Provenance: unverified → pass ▲ security
- Install scripts: unverified → pass ▲ security
- Malware scan: unverified → pass ▲ security
- The attested source repository moved: shipeasy-ai/shipeasy security
- Maintenance: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- License: unverified → pass ▲ functional
- Licence: MIT functional
- 31 Jul 26 −2
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −34
- Install scripts: pass → unverified ▼ security
- Provenance: pass → unverified ▼ security
- Known CVEs: partial → unverified ▼ security
- The attested source repository moved: shipeasy-ai/shipeasy security
- License: pass → unverified ▼ functional
- Dependency health: partial → unverified ▼ functional
- Maintenance: pass → unverified ▼ functional
- Licence: MIT functional
- 28 Jul 26 +67
- Known CVEs: unverified → partial ▲ security
- Provenance: unverified → pass ▲ security
- Install scripts: unverified → pass ▲ security
- The attested source repository moved: shipeasy-ai/shipeasy security
- Tool coverage: unverified → 100 ▲ functional
- License: unverified → pass ▲ functional
- Maintenance: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Schema quality: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 95 functional
- First check of Schema quality: good functional
- Licence: MIT functional
- 27 Jul 26 6
First indexed and scored.
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 3 Aug 2026 · Analysed npm/@shipeasy/[email protected]
Provenance verified
Ecosystem: npm · Outcome: verified
Reason: verified
- 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:
- 2261052342
- Predicate type:
- https://slsa.dev/provenance/v1
- Subject digest:
- sha512:0fa95a914595dbb959af7a7eb4185bcda3d04cac56c8c47b8df9665356898cd2add7341ba0e3f62d879d805c3615304af9a5ee6cb84e0929620ac1f97
- Discovery method:
- attestation_endpoint
Dependencies 97 packages
97 packages in the resolved dependency tree · 94 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
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.
auth_check ~37
Report whether ~/.config/shipeasy/config.json holds a valid CLI token. Returns { authenticated, project_id, base_url, user_email }.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
auth_login ~45
Launch the PKCE device-auth flow via `shipeasy login`. Opens a browser; blocks up to 5 minutes. Caller should render a 'waiting for browser…' spinner.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
auth_logout ~179
Delete ~/.config/shipeasy/config.json — the ONE session shared by the `shipeasy` CLI and every MCP client on this machine. No network call. **This is not restorable from MCP**: re-authenticating needs a browser sign-in in a terminal (`shipeasy login`), which this transport cannot perform, so calling this strands the current task and every other tool until a human signs in again. Do NOT call it to 'reset' or troubleshoot a failing call — a 401/403 is fixed by signing in, not by deleting the credential first. Only call it when the user explicitly asked to sign out, and pass confirm: true to acknowledge that.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | yes | Must be true. Acknowledges that this deletes the machine-wide session and that only a human at a terminal can restore it. |
No output schema declared.
No examples provided.
docs_get ~126
Fetch one SDK doc page or snippet. Fetch one feature page (`flags`, `experiments`, …) or nested snippet (`release/experiments`, …), substituting declared {{placeholders}} from caller args.
| Name | Type | Req | Description |
|---|---|---|---|
| framework | string | — | Framework hint (substitutes {{FRAMEWORK}}). |
| name | string | — | Resource name (substitutes {{RESOURCE_NAME}}). |
| path | string | yes | Page key or snippet 'group/resource'. |
| sdk | string | — | SDK language. Defaults to the `sdk` recorded in the nearest `.shipeasy` when omitted. |
No output schema declared.
No examples provided.
docs_list ~79
List an SDK's documentation tree. Fetch an SDK's `/docs/manifest.json` and return the doc tree — feature pages, nested snippet groups, the optional setup-topic map, and whether an installable skill exists.
| Name | Type | Req | Description |
|---|---|---|---|
| sdk | string | — | SDK language. Defaults to the `sdk` recorded in the nearest `.shipeasy` when omitted. |
No output schema declared.
No examples provided.
docs_skill ~105
Fetch an SDK's installable LLM skill. Fetch the SDK's `skill/SKILL.md` (frontmatter intact) so an agent can install it verbatim. The CLI `--install` writes it locally (a consumer fs side-effect).
| Name | Type | Req | Description |
|---|---|---|---|
| install | boolean | — | CLI only: write the skill to the local agent skills dir. |
| sdk | string | — | SDK language. Defaults to the `sdk` recorded in the nearest `.shipeasy` when omitted. |
No output schema declared.
No examples provided.
errors_get ~138
Get a tracked error. Returns a single tracked error by its id, including the latest occurrence's stack, extras, and consequence, plus `occurrences` — the sampled per-instance detail rows behind the issue (newest first; exhaustive while the issue is small, thinned at volume, capped at 100). Returns…
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A 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.
errors_list ~128
List tracked errors. Returns a single page of tracked production errors as a **bare JSON array** (no pagination envelope), ordered by `lastSeenAt desc`. Filter with `status`, free-text-search with `q`, and cap the page with `limit`.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Maximum number of rows to return (1–500). Defaults to 200. |
| q | string | — | Case-insensitive substring match against `message`, `errorType`, and `subject`. |
| status | string | — | Filter by triage state. `all` (the default) returns every status. |
No output schema declared.
No examples provided.
errors_resolve ~145
Resolve a tracked error. Marks one tracked error `resolved` — the single-purpose "close out" action. Takes no body; it is `PATCH /api/admin/errors/{id}` pinned to `{ "status": "resolved" }`, exposed so tooling can close an error without being handed the full open/resolved/ignored status machine. A res…
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A 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.
errors_series ~218
Get an error's occurrence series. Returns a bucketed occurrence timeseries for one tracked error (by its fingerprint), read from the `shipeasy_errors` Analytics Engine dataset (near-real-time; ingest lag is seconds). The window bounds are epoch **seconds**; `to` must be strictly greater than `from`. The respon…
| Name | Type | Req | Description |
|---|---|---|---|
| bucket | integer | — | Bucket width in seconds (60s–86400s/1d). Defaults to `3600` (hourly). Each returned point is floor-aligned to this width. |
| from | integer | yes | Window start, epoch seconds (inclusive). |
| id | string | yes | A 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… |
| to | integer | yes | Window end, epoch seconds (exclusive). Must be greater than `from`. |
No output schema declared.
No examples provided.
i18n_drafts_create ~152
Create a translation draft. Stage a new translation draft against a target profile, optionally seeding its keys from a source profile.
| Name | Type | Req | Description |
|---|---|---|---|
| listToken | string | — | REQUIRED. The `listToken` returned by the most recent `i18n_drafts_list` call. It proves you listed existing i18n drafts and confirmed this one doesn't already exist before creating it. Call `i18n_dr… |
| name | string | yes | Draft name, e.g. the target locale being staged. |
| profile_id | string | yes | Profile the draft targets. |
| source_profile_id | string | — | Optional profile to seed the draft's keys from. |
No output schema declared.
No examples provided.
i18n_drafts_list ~25
List translation drafts. List staged translation drafts awaiting review/publish.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
i18n_drafts_update ~115
Update a translation draft. Transition a draft's lifecycle state (`open` / `merged` / `abandoned`).
| Name | Type | Req | Description |
|---|---|---|---|
| draftId | string | yes | A 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… |
| status | string | — | New lifecycle state for the draft. |
No output schema declared.
No examples provided.
i18n_keys_list ~136
List i18n keys. List keys for a profile, optionally filtered to a name `prefix`.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max keys to return (1–500). |
| offset | integer | — | Number of keys to skip before returning `limit` rows (offset pagination). |
| prefix | string | — | Only keys whose name starts with this. |
| profile_id | string | — | Profile id to list keys for. |
| q | string | — | Free-text search — matches keys whose name, value, OR description contains this substring (case-insensitive). Use it to find the key behind a piece of on-screen copy. |
No output schema declared.
No examples provided.
i18n_keys_push ~147
Push i18n keys (insert-only, or `force` to overwrite). Add NEW keys to a profile. Insert-only by default — existing keys are left untouched and reported back as `skipped`.
| Name | Type | Req | Description |
|---|---|---|---|
| force | boolean | — | Overwrite keys that already exist with the submitted value instead of skipping them. Overwritten keys come back as `updated`. Off by default so a routine push can never clobber live translations. |
| keys | array | yes | Keys to add. Insert-only by default — existing keys are reported back as `skipped` (set `force` to overwrite them instead). |
| profile_id | string | yes | Target profile id to add keys to. |
No output schema declared.
No examples provided.
i18n_keys_set ~174
Set a key's value and publish it live. Upsert a single key's value into a profile and immediately publish the whole profile (KV rebuild + CDN purge) so the new value is live in one call. The key is inserted when new and overwritten when it already exists. `profile` is a profile name — omit it to target the project'…
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | Optional human note to store with the key. |
| key | string | yes | Dotted key path to set, e.g. `home.cta`. |
| profile | string | — | Profile name to target, e.g. `en:prod`. Omit to target the project's default-marked profile. |
| value | string | yes | New value for the key. Inserted when the key is new, overwritten when it exists. |
No output schema declared.
No examples provided.
i18n_keys_update ~158
Update one i18n key. Overwrite a single existing key's value — the only overwrite path.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | Optional human note to store with the key. |
| id | string | yes | A 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… |
| value | string | yes | New value for the key (the only overwrite path). |
| variables | array | — | Explicit `{{var}}` placeholder names in the value. Omit to auto-derive them from the value. |
No output schema declared.
No examples provided.
i18n_profiles_create ~174
Create an i18n profile. Create a locale profile. `name` is the stable handle (e.g. `fr:prod`).
| Name | Type | Req | Description |
|---|---|---|---|
| listToken | string | — | REQUIRED. The `listToken` returned by the most recent `i18n_profiles_list` call. It proves you listed existing i18n profiles and confirmed this one doesn't already exist before creating it. Call `i18… |
| name | string | yes | Profile handle to create, e.g. `en:prod` or `fr:prod`. Lowercase alphanumeric start, then letters/digits/`_`/`:`/`.`/`-`; max 64 chars. The locale is encoded in the handle, so no separate locale fiel… |
No output schema declared.
No examples provided.
i18n_profiles_list ~39
List i18n profiles. Returns every locale profile in the project (e.g. `en:prod`, `fr:prod`).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
i18n_profiles_publish ~123
Publish a profile live. Publish a profile to the CDN — rebuild its KV snapshot + purge the edge. Publishing is PROFILE-WIDE: the whole profile is snapshotted into one KV blob, so the body takes no options.
| Name | Type | Req | Description |
|---|---|---|---|
| profileId | string | yes | A 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.
metrics_archive ~104
Archive a metric. Soft-deletes (archives) the metric. Returns `409` if it is attached to a running experiment — stop those experiments first.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A 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.
metrics_create ~479
Create a metric. Creates an event-backed metric. Pass the query as the DSL string (`query`) **or** the typed IR (`query_ir`) — exactly one. `event_name` must equal the event the query references.
| Name | Type | Req | Description |
|---|---|---|---|
| default_min_effect_of_interest | — | — | Default minimum effect of interest (relative, 0–1) — the smallest change in this metric worth acting on, used as the power-planning baseline. Intrinsic to the metric; an experiment overrides it per-a… |
| direction | string | — | Desired direction of movement. `higher_better` (default), `lower_better`, or `neutral` (guardrail). |
| event_name | string | yes | Source event the query reads from. |
| folder | — | — | Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`). |
| listToken | string | — | REQUIRED. The `listToken` returned by the most recent `metrics_list` call. It proves you listed existing metrics and confirmed this one doesn't already exist before creating it. Call `metrics_list` f… |
| name | string | yes | Stable metric key. Single segment or `folder.name`; lowercase letters, digits, `_`/`-`; max 128 chars. |
| query | string | — | Metric query DSL string, e.g. `sum(purchase, amount)`. The alternative to `query_ir`. Every label the query references — in filters, the value position, `by (…)`, or `without (…)` — must exist as a p… |
| query_ir | object | — | Typed query IR — the structured alternative to the `query` DSL string. Exactly one of `query` / `query_ir` is supplied per metric body. |
| unit | — | — | Display unit (e.g. `ms`, `%`, `$`), or `null` when unitless. |
| winsorize_pct | integer | — | Winsorise percentile (1–99) to clamp outliers. Defaults to 99. |
No output schema declared.
No examples provided.
metrics_events_approve ~180
Approve a pending event. Promotes a pending (auto-discovered) event to usable so metrics can query it (`pending` → `0`).
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | New description for the event. |
| folder | — | — | Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`). |
| id | string | yes | A 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… |
| properties | array | — | Replaces the full property set (no merge). Omit to leave properties unchanged. |
No output schema declared.
No examples provided.
metrics_events_archive ~103
Archive an event. Soft-deletes (archives) the event. Returns `409` if any metric still references it — delete those metrics first.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A 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.
metrics_events_create ~213
Register an event. Registers a new event name and (optionally) its typed properties. Only `name` is required.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | Optional human-readable description of the event. |
| folder | — | — | Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`). |
| listToken | string | — | REQUIRED. The `listToken` returned by the most recent `metrics_events_list` call. It proves you listed existing metrics events and confirmed this one doesn't already exist before creating it. Call `m… |
| name | string | yes | Event name. Starts with a letter, digit, or `_`; letters, digits, `_`, `-`, `.`; max 128 chars. Immutable after create — this is the handle metric queries reference. |
| properties | array | — | Typed properties declared on the event. Defaults to an empty list. |
No output schema declared.
No examples provided.
metrics_events_get ~102
Get an event. Returns one event's full detail. Resolves by exact id, unique id-prefix, or exact (unique) name.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A 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.
metrics_events_list ~93
List events. Returns every catalogued event in the project, including pending auto-discovered names. Each row carries its own `pending` flag, so the unapproved queue can be filtered client-side.
| Name | Type | Req | Description |
|---|---|---|---|
| q | string | — | 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.
metrics_events_update ~171
Update an event. Partial update of an event's folder, description, or properties. `name` is immutable.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | — | New description for the event. |
| folder | — | — | Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`). |
| id | string | yes | A 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… |
| properties | array | — | Replaces the full property set (no merge). Omit to leave properties unchanged. |
No output schema declared.
No examples provided.
metrics_experiments ~120
List experiments using a metric. Returns every experiment that attaches this metric — as `goal`, `guardrail`, or `secondary` — ordered with running experiments first, then by role weight (goal > guardrail > secondary).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A 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.
metrics_grammar ~50
Print the metric query DSL grammar. Print the full metric query DSL reference — grammar, aggregation semantics, filter/group-by/ratio rules, and glossed examples — used to author `metrics create --query`.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
metrics_list ~85
List metrics. Returns every metric in the project (not paginated) — name, folder, source event, the typed `queryIr`, and the rendered query.
| Name | Type | Req | Description |
|---|---|---|---|
| q | string | — | 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.
metrics_series ~216
Get a metric's time series. Compiles the metric's typed IR into Analytics Engine SQL and returns the bucketed series over the requested window (near-real-time; ingest lag is seconds). The window bounds are epoch **seconds**; `to` must be strictly greater than `from`. The response echoes the SQL that prod…
| Name | Type | Req | Description |
|---|---|---|---|
| bucket | integer | — | Bucket width in seconds (60s–86400s/1d). Defaults to `3600` (hourly). Each returned point is floor-aligned to this width. |
| from | integer | yes | Window start, epoch seconds (inclusive). |
| id | string | yes | A 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… |
| to | integer | yes | Window end, epoch seconds (exclusive). Must be greater than `from`. |
No output schema declared.
No examples provided.
metrics_show ~96
Get a metric. Fetch one metric by its id or name, including the rendered DSL query and the typed IR.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A 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.
metrics_unarchive ~112
Unarchive a metric. Reverses a soft-delete (archive), making the metric live again. Idempotent — unarchiving a metric that is already live succeeds with no effect.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A 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.
metrics_update ~466
Update a metric. Update a metric's definition — folder, source event, query (`query` DSL or typed `query_ir`), winsorisation, minimum detectable effect, or direction. `name` is immutable. Provide at most one of `query` / `query_ir`.
| Name | Type | Req | Description |
|---|---|---|---|
| default_min_effect_of_interest | — | — | Default minimum effect of interest (relative, 0–1) — the smallest change in this metric worth acting on, used as the power-planning baseline. Intrinsic to the metric; an experiment overrides it per-a… |
| direction | string | — | Desired direction of movement. `higher_better` (default), `lower_better`, or `neutral` (guardrail). |
| event_name | string | — | Source event the query reads from. |
| folder | — | — | Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`). |
| id | string | yes | A 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… |
| query | string | — | Metric query DSL string, e.g. `sum(purchase, amount)`. The alternative to `query_ir`. Every label the query references — in filters, the value position, `by (…)`, or `without (…)` — must exist as a p… |
| query_ir | object | — | Typed query IR — the structured alternative to the `query` DSL string. Exactly one of `query` / `query_ir` is supplied per metric body. |
| unit | — | — | Display unit (e.g. `ms`, `%`, `$`), or `null` when unitless. |
| winsorize_pct | integer | — | Winsorise percentile (1–99) to clamp outliers. Defaults to 99. |
No output schema declared.
No examples provided.
ops_ack ~262
Ack an item (start a run). Acknowledge a queue item — a person or an AI agent declaring "I'm on this now". Opens a run: stamps who picked the item up and when, assigns them as owner, and moves the item into the matching working status (`investigating_by_ai` for an AI ack, `in_progress` for a human one).…
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | — | The AI agent type acking on the item's behalf — pass your own type when you are a coding agent (Claude Code passes `claude`, Cursor `cursor`, Copilot `copilot`, Jules/Gemini `jules`). Omit entirely f… |
| handle | string | yes | A 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… |
| sessionId | string | — | The agent-run session id (e.g. Claude's `session_01…`), so the dashboard can deep-link to the exact run page. Omit when the harness has no session id. |
No output schema declared.
No examples provided.
ops_agents_list ~56
List connected AI agents. The project's connected AI agents — one per authenticated trigger connector (Claude / Cursor / Copilot / Jules). These are the agent types `ops ack` accepts and the agents a queue item can be assigned to.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ops_alerts_archive ~119
Delete an alert rule. Deletes the alert rule. The cron stops evaluating it immediately. Use this (then create a new rule) to repoint alerting at a different metric, since `metricId` is immutable.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | A 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.
ops_alerts_channels ~31
List Slack channels. List the project's connected Slack channels — used to resolve an alert rule's notification target.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
ops_alerts_create ~269
Create an alert rule. Creates a metric-threshold alert rule. `name`, `metricId`, `comparator`, and `threshold` are required; `windowHours` defaults to `24`, `severity` to `warn`, and `enabled` to `true`.
| Name | Type | Req | Description |
|---|---|---|---|
| comparator | string | yes | How the metric value is compared to the threshold (gt/gte/lt/lte). |
| enabled | boolean | — | Whether the rule is evaluated by the cron. |
| listToken | string | — | REQUIRED. The `listToken` returned by the most recent `ops_alerts_list` call. It proves you listed existing ops alerts and confirmed this one doesn't already exist before creating it. Call `ops_alert… |
| metricId | string | yes | Id of the metric to evaluate. |
| name | string | yes | Human label for the rule, shown on the alert and the rules list. |
| notify | — | — | Delivery target for a notification; `null` = use the project default. |
| severity | string | — | Severity of the raised alert. |
| threshold | number | yes | Threshold the metric value is compared against. |
| windowHours | integer | — | Lookback window (hours) the metric is aggregated over. 1–720. |
No output schema declared.
No examples provided.
ops_alerts_list ~113
List alert rules. Returns every alert rule in the project (not paginated). Each rule carries its bound `metricId`, the denormalised `metricName` (or `null` if the metric was removed), the comparator/threshold/window, severity, enabled flag, and delivery target.
| Name | Type | Req | Description |
|---|---|---|---|
| q | string | — | 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.
ops_alerts_update ~201
Update an alert rule. Partial update of a rule's tunable knobs. `metricId` is immutable — the metric also pins the aggregation, so a body carrying `metricId` is rejected with `409 IMMUTABLE_FIELD`; create a new rule bound to the other metric instead (rule deletion is dashboard-only).
| Name | Type | Req | Description |
|---|---|---|---|
| comparator | string | — | — |
| enabled | boolean | — | — |
| id | string | yes | A 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… |
| name | string | — | — |
| notify | — | — | Delivery target for a notification; `null` = use the project default. |
| severity | string | — | — |
| threshold | number | — | — |
| windowHours | integer | — | — |
No output schema declared.
No examples provided.
ops_bug ~385
File a bug report.. Files one queue item — a bug report or a feature request — and fires the project's connectors (GitHub issue / Slack). `type` selects which; only the two user-fileable types are accepted (`error`/`alert` tickets are auto-filed by the platform). Returns the new id and per-projec…
| Name | Type | Req | Description |
|---|---|---|---|
| actualResult | string | — | What actually happened. |
| assigneeId | — | — | The `users.id` of the person to assign as owner at creation, or `null`. |
| context | — | — | Arbitrary capture context, or `null`. |
| expectedResult | string | — | What was expected instead. |
| listToken | string | — | REQUIRED. The `listToken` returned by the most recent `ops_list` call. It proves you listed existing ops and confirmed this one doesn't already exist before creating it. Call `ops_list` first if you… |
| notify | — | — | Where this bug's completion notification lands. |
| pageUrl | — | — | URL of the page the bug relates to, or `null`. |
| priority | — | — | Initial triage priority, or `null`. |
| reporterEmail | — | — | Email of the reporter, or `null`. |
| status | — | — | Initial lifecycle status; defaults to `open` when omitted. |
| stepsToReproduce | string | — | How to reproduce the bug. |
| subscribers | array | — | Emails of teammates to subscribe to this item's Slack pings at creation. |
| tags | array | — | Tag names to attach at creation (get-or-created by name, deduped case-insensitively). |
| title | string | yes | One-line bug title (no leading/trailing whitespace). |
| userAgent | — | — | Reporter's user-agent string, or `null`. |
| viewport | — | — | Reporter's viewport (e.g. `1280x720`), or `null`. |
No output schema declared.
No examples provided.
ops_comments_create ~283
Comment on an item. Append a comment to a queue item's thread. The body is markdown (mentions like `@teammate` notify that person; `@shipeasy` asks Jarvis, the AI agent, to reply). Pass `parentId` to reply under an existing top-level comment (one level of threading — a reply to a reply attaches t…
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The comment body as markdown. Mentions (`@teammate`, `@shipeasy`) are parsed from it. |
| handle | string | yes | A 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… |
| listToken | string | — | REQUIRED. The `listToken` returned by the most recent `ops_comments_list` call. It proves you listed existing ops comments and confirmed this one doesn't already exist before creating it. Call `ops_c… |
| parentId | — | — | Reply under this top-level comment. Omit / `null` for a top-level comment. Replying to a reply attaches to the same top-level parent (threading is one level deep). |
No output schema declared.
No examples provided.
ops_comments_list ~139
List an item's comments. List the comment thread on a queue item, oldest first. Each comment carries its author (a teammate email, or `system` for a comment authored by Jarvis — the AI agent), its markdown body, and `parentId` for the single level of threaded replies. Removed comments are omitted.
| Name | Type | Req | Description |
|---|---|---|---|
| handle | string | yes | A 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.
ops_create ~434
File a queue item (bug or feature request) — pass --type.. Files one queue item — a bug report or a feature request — and fires the project's connectors (GitHub issue / Slack). `type` selects which; only the two user-fileable types are accepted (`error`/`alert` tickets are auto-filed by the platform). Returns the new id and per-projec…
| Name | Type | Req | Description |
|---|---|---|---|
| actualResult | string | — | What actually happened. |
| assigneeId | — | — | The `users.id` of the person to assign as owner at creation, or `null`. |
| context | — | — | Arbitrary capture context, or `null`. |
| description | string | — | What the feature is. |
| expectedResult | string | — | What was expected instead. |
| listToken | string | — | REQUIRED. The `listToken` returned by the most recent `ops_list` call. It proves you listed existing ops and confirmed this one doesn't already exist before creating it. Call `ops_list` first if you… |
| notify | — | — | Where this bug's completion notification lands. |
| pageUrl | — | — | URL of the page the bug relates to, or `null`. |
| priority | — | — | Initial triage priority, or `null`. |
| reporterEmail | — | — | Email of the reporter, or `null`. |
| status | — | — | Initial lifecycle status; defaults to `open` when omitted. |
| stepsToReproduce | string | — | How to reproduce the bug. |
| subscribers | array | — | Emails of teammates to subscribe to this item's Slack pings at creation. |
| tags | array | — | Tag names to attach at creation (get-or-created by name, deduped case-insensitively). |
| title | string | yes | One-line bug title (no leading/trailing whitespace). |
| type | string | yes | Discriminator — files a bug. |
| useCase | string | — | Why it's needed / the use case. |
| userAgent | — | — | Reporter's user-agent string, or `null`. |
| viewport | — | — | Reporter's viewport (e.g. `1280x720`), or `null`. |
No output schema declared.
No examples provided.
ops_feature ~352
File a feature request.. Files one queue item — a bug report or a feature request — and fires the project's connectors (GitHub issue / Slack). `type` selects which; only the two user-fileable types are accepted (`error`/`alert` tickets are auto-filed by the platform). Returns the new id and per-projec…
| Name | Type | Req | Description |
|---|---|---|---|
| assigneeId | — | — | The `users.id` of the person to assign as owner at creation, or `null`. |
| context | — | — | Arbitrary capture context, or `null`. |
| description | string | — | What the feature is. |
| listToken | string | — | REQUIRED. The `listToken` returned by the most recent `ops_list` call. It proves you listed existing ops and confirmed this one doesn't already exist before creating it. Call `ops_list` first if you… |
| notify | — | — | Where this request's completion notification lands. |
| pageUrl | — | — | URL of the page the request relates to, or `null`. |
| priority | — | — | Initial triage priority, or `null`. |
| reporterEmail | — | — | Email of the reporter, or `null`. |
| status | — | — | Initial lifecycle status; defaults to `open` when omitted. |
| subscribers | array | — | Emails of teammates to subscribe to this item's Slack pings at creation. |
| tags | array | — | Tag names to attach at creation (get-or-created by name, deduped case-insensitively). |
| title | string | yes | One-line feature-request title (no leading/trailing whitespace). |
| useCase | string | — | Why it's needed / the use case. |
| userAgent | — | — | Reporter's user-agent string, or `null`. |
No output schema declared.
No examples provided.
ops_fired_alerts_list ~98
List fired alerts. Returns the project's FIRED alerts as a **bare JSON array** (no pagination envelope), ordered by `createdAt desc`. Defaults to the currently-firing ones (`status=active`); pass a `status` to widen to resolved/dismissed history or `all`.
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | — | Filter by lifecycle state. Defaults to `active` (currently firing); `all` returns every status. |
No output schema declared.
No examples provided.
ops_fired_alerts_update ~241
Update a fired alert. Triage writes on one fired alert — the only mutations this surface allows. All body fields are optional (at least one required); only the fields present are changed.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | — | — | AGENT owner — a connected trigger connector's id (`connectors.id`), the built-in `"jarvis"` (Enterprise plan only — rejected with `403` otherwise), or `null` to clear. Stored in `assigneeConnectorId`… |
| assigneeId | — | — | PERSON owner — a `users.id`, or `null` to clear the assignment. |
| id | string | yes | A 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… |
| status | string | — | New lifecycle state. `resolved` / `dismissed` stamp their timestamp; `active` re-opens and clears both. |
No output schema declared.
No examples provided.
ops_get ~94
Get one queue item. Fetch a single queue item by its per-project `number` or full id.
| Name | Type | Req | Description |
|---|---|---|---|
| handle | string | yes | A 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.