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

invoker-mcp

v0.3.2

Published

Invoker — deploy sites and apps to live URLs from Claude

Readme

invoker-mcp

Deploy forms and sites to live URLs directly from Claude conversations.

Install

Add to your Claude config (claude_desktop_config.json):

{
  "mcpServers": {
    "invoker": {
      "command": "npx",
      "args": ["-y", "invoker-mcp"]
    }
  }
}

Requires Node.js 18+.

Tools

| Tool | Description | Annotations | |------|-------------|-------------| | login | Sign in via browser-based email verification | write, open-world | | logout | Sign out and clear stored credentials | write | | whoami | Show the currently authenticated user | read-only | | gather_requirements | Get structured questions to ask before building | read-only | | list_blocks | List composable page blocks (hero, pricing, etc.) | read-only | | list_styles | List visual style presets (colors, fonts, spacing) | read-only | | compose_page | Assemble a full page from blocks + style preset | read-only | | list_templates | List available deployment templates | read-only | | use_template | Get full HTML source of a template for customization | read-only | | deploy | Deploy HTML to a preview URL for review | write, open-world | | publish | Publish a preview to its live production URL | write, open-world | | update | Update an existing deployment via preview | write, idempotent, open-world | | teardown | Delete a deployment | destructive, open-world | | get_status | Get deployment status, URL, and submission count | read-only, open-world | | get_submissions | Retrieve form submissions for a deployment | read-only, open-world | | configure_webhook | Add a webhook (generic JSON or Slack format) | write, open-world | | list_webhooks | List webhooks for a deployment | read-only, open-world | | delete_webhook | Remove a webhook | destructive, open-world |

How it works

  1. Run the login tool to authenticate via email OTP
  2. Ask Claude to build you a page (using blocks + styles, a template, or custom HTML)
  3. Claude deploys a preview for you to review before anything goes live
  4. You approve the preview, and Claude calls publish to make it live
  5. Form submissions are captured automatically and retrievable via get_submissions

Every deployment gets a unique subdomain: your-slug.invoker.page

The preview flow

gather_requirements → build page → deploy (preview) → user reviews → publish (live)

Nothing goes live without your approval. The deploy and update tools create temporary preview URLs that expire after 1 hour. Preview pages show an orange "Preview Mode" banner and have forms disabled. Once you confirm, publish promotes the preview to production.

Page composition

Invoker includes a composable block library with 16 pre-built sections and 5 style presets:

Blocks: hero (centered, split), navbar, feature grid, pricing table, testimonials, FAQ accordion, CTA banner, stats row, contact form, waitlist form, countdown timer, image gallery, team grid, footer (simple, full)

Styles: Dark Minimal, Gradient Bold, Clean Corporate, Playful, Elegant

list_styles → list_blocks → compose_page → deploy → publish

Claude picks a style, selects blocks, customizes content with your input, and assembles a complete HTML page.

Examples

Example 1: Deploy a landing page with blocks

You: "Deploy a landing page for my SaaS called Beacon. Use a dark theme."

Claude will:

  1. Use gather_requirements to ask about key features, pricing, etc. (if needed)
  2. Use list_styles and pick "dark-minimal"
  3. Use compose_page with hero, features, pricing, CTA, and footer blocks
  4. Use deploy to create a preview
  5. Share the preview URL for your review
  6. After approval, use publish to go live

Result: Live page at beacon.invoker.page with a professional dark-themed landing page.

Example 2: Deploy a waitlist with a template

You: "Deploy a waitlist page for my new app called Acme. Use a dark theme with a gradient."

Claude will:

  1. Use login to authenticate (first time only)
  2. Use use_template to get the waitlist template
  3. Customize the HTML with your branding
  4. Use deploy to create a preview
  5. After your review, use publish to go live

Result: Live page at acme.invoker.page capturing email signups.

Example 3: Check submissions and set up Slack notifications

You: "How many people signed up on my Acme waitlist? Also set up a Slack webhook so I get notified of new signups."

Claude will:

  1. Use get_submissions to retrieve all form entries
  2. Summarize the data (e.g., "47 signups so far, 12 this week")
  3. Use configure_webhook with type "slack" and your Slack webhook URL

Result: You see a summary of all signups, and future submissions are posted to your Slack channel.

Example 4: Update a deployment

You: "Update my Acme waitlist to say we're launching next month. Also show me the current status."

Claude will:

  1. Use get_status to show current deployment info and submission count
  2. Modify the HTML copy
  3. Use update to create a preview of the changes
  4. Share the preview for your review
  5. After approval, use publish to apply the update

Result: The page at acme.invoker.page is updated with the new copy, after you've reviewed and approved.

Templates

  • Waitlist / Coming Soon - Email capture with gradient background and social proof
  • Contact / Lead Gen - Multi-field form with validation and success state

Use {{SUBMIT_URL}} as the form action in your HTML -- it gets replaced with the real submission endpoint at publish time.

Dashboard

Manage your deployments, view submissions, and configure webhooks at invoker.page/dashboard.

Privacy Policy

See our full privacy policy at invoker.page/privacy.

We collect your email for authentication, store HTML content you deploy, and capture form submissions (including submitter IP addresses) on your behalf. We do not sell personal information. See the privacy policy for full details.

Support