MCP

Faceless ships a Model Context Protocol (MCP) server so agent runtimes (Claude, Claude Code, Claude Desktop, Cursor and any other MCP client) can call the API as tools. There are two ways to connect: the remote server over streamable HTTP, or a local stdio server. The remote server accepts OAuth (sign in with your Faceless account, no key handling) or an API key from your team settings at https://faceless.so/team; the local server needs an API key.

Connect Claude (claude.ai and the Claude apps)

The fastest path for Claude users is a custom connector. No install, no API key: you sign in with your Faceless account and approve exactly the permissions you want. The same steps, with a copy button and a live "Connected" status, are in the app under Team settings > Claude & API (https://faceless.so/team?section=api).

  1. In Claude, open Customize > Connectors and click Add custom connector.
  2. Name it Faceless, enter https://faceless.so/api/v1/mcp and click Add. If Claude asks how to sign in, choose Sign in now and Register automatically.
  3. Click Connect. Claude opens the Faceless consent screen: sign in, pick the team to connect, untick any permissions you do not want to grant, and click Authorize.
  4. In a chat, click + > Connectors and turn on Faceless. Try: "Check my Faceless credits" or "Make a faceless video about deep sea creatures and post it to my YouTube".

Works on every Claude plan (the Free plan allows one custom connector). On Team and Enterprise plans an Owner adds the connector first in Organization settings > Connectors, then each member clicks Connect. Videos made from Claude use your team's credits, the same as in the app; when they run out, the tool error links to https://faceless.so/billing?tab=credits. Disconnect anytime from Team settings > Claude & API.

Faceless in the Claude directory

The Faceless connector listed in Claude's connector directory uses https://faceless.so/api/v1/mcp/claude. It signs in the same way (OAuth, you pick the team and permissions) and carries the tools for managing, rendering and publishing the videos you already have in Faceless:

  • faceless_get_me: the connected team, plan and credit balance
  • faceless_list_videos, faceless_get_video, faceless_get_video_status: your videos and where each one stands
  • faceless_update_video, faceless_select_video_thumbnail: per-platform titles, captions and descriptions, and which thumbnail a video uses
  • faceless_render_video, faceless_get_render: render a finished video to MP4 and follow the render
  • faceless_list_accounts, faceless_publish_post, faceless_schedule_post, faceless_post_now, faceless_cancel_post, faceless_get_calendar: post now, schedule, bring a scheduled post forward, cancel and see what is queued
  • faceless_list_series, faceless_get_series, faceless_list_series_episodes: your automated series and their episodes
  • faceless_get_analytics: views, likes, comments and posting volume across platforms

Making new videos and buying credits are not part of this connector; do those in the Faceless app at https://faceless.so.

Try: "List my Faceless videos from this week", "Schedule my latest Faceless video to YouTube and TikTok for 6pm tomorrow" or "How did my Faceless posts do on TikTok over the last 30 days?".

Troubleshooting: a forbidden_scope error means the permission was unticked at sign-in, so disconnect and reconnect the connector and keep it ticked. A schedule_post rejection usually means the platform's post metadata is missing; set it with faceless_update_video first. Publishing needs the platform connected in Faceless (check with faceless_list_accounts). Anything else: [email protected].

Remote server (nothing to install)

The remote server lives at https://faceless.so/api/v1/mcp and speaks the streamable HTTP transport. Authenticate with the same Authorization header as the REST API.

Claude Code:

bash
claude mcp add --transport http faceless https://faceless.so/api/v1/mcp \
  --header "Authorization: Bearer fl_live_..."

Any MCP client that supports streamable HTTP works the same way: point it at the URL and send Authorization: Bearer fl_live_... with every request.

Local server (stdio)

For clients that only speak stdio, run the server locally. Two equivalent ways: npx -y faceless-mcp, or faceless mcp if the CLI is installed. Both read the key from the FACELESS_API_KEY environment variable.

Claude Code:

bash
claude mcp add faceless --env FACELESS_API_KEY=fl_live_... -- npx -y faceless-mcp

Claude Desktop (Settings > Developer > Edit Config, claude_desktop_config.json):

json
{
	"mcpServers": {
		"faceless": {
			"command": "npx",
			"args": ["-y", "faceless-mcp"],
			"env": { "FACELESS_API_KEY": "fl_live_..." }
		}
	}
}

Cursor (.cursor/mcp.json in your project, or the global ~/.cursor/mcp.json):

json
{
	"mcpServers": {
		"faceless": {
			"command": "npx",
			"args": ["-y", "faceless-mcp"],
			"env": { "FACELESS_API_KEY": "fl_live_..." }
		}
	}
}

Use the remote server when you want zero install and always-current tools; use the local one when your client only speaks stdio or your network policy prefers a locally spawned process.

Tools

All 32 API operations with an MCP tool are exposed as tools named faceless_*, and each respects the key's scopes (a missing scope surfaces as a forbidden_scope error). The core ones an agent reaches for:

  • faceless_get_me, faceless_get_credits: identity, scopes and budget
  • faceless_list_voices, faceless_list_options: catalogs to choose voices, styles and models
  • faceless_create_video, faceless_get_video_status, faceless_render_video, faceless_get_render: the create, poll, render, poll lifecycle
  • faceless_create_caption_video: caption existing footage
  • faceless_update_video, faceless_publish_post, faceless_schedule_post, faceless_post_now, faceless_cancel_post, faceless_get_calendar: publishing and scheduling
  • faceless_create_series, faceless_list_series, faceless_get_series, faceless_update_series, faceless_delete_series, faceless_generate_series_episode, faceless_list_series_episodes: automated series
  • faceless_list_fast_track, faceless_buy_fast_track_video: Fast Track, the quickest way to a video (pick a type, a category and a script; 10 credits)
  • faceless_list_videos, faceless_get_video, faceless_delete_video, faceless_list_accounts, faceless_create_asset, faceless_get_analytics: the rest of the surface

Mutating tools accept an optional idempotencyKey argument with the same semantics as the REST Idempotency-Key header: retries with the same key and arguments replay the stored result instead of re-running (and re-charging). Pass one when a tool call might be retried.

Tool results use the same envelope and error types as the REST API; see errors and rate limits. Rate limits also apply per key, so a busy agent should back off on rate_limited.

  • Prefer commands over tools? The CLI covers the same surface.
  • Claude Code plugin (skill + MCP server in one install): /plugin marketplace add Side-Products/faceless-claude-plugin then /plugin install faceless@faceless.
  • A packaged Claude Skill with ready-made workflows: npx skills add Side-Products/faceless-skill (https://github.com/Side-Products/faceless-skill).
  • The machine-readable surface: https://faceless.so/llms.txt and https://faceless.so/api/v1/openapi.json.