npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@xenia-martech/mcp

v1.0.0

Published

Connect your Xenia account to any AI coding assistant — journeys, trigger ids, content keys, and SDK setup over MCP

Readme

@xenia-martech/mcp

npm version npm downloads node license

Connect your Xenia account to any AI coding assistant. Your assistant reads your real journeys — trigger ids, request shapes, personalization content keys — and wires the Xenia SDK into your project against those real values instead of guessing.

Works with Claude Code, Cursor, GitHub Copilot (VS Code), Windsurf, OpenAI Codex CLI, and Gemini CLI.

you> connect my Xenia account
  Open  https://app.xenia.../device   Code  WXYZ-1234
[approve in the dashboard, pick a workspace]

you> wire the abandoned-cart journey into my checkout
  → reads the journey's real trigger id, method, and fields
  → detects your stack, writes .env, and edits your component

Install

Pick your assistant — each command registers the server via the assistant's own MCP config.

# Claude Code
claude mcp add xenia -- npx -y @xenia-martech/mcp

# Any assistant (writes the right config file for it)
npx @xenia-martech/mcp install --client cursor      # or: windsurf, copilot, codex, gemini, claude-code

Or add it by hand to your assistant's MCP config:

{
  "mcpServers": {
    "xenia": {
      "command": "npx",
      "args": ["-y", "@xenia-martech/mcp"]
    }
  }
}

Restart the assistant, then ask it to "connect my Xenia account".

Testing against a non-default engine (e.g. staging)? Add --base-url https://your-engine/xenia to the install command, or set XENIA_BASE_URL in the server's env.

Authentication

No API keys. Running connect my Xenia account opens a short code + URL; you approve it in the Xenia dashboard you are already signed in to, pick which org/tenant/environment to grant, and the assistant is connected. Works with SSO and MFA — no credential ever passes through the chat.

Every connected assistant is listed in the dashboard under API tokens → Connected assistants and can be disconnected there at any time.

Tools

| Tool | What it does | |---|---| | xenia_login / xenia_login_wait | Connect via browser approval | | xenia_status | Who is connected, and the active workspace | | xenia_list_scopes / xenia_select_scope | See and switch org / tenant / environment | | xenia_list_journeys | The journeys in the active workspace, each with its trigger(s) — flagged can't connect for a scheduler or a Shopify/HubSpot trigger whose connector isn't connected | | xenia_get_journey | Trigger id, method, request fields, content keys, and a stack-matched SDK snippet | | xenia_list_content_keys | Every personalization key, and which journeys resolve it | | xenia_detect_stack | Framework, SDK entry point, and which token type this project needs | | xenia_mint_sdk_token | Mint a token and write it to your env file | | xenia_verify | Read journeys, resolve a content key, optionally fire a test event | | xenia_logout | Revoke the session and forget the local credential |

Safety

  • No token value ever appears in a tool result. Minted SDK tokens are written straight to your env file; session tokens stay in ~/.xenia/credentials.json (mode 0600).
  • Setup always asks first. Before creating an SDK token, the assistant asks whether you want it minted now or created by you in the dashboard's API Tokens page — it never mints one unasked.
  • The SDK token type is derived from your project, not guessed — a server token stays server-side; a browser token is origin-restricted.
  • Writes against a production environment require explicit confirmation.

Release channels

npx @xenia-martech/mcp            # latest stable
npx @xenia-martech/mcp@rc         # release candidate
npx @xenia-martech/mcp@dev        # development preview

Requires Node 20+. MIT licensed.