AgentStack
SKILL verified MIT Self-run

Mcp Server

skill-prizmad-agent-skills-mcp-server · by prizmad

MCP server for AI agents to create video ads via Streamable HTTP. Primary auth is OAuth 2.1 + Dynamic Client Registration (the modern Claude Desktop / Claude.ai / ChatGPT / Cursor "Connect" flow); long-lived API keys remain supported for headless clients.

No reviews yet
0 installs
8 views
0.0% view→install

Install

$ agentstack add skill-prizmad-agent-skills-mcp-server

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Mcp Server? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Prizmad MCP Server

Prizmad exposes a remote Model Context Protocol (MCP) server. Any MCP-compatible host (Claude Desktop, Claude.ai web, ChatGPT, Cursor, Continue, Zed, Claude Code CLI, n8n, custom SDKs) connects and drives the full UGC video studio programmatically.

  • Endpoint: https://prizmad.com/api/mcp
  • Transport: streamable-http
  • Server card:
  • Source code (stdio bridge for stdio-only clients):

Connect (primary path — OAuth Connect button)

Modern MCP clients click Add custom connector → enter the MCP URL and the OAuth flow runs automatically:

  1. Client probes https://prizmad.com/api/mcp → 401 with WWW-Authenticate: Bearer resource_metadata="…".
  2. Client reads /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server.
  3. Client POST /oauth/register (RFC 7591 Dynamic Client Registration) — no manual app pre-registration needed.
  4. Browser opens https://prizmad.com/oauth/authorize → user signs in (NextAuth) → consent screen → redirect back with code.
  5. Client exchanges code for an RS256 JWT (audience https://prizmad.com/api/mcp).
  6. Client calls https://prizmad.com/api/mcp with Authorization: Bearer . Refresh tokens rotate; PKCE S256 mandatory.

Compatible clients: Claude Desktop, Claude.ai, ChatGPT, Cursor, Zed, Claude Code CLI. Same-origin design (authorize/token/register all live on prizmad.com) sidesteps the Claude.ai web bug that ignores cross-origin authorization endpoints.

Streamable HTTP config (when manual config is needed)

{
  "mcpServers": {
    "prizmad": {
      "transport": "streamable-http",
      "url": "https://prizmad.com/api/mcp"
    }
  }
}

The Connect flow handles the Bearer token automatically. To pre-fill an existing API key instead, add "headers": { "Authorization": "Bearer przmad_sk_live_..." }.

stdio-only clients (via the published bridge)

{
  "mcpServers": {
    "prizmad": {
      "command": "npx",
      "args": ["-y", "@prizmad/mcp-server"],
      "env": { "PRIZMAD_API_KEY": "przmad_sk_live_..." }
    }
  }
}

Or via the generic bridge: ["mcp-remote", "https://prizmad.com/api/mcp"].

Authentication options at a glance

| Path | When | Token shape | |---|---|---| | OAuth 2.1 Authorization Code + PKCE + DCR | Interactive clients (Claude Desktop, etc.) | RS256 JWT (1 h), refresh rotated (30 d) | | OAuth 2.0 client_credentials | Headless / server-to-server | HS256 JWT (1 h) | | API key (Bearer) | Quickest for dev, scripts, internal tools | przmad_sk_live_... |

All three resolve to the same per-user identity. Discovery: /.well-known/oauth-authorization-server, /.well-known/oauth-protected-resource, /.well-known/jwks.json.

Available tools

| Tool | Auth | Purpose | |------|:----:|---------| | list_templates | No | Full template catalog with features and token costs | | list_avatars | No | Built-in avatar presets with recommended voices | | recommend_template | No | Pick top-3 templates from intent + constraints (voice / avatar / duration / budget). Use this before create_video instead of guessing from the catalog. | | list_my_videos | Yes | Recent projects with projectUrl / shareUrl / downloadUrl | | upload_image | Yes | Upload an image (URL or base64) → returns prizmad.com-hosted URL for use as productImages / avatar | | create_video | Yes | Start a render. Returns videoId. | | get_video_status | Yes | Snapshot status by default; with wait: true it blocks server-side and streams notifications/progress until terminal (up to 10 min) — preferred over polling. | | get_download_url | Yes | Authenticated download URL on prizmad.com for a completed video | | create_video_batch | Yes | Launch up to 20 renders in parallel; pre-checks total token cost |

list_templates and list_avatars are deliberately public so an agent can browse before authenticating.

Customization knobs on create_video (and per-item in create_video_batch)

All optional; omit any field for a randomised pick at render time.

captionStyle — on-video subtitles

| Value | Look | |-------|------| | classic | TikTok yellow highlight, white sans-serif (default fallback) | | bold-impact | MrBeast / Hormozi — uppercase Anton with heavy black stroke and green highlight | | karaoke | Active word colour-sweeps left-to-right as it's spoken | | pop | Active word springs up in scale, inactive words dim | | bounce | Active word hops up with a low-damping spring (Fredoka) | | neon | Pink/cyan glowing halo (Audiowide) | | typewriter | Characters reveal one-by-one with a blinking caret (JetBrains Mono) | | glow | Soft white halo, gentle scale on the active word (Montserrat) |

musicStyle — background music

energetic, friendly, professional, luxury, funny, cinematic, lo-fi, hip-hop, acoustic.

ctaStyle — end-card

| Value | Look | |-------|------| | classic | Solid dark backdrop, centered title + price, green "LINK BELOW" pill | | blurred-photo | First creative blurred behind minimal cream title + price + circled down-arrow | | dark-solid | Same minimal layout on a solid warm-dark backdrop |

imageStyle — lighting/palette preset for AI creatives (10 options)

warm-golden, bright-neutral, cool-diffused, window-light, earthy-ambient, studio-clean, moody-dramatic, pastel-soft, nordic-minimal, sunset-warm.

Free-text prompt hints

imagePromptHint, videoPromptHint, musicPromptHint — each ≤ 400 chars, layered on top of style presets.

Output URLs (what to give the user)

get_video_status returns three URLs once rendering is complete — they map cleanly:

| Field | Goes to | |---|---| | projectUrl | https://prizmad.com/projects/ — owner-only dashboard with player, remix, edit, asset library. Primary link when handing the result back to the signed-in user. | | shareUrl | https://prizmad.com/share/ — public share page, useful only when forwarding the video to someone outside the account. | | downloadUrl | https://prizmad.com/api/v1/videos//download — authenticated mp4 stream proxied via prizmad.com. |

The raw Vercel Blob URL is never surfaced to the agent.

Typical flow

recommend_template ─► create_video ─► get_video_status (wait: true) ─► projectUrl + downloadUrl
  1. (No auth) recommend_template({ intent, hasVoiceover, hasAvatar, targetDurationSec, maxTokens }) — pick a template.
  2. (Optional) upload_image if the agent wants to attach product photos that aren't yet on the web.
  3. create_video with templateId + productUrl (scraped) or explicit productTitle / productDescription / productImages + any customisation. Returns videoId.
  4. get_video_status({ videoId, wait: true }) — blocks server-side, streams progress, returns the final payload when ready (3–8 minutes typical, capped at 10 min).
  5. Hand projectUrl to the user.

For bulk campaigns use create_video_batch (1–20 per request).

Plan + token rules

  • API video generation requires a Pro subscription (/api/v1/videos returns 403 with a clear upgrade message otherwise).
  • Tokens come from the user's monthly plan first, then any top-up balance.
  • Insufficient balance returns a 402 with a top-up URL.
  • The MCP layer renders both errors as plain English so the assistant can repeat them verbatim.

Rate limits

  • Per-key / per-OAuth-client rate limit on the MCP endpoint.
  • Each successful create_video debits the caller's Prizmad token balance.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.