Platform

Versioning and compatibility

How the SDK, CLI, MCP server, and React hooks version together, and how to check what an API speaks — generated from the source.

@myna-sh/sdk, @myna-sh/cli, @myna-sh/mcp, and @myna-sh/react are released in lockstep: they are published together, from the same commit, carrying the same version number. Installing matching versions of any two of them is therefore just a matter of installing the same number.

Package Version documented here
@myna-sh/sdk 0.17.0
@myna-sh/cli 0.17.0
@myna-sh/mcp 0.17.0
@myna-sh/react 0.17.0

This site documents the repository, not your install

These docs are generated from the source on every deploy, while npm receives tagged releases. A command or tool documented here can therefore be newer than the one you have installed. When something described here is missing locally, compare versions before assuming a bug:

myna --version
npm view @myna-sh/cli version

What the server speaks

The API declares its own compatibility at GET /v1/meta. It is public and unauthenticated, so a client can check before it holds credentials:

curl -s https://api.myna.sh/v1/meta
{
  "data": {
    "apiVersion": "2026-08-31",
    "minClientVersion": "0.16.0",
    "capabilities": [
      "assets",
      "assets.images",
      "assets.similar",
      "auth.whoami.scopes",
      "auth.passkeys",
      "auth.reauth",
      "billing",
      "change-sets",
      "change-sets.checks",
      "change-sets.checks.auto",
      "change-sets.checks.external",
      "change-sets.checks.policy",
      "change-sets.checks.settings-ui",
      "change-sets.checks.pending",
      "change-sets.actor-identity",
      "change-sets.comments",
      "change-sets.diff",
      "change-sets.diff.words",
      "change-sets.concurrent",
      "change-sets.rebase",
      "change-sets.ready-for-review",
      "change-sets.reviews",
      "change-sets.schedule",
      "entries.bulk",
      "entries.duplicate",
      "entries.import",
      "entries.import.upsert",
      "entries.reorder",
      "entries.references",
      "entries.search",
      "entries.restore",
      "entries.contention",
      "keys.collection-scope",
      "localization",
      "localization.filters",
      "localization.coverage",
      "mcp.hosted",
      "mcp.oauth",
      "plans.internal",
      "products",
      "keys.admin-all",
      "feedback",
      "feedback.boards",
      "feedback.ingest",
      "feedback.ingest.signed-identity",
      "feedback.identity.properties",
      "feedback.boards.require-identity",
      "feedback.keys.project-scope",
      "feedback.keys.rotate",
      "feedback.read-back",
      "feedback.reporters",
      "feedback.attachments",
      "feedback.similar",
      "feedback.retest",
      "analytics",
      "analytics.ingest",
      "analytics.content",
      "analytics.release-impact",
      "analytics.friction",
      "analytics.funnels",
      "analytics.catalog",
      "analytics.retention",
      "guidance",
      "releases",
      "releases.revert",
      "previews",
      "previews.overlay",
      "projects.cors-check",
      "projects.access-check",
      "projects.export",
      "projects.origins",
      "content.references",
      "github.app",
      "content.at",
      "projects.views",
      "schema.drift",
      "schema.promote",
      "schema.push",
      "webhooks",
      "webhooks.headers",
      "webhooks.body-template"
    ]
  }
}
Field Meaning
apiVersion Dated version of the HTTP surface. Changes when an observable request or response shape changes.
minClientVersion Oldest @myna-sh/* release this API supports. Below it, upgrade before filing a bug.
capabilities Features to branch on. Entries are added when a feature ships and removed only with an apiVersion bump.

Capabilities

Capability Available
assets yes
assets.images yes
assets.similar yes
auth.whoami.scopes yes
auth.passkeys yes
auth.reauth yes
billing yes
change-sets yes
change-sets.checks yes
change-sets.checks.auto yes
change-sets.checks.external yes
change-sets.checks.policy yes
change-sets.checks.settings-ui yes
change-sets.checks.pending yes
change-sets.actor-identity yes
change-sets.comments yes
change-sets.diff yes
change-sets.diff.words yes
change-sets.concurrent yes
change-sets.rebase yes
change-sets.ready-for-review yes
change-sets.reviews yes
change-sets.schedule yes
entries.bulk yes
entries.duplicate yes
entries.import yes
entries.import.upsert yes
entries.reorder yes
entries.references yes
entries.search yes
entries.restore yes
entries.contention yes
keys.collection-scope yes
localization yes
localization.filters yes
localization.coverage yes
mcp.hosted yes
mcp.oauth yes
plans.internal yes
products yes
keys.admin-all yes
feedback yes
feedback.boards yes
feedback.ingest yes
feedback.ingest.signed-identity yes
feedback.identity.properties yes
feedback.boards.require-identity yes
feedback.keys.project-scope yes
feedback.keys.rotate yes
feedback.read-back yes
feedback.reporters yes
feedback.attachments yes
feedback.similar yes
feedback.retest yes
analytics yes
analytics.ingest yes
analytics.content yes
analytics.release-impact yes
analytics.friction yes
analytics.funnels yes
analytics.catalog yes
analytics.retention yes
guidance yes
releases yes
releases.revert yes
previews yes
previews.overlay yes
projects.cors-check yes
projects.access-check yes
projects.export yes
projects.origins yes
content.references yes
github.app yes
content.at yes
projects.views yes
schema.drift yes
schema.promote yes
schema.push yes
webhooks yes
webhooks.headers yes
webhooks.body-template yes

Treat an absent capability as absent, not as an error: a client written against a newer API should degrade rather than fail when it talks to an older one.