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

@facelessad/mcp

v2.4.0

Published

FacelessAd as MCP tools — let your AI assistant create faceless video ads (Claude Desktop, Claude Code, Cursor, Windsurf, OpenClaw).

Readme

@facelessad/mcp

FacelessAd as MCP tools — let your AI assistant create faceless video ads.

Works with any MCP-speaking harness: Claude Desktop, Claude Code, Cursor, Windsurf, OpenClaw. Twelve tools, each a single call to the FacelessAd API; the tool/style registry lives on the server, so new tools and styles are available the day they ship without updating this package.

Setup (Claude Desktop)

claude_desktop_config.json:

{
  "mcpServers": {
    "facelessad": {
      "command": "npx",
      "args": ["-y", "@facelessad/mcp"],
      "env": { "FACELESSAD_API_KEY": "fa_live_..." }
    }
  }
}

Create a key at https://facelessad.com/developers. OpenClaw users: add the same block under openclaw mcp config and verify with openclaw mcp doctor --probe.

Needs Node 18 or newer. If your harness pins the MCP SDK, it has to be 1.23.0 or newer — that is the first version whose schema conversion understands zod 4, and an older one silently registers the tools with no parameters at all.

There is also a hosted version that needs no install: add https://facelessad.com/mcp as a custom connector in Claude and authorise it with your account. Same thirteen tools, same fields.

Tools

| Tool | What it does | |------|--------------| | facelessad_list_tools | Registry: tools, styles, structures, hooks, durations | | facelessad_create_video | Create an ad; returns an id immediately | | facelessad_get_video | Status + download URL when done | | facelessad_list_videos | Your videos, newest first | | facelessad_estimate | Upper-bound credit cost without creating | | facelessad_balance | Plan + credits | | facelessad_list_brand_kits | Your brands and their ids (for brand_kit_id) | | facelessad_voices | Curated voice pool | | facelessad_list_parts | The parts of a finished video and how each is fixed | | facelessad_regenerate_part | Redo ONE part (clip, image card, graphics block, or a bg-N AI photo background) | | facelessad_regenerate_video | Rebuild the whole video as a new id | | facelessad_render_settings | Re-render a finished video with new caption/audio settings |

Ask for a look of your own and the assistant sends style: "custom" plus custom_stylefacelessad_list_tools marks which tools accept it (supports.customStyle). Product Showcase also takes custom_graphics_style for the text layer drawn over the product video.

Videos build in the background (3–10 min); the assistant polls facelessad_get_video. You are only charged for steps that succeed.

2.4.0 — quality

facelessad_create_video takes quality: "highest" on motion-graphics and saas-ui-ad: after the graphics are rendered, an AI reviewer watches the preview for text cut off at the edges, arrows and pointers aimed at the wrong thing, and motion glitches. Up to three graphics blocks are fixed and the result is verified before the final render. Flat extra price with the fixes included (facelessad_list_toolsquality_review.credits); facelessad_get_video reports the findings under qualityReview. An error on other tools, never ignored.

2.3.0 — visual_direction_refine

facelessad_create_video takes visual_direction_refine on animated-ad and music-video: a preset id (metaphoric, realistic, dramatic, calm, playful, dark, bright, magicalfacelessad_list_tools returns them under visual_direction_refine.presets) or your own instruction up to 300 characters. It reshapes how the visual story is told, not how it looks, and is applied on top of visual_direction if given, otherwise on the generated one. Free of charge; an error on other tools, never ignored.

layout (same two tools) picks the card layout — A, HA, AC, HAC, AIA, HAIA, AIAC, HAIAC. Hook and CTA cards you chose always stay; the data card is dropped when the video is too short, and the response says so (layout.applied, layout.notice). facelessad_list_tools lists them.

1.2.0 — text files as materials + agent skill

The package now ships SKILL.md — the same agent skill as @facelessad/cli — so MCP-less agents can operate FacelessAd through the CLI, and MCP users have a reference of every operation in one file.

materials accepts two new fields on facelessad_create_video and facelessad_estimate:

  • text_url — a direct link to a raw text file (GitHub raw README, gist, docs export). The server fetches it as-is; use landing_page_url for HTML pages instead.
  • file_id — the id of a text file uploaded earlier with POST /api/v1/files (kept 90 days, private to the account).

Long text is no longer silently cut at ~8000 characters: it is condensed server-side in a way that keeps the material's own details, numbers and voice, so a README and a blog post still produce different videos. The hard ceiling is 200 000 characters (materials_too_long). Paste whole release notes, a blog post, or product JSON straight into text.

1.1.0 – 1.1.1

A look of your own. custom_style (with style: "custom") is the field that actually changes how the video looks; custom_graphics_style styles the text layer Product Showcase draws over the product video, and custom_style_refine: false uses your text verbatim so a campaign keeps one look. facelessad_get_video returns the expanded text as customStyle for exactly that.

SaaS UI Ad takes screenshot_urls — public https URLs of your app's screens. They are decomposed with vision and rebuilt as an animated demo, which is what the tool is for; without them the ad is built from the written description alone. How many fit depends on the length (screenshots.max in facelessad_list_tools): 1 short, 3 medium, 4 long.

Character does dialogue. speakers: 2 makes it a conversation between two characters, and the ad structure has to match — facelessad_list_tools returns speakerStructures.one and .two, and a mismatch is rejected rather than quietly built as a one-voice video. voice_right is the second speaker's voice; omit it and a distinct one is picked automatically.

brand_kit_id picks which brand to use on a multi-brand account instead of always taking the account default (facelessad_list_brand_kits).

1.0.1

Seven tool-specific fields were reachable through the HTTP API but missing from this package's schema, and the MCP SDK strips unknown keys — so an assistant could not use them at all: product_image_urls (extra product angles) and, for Video Banner, texts, text_mode, background_image_url, badge_image_url, badge and photo_query. The schema now mirrors the hosted connector at /mcp field for field.