MCP server reference

@stepskit/mcp is the StepsKit MCP server, published on npm. It runs locally inside your MCP client (Claude Code, Cursor, Codex, Claude Desktop, VS Code, and others) and talks to the StepsKit API with a StepsKit access token — either pinned to one project or scoped to your whole account. Through it, your agent can install the embed and author tours, tooltips, NPS surveys, and announcements from your codebase.

This page documents the package itself. For per-client setup steps, see Connect your agent; for what you can and can't ask it to do, see Capabilities & limits.

Running it

The server is always started the same way, regardless of client:

npx -y @stepskit/mcp

Your MCP client launches this command and communicates over stdio — you never run it by hand. A minimal config (the mcpServers JSON shape most clients use):

{
  "mcpServers": {
    "stepskit": {
      "command": "npx",
      "args": ["-y", "@stepskit/mcp"],
      "env": { "STEPSKIT_TOKEN": "sk_live_..." }
    }
  }
}

If that file is going into git, use the form that references the token instead of holding it — the mechanism is per-client, so copy yours from Connect your agent.

Environment variables

VariableRequiredDescription
STEPSKIT_TOKENYesAccess token (sk_live_...). Mint a project-scoped one on a project's AI page, or an account-scoped one under Account settings, in the dashboard.
STEPSKIT_PROJECTNoDefault project for an account-scoped token — a project slug or id. Ignored by a project-scoped token, which is pinned by the credential.
STEPSKIT_API_URLNoAPI base URL. Defaults to https://stepskit.com.

--project <slug-or-id> in the server's args does the same job as STEPSKIT_PROJECT and outranks it. Prefer the arg if you export environment variables globally: an exported variable follows you into every repo, while an arg belongs to one server entry. Full precedence rules are on Connect your agent.

Tools

Every tool carries a full JSON schema, and get_capabilities returns the authoritative can/can't list — so your agent always knows the current surface without relying on docs.

Projects

ToolWhat it does
list_projectsLists the projects the token can reach, marks the selected one, and reports whether the token is pinned to a project or spans the account.
select_projectSwitches which project subsequent calls act on, for the rest of the session. Takes a slug or id; refuses on a project-scoped token, which can't switch.

Most project-level tools also take an optional project argument (slug or id) that overrides the selection for that one call: get_integration_status, verify_integration, add_allowed_domain, get_project_theme, update_project_theme, create_tour, list_tours, list_tooltips, list_surveys, and list_announcements.

Setup & integration

ToolWhat it does
get_integration_statusCall first — returns onboarding state (embed installed?, allowed domains, tour count) plus a ready-to-paste install snippet.
verify_integrationConfirms the embed has actually pinged StepsKit after install.
add_allowed_domainWhitelists a production domain so experiences play there (localhost is always allowed).
suggest_url_patternTurns a concrete URL into a wildcard url_pattern for dynamic routes (/items/123/edit/items/*/edit).
get_capabilitiesLists what the MCP can and can't do right now.

Tours

ToolWhat it does
create_tourAuthors a complete tour (settings, visibility, theme, ordered steps) in one call — always as an unpublished draft.
list_toursLists the project's tours.
get_tourReads one tour's full editable state — settings, visibility, theme, and steps with ids.
update_tour_configRenames a tour and edits behavior settings (buttons, labels, progress, keyboard, overlay-click, completion redirect).
update_tour_visibilitySets targeting, page URL pattern, minimum screen width, show-once frequency, and trigger. Sent complete — replaces, not merges.
update_tour_themeOverrides one tour's theme (colors / overlay / progress / highlight). Merged; the rest inherits the project's tours theme.

Steps

ToolWhat it does
add_stepAdds a callout (anchored to a CSS selector) or modal step.
update_stepEdits a step's content and behavior. Keeps the step id and its analytics — prefer over delete + add.
delete_stepRemoves a step. Destructive — requires confirm: true.
reorder_stepsReorders a tour's steps.

Tooltips

ToolWhat it does
create_tooltipCreates an unpublished tooltip — anchor selector, indicator style (?/info glyph, dot/pulse, or NEW/BETA badge), popover content, open trigger, optional CTA.
list_tooltips / get_tooltipFind and read a tooltip's full editable state.
update_tooltipEdits content, indicator, CTA, visibility, or per-tooltip theme.
delete_tooltipRemoves a tooltip. Destructive — requires confirm: true.

NPS surveys

ToolWhat it does
create_surveyCreates an unpublished bottom-corner NPS survey — question, rating scale (0–10, 1–5, or emoji), follow-up, thank-you, re-survey window.
list_surveys / get_surveyFind and read a survey's full editable state.
update_surveyEdits question, scale, labels, position, visibility, or card theme.

Announcements

ToolWhat it does
create_announcementCreates an unpublished top/bottom banner — title, body, optional CTA and icon, optional schedule window (start_at / end_at).
list_announcements / get_announcementFind and read an announcement's full editable state.
update_announcementEdits content, CTA, icon, position, schedule, visibility, or banner theme.
delete_announcementRemoves an announcement. Destructive — requires confirm: true.

Project themes

ToolWhat it does
get_project_themeReads all four project-wide default themes — tours, tooltips, announcement banners, and survey cards — raw and resolved.
update_project_themeSets ONE project-wide default, picked with surface (tours — the default — tooltips, announcements, or surveys). Merged; reset restores that surface's built-in defaults.

Guardrails

The agent composes the plan; the server validates it and persists it. By design:

  • It never publishes. Everything it creates arrives unpublished — publishing is a deliberate human action in the dashboard.
  • Destructive operations require confirm: truedelete_step, delete_tooltip, and delete_announcement refuse to run without it.
  • No media uploads and no analytics reads — those stay in the dashboard.

Token security

A token is a long-lived credential, in one of two scopes:

  • Project-scoped — minted on a project's AI page and pinned to that project. The smallest blast radius if it leaks.
  • Account-scoped — minted under Account settings, and able to reach every project you own. One token per machine instead of one per repo; the tradeoff is that a leak exposes all of them.

Either way:

  • Keep the literal token out of committed files. The dashboard emits config that references the token instead of containing it — ${STEPSKIT_TOKEN} for Claude Code and Claude Desktop, an inputs prompt for VS Code, env_vars for Codex — so the config file is safe to commit. The mechanisms aren't interchangeable and the wrong one fails silently, so copy the form for your client from Connect your agent. Where a client documents no such mechanism (Cursor), gitignore the file instead.
  • Tokens are prefixed sk_live_ so secret scanners recognize a leak.
  • Tokens are stored hashed — they're shown once at mint time and can't be recovered, only replaced.
  • Revoke a token any time: project tokens from that project's AI page, account tokens from Account settings, which lists every token you own and its scope. A revoked token stops working immediately.

Source & issues

The package source lives at github.com/nikitabobers/stepskit-mcp (MIT licensed) and is synced from the StepsKit monorepo on every release. Issues and bug reports are welcome there.