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

@fil-technology/appmate-mcp

v0.15.0

Published

Model Context Protocol server for AppMate — lets Claude / Cursor / Codex drive your retention flows via API tokens.

Downloads

206

Readme

appmate-mcp

Model Context Protocol server for AppMate — lets Claude Desktop, Claude Code, Cursor, Codex, or any other MCP-aware client drive AppMate via typed tools. List apps, edit cancel flows, publish, export waitlists — without leaving the chat.

npx -y @fil-technology/appmate-mcp

Setup (1 minute)

  1. Issue a token at https://flow.appmate.cloud/admin/api-tokens. Copy the amk_… string — it's only shown once.
  2. Add the server to your MCP host's config (examples below).
  3. Restart the host and ask your agent: "list my appmate apps".

Claude Desktop / Claude Code

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (on macOS) or the equivalent on your platform:

{
  "mcpServers": {
    "appmate": {
      "command": "npx",
      "args": ["-y", "@fil-technology/appmate-mcp"],
      "env": {
        "APPMATE_TOKEN": "amk_…",
        "APPMATE_API_URL": "https://flow.appmate.cloud"
      }
    }
  }
}

Cursor / Codex (.mcp.json in your project)

{
  "mcpServers": {
    "appmate": {
      "command": "npx",
      "args": ["-y", "@fil-technology/appmate-mcp"],
      "env": { "APPMATE_TOKEN": "amk_…" }
    }
  }
}

APPMATE_API_URL defaults to https://flow.appmate.cloud. Override for staging or self-hosted instances.

Tools

| Tool | Purpose | | --- | --- | | list_apps | List every app the token can see. | | get_app | Fetch one app by id or slug. | | create_app | Create a new app. | | get_qr_code | Shareable QR-code image URLs (PNG + SVG) for any flow's public page, logo centred. | | list_flows | List an app's flows. cancel, waitlist + app_promotion can have multiple per app (a promotion per placement); others are one each. | | get_cancel_flow | Read published + draft cancel config (flowSlug → a secondary flow). | | update_cancel_draft | Replace the draft with new config JSON. | | publish_cancel_flow | Promote the draft live. | | get_waitlist_flow | Read published + draft waitlist config (flowSlug → a secondary waitlist). | | update_waitlist_draft | Replace the waitlist draft. | | publish_waitlist_flow | Promote the waitlist draft live. | | list_waitlist_signups | Paginated list (cursor + nextCursor). | | export_waitlist_csv | Return the full waitlist as a CSV string. | | get_feedback_flow | Read published + draft feedback config. | | update_feedback_draft | Replace the feedback draft. | | publish_feedback_flow | Promote the feedback draft live. | | list_feedback_submissions | Paginated list of feedback rows (rating + message + email). | | get_report_flow | Read published + draft report config. | | update_report_draft | Replace the report draft (categorised). | | publish_report_flow | Promote the report draft live. | | list_report_submissions | Paginated, optional category filter. | | get_crash_flow | Read published + draft crash flow config. | | update_crash_draft | Replace the crash draft (message + optional log/email fields). | | publish_crash_flow | Promote the crash draft live. | | list_crash_submissions | Paginated crash reports incl. diagnostics + text-log attachments; optional status filter. | | set_crash_report_status | Triage a crash report: new → reviewed → resolved. | | get_contact_flow | Read published + draft contact config. | | update_contact_draft | Replace the contact draft. | | publish_contact_flow | Promote the contact draft live. | | list_contact_submissions | Paginated list of contact rows (name + email + message). | | reply_to_contact_submission | Send a branded email reply to a contact submission (Reply-To = the app's support email / account email). Counts against the email quota. | | reply_to_report_submission | Send a branded email reply to a report submission (bug/abuse/spam). Same send path + quota as the contact reply. | | get_onboarding_flow | Read published + draft onboarding (web-to-app funnel) config. | | update_onboarding_draft | Replace the onboarding draft (quiz / info / email-capture steps + handoff). | | publish_onboarding_flow | Promote the onboarding draft live. | | list_onboarding_submissions | Paginated list of funnel completions (answers + email + claim status). | | export_onboarding_csv | Return all onboarding completions as a CSV string. | | get_referral_flow | Read published + draft referral program config. | | update_referral_draft | Replace the referral draft (rewards, share text, cap, landing). | | publish_referral_flow | Promote the referral draft live. | | list_referrals | Paginated referral graph (status, source [link or typed-code], referee, reward flags). | | export_referrals_csv | Return the full referral graph as a CSV string. | | get_link_page_flow | Read published + draft link-page (link-in-bio) config. | | update_link_page_draft | Replace the link-page draft (header, icon links, link list, theme). | | publish_link_page_flow | Promote the link-page draft live (appmate.cloud/p/{appSlug}). | | get_legal_flow | Read published + draft privacy-policy/terms config + public URLs. | | update_legal_draft | Replace the legal draft — structured facts (entity, processors, declarations, platform capabilities). Returns warnings. NOT legal advice. | | publish_legal_flow | Publish; stamps today's date, freezes the version, returns { privacy, terms } URLs. | | get_app_store_privacy_declaration | Derive the App Store "App Privacy" answers from the config; each entry names the processor that caused it. | | get_app_promotion_flow | Read published + draft cross-app promotion config (flowSlug → a specific placement). | | update_app_promotion_draft | Replace the promotion draft — which of your other apps to promote (single or rotating), presentation, installed/not-installed/deferred actions, targeting, frequency. | | publish_app_promotion_flow | Promote the promotion draft live (SDK present(placement) resolves it). | | list_short_links | Paginated list of the app's short links (code, shortUrl, destinations, state, clickCount). | | get_short_link | One link + click stats: real clicks, byTarget (ios/android/fallback/expired), topCountries, botClicks. | | create_short_link | Create a short link. Only url (the fallback) is required; code is optional and immutable after. | | update_short_link | Partial update — pass null to clear a field, resetClicks: true to zero the counter. | | delete_short_link | Permanently delete a link and its clicks (prefer status: 'disabled'). |

Short links live at go.appmate.cloud/{code} and need no publish step — they redirect the moment they exist. url is the fallback destination (always required); iosUrl / androidUrl are optional per-platform overrides. A link can expire by date (expiresAt), by click budget (maxClicks), both, or neither. Link-preview fetchers (Slack, WhatsApp, iMessage…) are recorded as botClicks — never counted as real clicks and never charged against the click limit.

Each referrer gets a unique link and a short, human-readable code (e.g. K7Q4-R9XP); a friend redeems by tapping the link or typing the code (no clipboard needed). source on each referral row records which path was used.

Cross-app promotions let a source app promote your other apps (single or rotating) at a named placement, shown via Apple's StoreKit in the iOS SDK (RetentionFlow.promotions.present("placement")). Destinations are referenced by their AppMate app id — their App Store id / universal-link base / named deep-link destinations live on the destination App itself, so you don't re-enter them. One promotion flow per placement (pass flowSlug).

Tools that accept an app reference (get_app, update_cancel_draft, etc.) accept either the cuid id or the human-readable slug — use whichever you have. The full REST shape is documented at https://docs.appmate.cloud/api-reference.

Example agent prompts

"Create an AppMate app called Ledgr with bundle id com.acme.ledgr, then publish a simple cancel flow that offers a 20% discount for the too_expensive reason."

"Export the waitlist for appmate-pro as CSV and save it to ~/Downloads/waitlist.csv."

"Build a 3-question onboarding funnel for ledgr that asks the user's goal, captures their email, and hands off to the App Store, then publish it."

"Compare the published and draft cancel configs for quakemate and tell me what changed."

Local development

pnpm install
pnpm dev    # tsx src/index.ts — talks MCP over stdio
pnpm build  # emits dist/index.js

Security

  • Tokens are bcrypt-hashed server-side and only shown once on creation.
  • Revoke from the dashboard the moment a token leaks.
  • All calls go over TLS to flow.appmate.cloud. No data sits on disk in the MCP process beyond what your MCP host logs.

License

MIT. See LICENSE.