# Vibiz MCP — Developer Reference > The Vibiz Model Context Protocol server lets any AI client (Claude Desktop, > Claude Code, Cursor, custom agents) generate ad creatives, manage social > posts, launch campaigns, and read analytics directly from a Vibiz workspace. Server URL: `https://app.vibiz.ai/api/mcp` Protocol: Model Context Protocol, JSON-RPC 2.0 (MCP spec 2025-06-18) ## Authentication There are two authentication paths. **Prefer OAuth.** ### OAuth (recommended) The MCP endpoint advertises a WorkOS-issued OAuth authorization server via `/.well-known/oauth-protected-resource`. Compatible clients discover this automatically — when a client calls `/api/mcp` without a Bearer token, it gets a 401 with a `WWW-Authenticate` header pointing at the auth server, opens a browser to vibiz.ai, signs the user in, exchanges the code for a JWT, and uses that JWT as the Bearer for subsequent calls. Refresh, revocation, and scope are handled by the auth server. ### Static API key (manual) For headless agents and CI, a workspace user can mint a token from `https://app.vibiz.ai//mcp/setup`. The token is sent as `Authorization: Bearer ` on each request. Tokens are scoped to a single workspace group and optionally pinned to a single vibiz (org). ## Quickstart Point your MCP client at `https://app.vibiz.ai/api/mcp`. - **Claude Code (recommended)**: `npx @vibiz/vibiz` — installs the official plugin, registers the marketplace, and wires up the MCP connection. Then inside Claude Code: `/mcp` → pick `vibiz` → `Authenticate` → `/vibiz:status` to verify. The plugin ships with five slash commands (`/vibiz:status`, `/vibiz:onboard`, `/vibiz:post`, `/vibiz:ad`, `/vibiz:launch`), a `vibiz-marketer` subagent, project auto-match against the user's vibizes, and a post-commit nudge that suggests `/vibiz:post` after non-trivial commits. Manual fallback inside Claude Code: `/plugin marketplace add Vibiz-ai/vibiz-claude-plugin` then `/plugin install vibiz@vibiz`. Repo: https://github.com/Vibiz-ai/vibiz-claude-plugin - **Claude Desktop**: Settings → Connectors → Add custom connector → paste URL. - **Cursor**: Settings → MCP → Add new MCP server → paste URL. The first tool call triggers the OAuth handshake. Sign in with your Vibiz account and approve the connection. For static-key clients, add the Bearer header in the client config: ```json { "mcpServers": { "vibiz": { "url": "https://app.vibiz.ai/api/mcp", "headers": { "Authorization": "Bearer YOUR_VIBIZ_API_KEY" } } } } ``` Verify with curl: ```bash curl https://app.vibiz.ai/api/mcp \ -H "Authorization: Bearer YOUR_VIBIZ_API_KEY" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' ``` ## Long-running tools Image, video, ICP, offer, and funnel generators are async. They return `{ runId, statusUrl }` immediately. Clients can poll `statusUrl` or subscribe to the run via Trigger.dev's public-token API for realtime progress + final output. Sync tools (branding read, email send, analytics, ad campaign reads) return the result directly. ## What you can do - Generate ad images, UGC videos, and full landing-page funnels - Schedule and publish social posts across Instagram, Facebook, LinkedIn, TikTok, X, and others - Launch and manage Meta ads campaigns end-to-end - Read engagement analytics and top-performing posts - Read and reply to social-media inbox conversations - Send branded transactional emails on behalf of the workspace ## Tools (42 total) ### Generation - **vibiz_generate_image** — Generate ONE static ad IMAGE (no motion, no sound). - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `prompt` (string) (required) — Describe the STATIC IMAGE to generate. Do not structure as storyboard/frames. - `platform` (string) — Target platform. MUST be one of the listed values. Common mappings: TikTok → "tiktok_story", Instagram feed → "instagram_portrait", Instagram story → "instagram_story", Facebook → "facebook_feed", LinkedIn → "linkedin". Default: "instagram_portrait". - `aspectRatio` (string) — Optional. If omitted, derived from `platform`. 9:16 = vertical, 1:1 = square, 16:9 = landscape. - `style` (string) — Per-app style key. "branded-ad" is the default marketing ad style. - `useBrand` (boolean) — Apply the workspace brand kit (colors, fonts, logo, tone). Default true. Set false only if the user explicitly wants a generic look. - `imageCount` (integer) — Number of VARIATIONS of the SAME image to generate (1-4). Default 1. NOT for making a video storyboard — use `vibiz_generate_ugc` for motion content. - **vibiz_generate_carousel** — Generate a multi-slide marketing CAROUSEL (hook → story → CTA) for Instagram, LinkedIn, or similar slide-based placements. Each slide is its own image; they ship as one cohesive set. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `prompt` (string) (required) — What the carousel is about: topic, angle, key message. The generator writes per-slide copy — you describe the story, not the individual slides. - `slideCount` (integer) — Number of slides (2-10). Default 3. Higher slide counts cost more credits (1 per slide). - `platform` (string) — Target platform. Default "instagram_story" (9:16). Drives aspect ratio of each slide. - `useBrand` (boolean) — Apply workspace brand kit (colors, fonts, logo, tone). Default true. - **vibiz_generate_ugc** — Generate a UGC-style VIDEO (motion + optional sound) via Sora. This is a single rendered video clip, NOT a sequence of images. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `productName` (string) (required) — Short product / brand / service name the video is about (e.g. "Vibiz", "Acme Coffee Subscription"). Required. - `productDetails` (string) (required) — Paragraph describing the product, target audience, hooks, differentiators, and any tone/style notes. Required. Do NOT send a storyboard — describe the product + why it matters; the task writes its own script. - `videoStyle` (string) — Video style. "talking_head" is the default UGC phone-shot look. Other values pass through as hints. - `platform` (string) — Target short-form platform. Drives aspect ratio + pacing. Default "tiktok". - `duration` (string) — Video length. Default "8s". - `creatorGender` (string) — Presented gender of the AI creator / talking head. Default "female". - `captions` (boolean) — Burn captions onto the video via ZapCap. Default true. - `captionStyle` (string) — Caption look. Default "tiktok". - `hook` (string) — Optional opening hook line (max 200 chars). If omitted, the task generates one from productDetails. - `referenceImageUrl` (string) — Optional reference image URL (the "creator" face / look). Switches to image-to-video mode when provided. - **vibiz_generate_ad_video** — Generate a polished marketing VIDEO AD — generates a branded image THEN animates it into a short motion ad (Veo 3.1). Output lands in the creatives gallery as a video ad. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `prompt` (string) (required) — Describe the full ad as ONE scene: subject, setting, brand framing, movement, on-screen copy. Do NOT provide frame-by-frame storyboards. - `platform` (string) — Target platform. Mapped to a video aspect ratio server-side (9:16 for story platforms, 16:9 otherwise). Default: "facebook_feed". - `videoDuration` (string) — Video length. Default "4s". - `videoResolution` (string) — Default "720p". - `generateAudio` (boolean) — Default true. - `useBrand` (boolean) — Apply workspace brand kit. Default true. - `referenceImages` (array) — Optional reference images. [0] is the primary reference, the rest are additional inputs. - **vibiz_generate_funnel** — Generate a marketing funnel / landing page AND automatically deploy it as a live website on Vercel. End-to-end: writes the HTML/content, provisions the repo, deploys — one call. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `prompt` (string) (required) — Describe the landing page: what it sells, the hero message, the primary CTA, target audience, tone. The generator writes its own copy — you just describe the goal. Max 500 chars stored. - `qualification` (boolean) — Optional. Set true to build a lead-qualification funnel (multi-step questionnaire + paywall/gating) instead of a single landing page. Default: false. - `creativeId` (string) — Optional campaign_ad id to use as the hero image/reference for the page. - `creativeImageUrl` (string) — Optional image URL to embed as the hero visual (alternative to creativeId). - **vibiz_generate_qualification_funnel** — Rewrite an EXISTING landing page into a lead-qualification funnel (multi-step form / paywall / gating flow) and auto-deploy the new version. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `funnelId` (string) (required) — Id of the existing funnel to rewrite. Fetch from the user's workspace (recent funnel) or ask them to build one first via `vibiz_generate_funnel`. - `prompt` (string) (required) — Describe the qualification/gating flow: what fields to collect, what the paywall gates, what questions to ask, where the CTA leads. The generator writes its own HTML — describe the goal. - **vibiz_generate_icps** — Create a single Ideal Customer Profile (ICP / persona) in a vibiz. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `name` (string) (required) — Short persona name (e.g. "SaaS Founder", "Busy Parent", "Gen-Z Gamer"). Required. - `title` (string) — Optional job title / role label that appears under the name (e.g. "Marketing Manager at a 50-person B2B SaaS"). - `description` (string) — Optional one-paragraph summary of who they are, what motivates them, and how the brand fits into their life. - `demographics` (object) — Optional demographic block. All fields free-form strings. - `painPoints` (array) — Optional list of pain points / frustrations. - `goals` (array) — Optional list of goals / desired outcomes. - `channels` (array) — Optional list of channels where this persona spends time (e.g. "TikTok", "LinkedIn", "Reddit r/SaaS"). - **vibiz_generate_offers** — Create a single marketing OFFER (lead magnet, promotion, deal) in a vibiz. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `title` (string) (required) — Short, punchy offer name (max ~100 chars). E.g. "50% off everything", "Free 14-day trial", "$99 starter package". - `description` (string) — Optional details about the offer — terms, what is included, value prop. Max ~500 chars. - `priceCents` (integer) — Price in cents (e.g. 9900 = $99.00). Omit for free offers / lead magnets. - `priceCurrency` (string) — ISO currency code. Default "USD". - `type` (string) — Business model type. Default "generic" if unsure. - `iconEmoji` (string) — Single emoji that represents the offer visually. E.g. "🎁", "💰", "🚀". ### Analytics - **vibiz_analytics_top_posts** — Get top-performing social media posts ranked by engagement metrics. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `platform` (string) — Filter by platform (facebook, instagram, linkedin, tiktok, etc.). Omit for all. - `sortBy` (string) — Metric to sort by. Default: engagement. - `fromDate` (string) — Start date (YYYY-MM-DD). Default: 90 days ago. - `toDate` (string) — End date (YYYY-MM-DD). Default: today. - `limit` (number) — Max posts to return (1-100, default 10). - **vibiz_analytics_daily_metrics** — Get aggregated daily social media metrics with per-platform breakdown. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `platform` (string) — Filter to one platform. Omit for cross-platform aggregate. - `fromDate` (string) — Start date (YYYY-MM-DD). Default: 30 days ago. - `toDate` (string) — End date (YYYY-MM-DD). Default: today. - **vibiz_analytics_best_time** — Find the best times to post on social media based on historical engagement data. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `platform` (string) — Platform to analyze. Omit for all platforms. ### Inbox - **vibiz_inbox_conversations** — List recent DM conversations across the social accounts connected to a vibiz. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `platform` (string) — Filter by platform (instagram, facebook, twitter, etc.). - `limit` (number) — Max conversations to return (1-50, default 10). - **vibiz_inbox_comments** — List posts that have received comments across the social accounts connected to a vibiz. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `platform` (string) — Filter by platform. - `sortBy` (string) — Sort by date or comment count. - `limit` (number) — Max posts to return (1-50, default 10). - **vibiz_inbox_reply_comment** — Reply to a comment on a social media post in a vibiz. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `postId` (string) (required) — The post containing the comment. - `commentId` (string) (required) — The comment to reply to. - `accountId` (string) (required) — The social account to reply from. Must belong to the target vibiz. - `message` (string) (required) — Reply message text. - **vibiz_inbox_send_dm** — Send a direct message in an existing conversation on a vibiz. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `conversationId` (string) (required) — The conversation to send in. - `accountId` (string) (required) — The social account to send from. Must belong to the target vibiz. - `message` (string) (required) — Message text. ### Social - **vibiz_social_list_accounts** — List connected social media accounts for a vibiz. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - **vibiz_social_list_posts** — List social media posts for a vibiz. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `status` (string) — Filter by status. - `platform` (string) — Filter by platform. - `limit` (number) — Max posts (1-100, default 10). - **vibiz_social_publish** — Publish or schedule a social media post to one or more platforms. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `content` (string) (required) — Post text. - `platforms` (array) (required) — Platforms + account IDs. - `mediaUrls` (array) — Media URLs to attach. - `scheduledFor` (string) — ISO datetime to schedule. Omit for immediate. - `hashtags` (array) — Hashtags. ### Meta ads - **vibiz_meta_ads_campaigns_list** — List Meta (Facebook + Instagram) ad campaigns connected to a vibiz via Zernio. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `platform` (string) - `status` (string) - `limit` (integer) — Max campaigns to return (default 20). - **vibiz_meta_ads_campaigns_get_tree** — Return the full Campaign → Ad Set → Ad hierarchy with rolled-up metrics at every level. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `platform` (string) - `status` (string) - `fromDate` (string) - `toDate` (string) - `limit` (integer) - **vibiz_meta_ads_campaigns_set_status** — Pause or resume a Meta ad campaign. Status transitions only — does NOT delete or duplicate. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `campaignId` (string) (required) — EXPECTS: Meta platform campaign id (16-18 digit numeric, e.g. "23859876543210000"). Get it from `vibiz_meta_ads_campaigns_list[].platformCampaignId`. NOT a Zernio Mongo ObjectId; NOT a Vibiz campaign UUID. - `status` (string) (required) - `platform` (string) (required) - **vibiz_meta_ads_campaigns_bulk_set_status** — Pause or resume up to 50 Meta campaigns in a single call. Per-campaign result; one bad row does not fail the batch. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `status` (string) (required) - `campaigns` (array) (required) - **vibiz_meta_ads_campaigns_duplicate** — Duplicate a Meta campaign (deep copy of all ad sets + ads). The copy starts PAUSED by default. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `campaignId` (string) (required) — EXPECTS: Meta platform campaign id (16-18 digit numeric). Get it from `vibiz_meta_ads_campaigns_list[].platformCampaignId`. - `platform` (string) (required) - `deepCopy` (boolean) — Default true. - `statusOption` (string) — Default `PAUSED`. - `startTime` (string) - `endTime` (string) - `renameStrategy` (string) - `renamePrefix` (string) - `renameSuffix` (string) - `syncAfter` (boolean) — Default true. - **vibiz_meta_ads_campaigns_delete** — Delete a Meta campaign — cascades to ad sets + ads on the platform; locally marks Ad rows as `cancelled` (preserves history). - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `campaignId` (string) (required) — EXPECTS: Meta platform campaign id (16-18 digit numeric). Get it from `vibiz_meta_ads_campaigns_list[].platformCampaignId`. - `platform` (string) (required) - **vibiz_meta_ads_creatives_list** — List individual Meta ads (the leaf level — below campaigns and ad sets) with metrics. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `platform` (string) - `status` (string) - `campaignId` (string) — EXPECTS: Meta platform campaign id (16-18 digit numeric, e.g. "23859876543210000"). NOT a Zernio campaign id. Get it from `vibiz_meta_ads_campaigns_list[].platformCampaignId`. - `fromDate` (string) — YYYY-MM-DD - `toDate` (string) — YYYY-MM-DD - `limit` (integer) - **vibiz_meta_ads_creatives_get** — Get details of a single ad by its Zernio ad id. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `adId` (string) (required) — Zernio ad id — a 24-char hex Mongo ObjectId (e.g. "65a3f0c1d2e4b8e9f4a1c2d3"). You get this from `vibiz_meta_ads_creatives_list[].id`. NOT the Meta platform numeric id, NOT a Vibiz campaign_ad UUID. - **vibiz_meta_ads_creatives_get_analytics** — Get analytics for a single ad — summary + daily time series + optional Meta breakdowns (age, gender, country, etc.). - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `adId` (string) (required) — Zernio ad id — a 24-char hex Mongo ObjectId (e.g. "65a3f0c1d2e4b8e9f4a1c2d3"). You get this from `vibiz_meta_ads_creatives_list[].id`. NOT the Meta platform numeric id, NOT a Vibiz campaign_ad UUID. - `fromDate` (string) — YYYY-MM-DD - `toDate` (string) — YYYY-MM-DD - `breakdowns` (array) — Optional dimension keys (Meta: age | gender | country | publisher_platform | device_platform | region). Joined into a comma-separated 'breakdowns' query parameter server-side. - **vibiz_meta_ads_creatives_set_status** — Pause or resume a single Meta ad creative. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `adId` (string) (required) — Zernio ad id — a 24-char hex Mongo ObjectId (e.g. "65a3f0c1d2e4b8e9f4a1c2d3"). You get this from `vibiz_meta_ads_creatives_list[].id`. NOT the Meta platform numeric id, NOT a Vibiz campaign_ad UUID. - `status` (string) (required) - **vibiz_meta_ads_creatives_delete** — Cancel a single ad creative. Marks the platform ad as cancelled and updates the local row to `cancelled` (preserves history). - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `adId` (string) (required) — Zernio ad id — a 24-char hex Mongo ObjectId (e.g. "65a3f0c1d2e4b8e9f4a1c2d3"). You get this from `vibiz_meta_ads_creatives_list[].id`. NOT the Meta platform numeric id, NOT a Vibiz campaign_ad UUID. - **vibiz_meta_ads_launch_boost_post** — Boost an existing organic Facebook or Instagram post as a paid ad. Cheaper than creating from scratch — reuses the post creative. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `postId` (string) — EXPECTS: Zernio post id (24-char hex Mongo ObjectId, e.g. "65a3f0c1d2e4b8e9f4a1c2d3"). Get it from `vibiz_social_publish` response or `vibiz_social_list_posts[].id`. Provide ONE of `postId` or `platformPostId`. - `platformPostId` (string) — EXPECTS: Meta platform post id (e.g. Instagram media id "12345_67890" or Facebook "123_456"). Get it from `vibiz_social_publish` response.platforms[].platformPostId or by polling the post once Late has published it. Provide ONE of `postId` or `platformPostId`. - `accountId` (string) (required) — EXPECTS: Zernio social account id (24-char hex Mongo ObjectId) of the post owner. Get it from `vibiz_social_list_accounts[].id`. NOT the Meta ad account `act_…`. - `adAccountId` (string) (required) — EXPECTS: Meta platform ad account id (string starting with "act_", e.g. "act_1234567890"). Get it from `vibiz_meta_ads_accounts_list[].id` for the chosen socialAccountId. NOT a Zernio Mongo ObjectId. - `name` (string) (required) — Ad name (max 255 chars). - `goal` (string) (required) - `budget` (object) (required) - `currency` (string) — ISO-4217 currency code. - `schedule` (object) - `targeting` (object) - `bidAmount` (number) — Meta only. - `tracking` (object) — Meta only. - `specialAdCategories` (array) — Meta only. - **vibiz_meta_ads_launch_create** — Create a standalone Meta ad from scratch — campaign + ad set + ad in one call. No existing post needed. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `accountId` (string) (required) — EXPECTS: Zernio social account id (24-char hex Mongo ObjectId). Get it from `vibiz_social_list_accounts[].id`. NOT a Meta `act_…` id. - `adAccountId` (string) (required) — EXPECTS: Meta platform ad account id (string starting with "act_"). Get it from `vibiz_meta_ads_accounts_list[].id`. - `name` (string) (required) — Ad name (max 255 chars). - `goal` (string) - `budgetAmount` (number) - `budgetType` (string) - `currency` (string) - `headline` (string) - `body` (string) - `callToAction` (string) — Meta only. - `linkUrl` (string) - `imageUrl` (string) - `video` (object) — Meta only. - `adSetId` (string) — Meta only — attach this creative to an existing ad set. Mutually exclusive with `creatives[]`. - `countries` (array) - `ageMin` (integer) - `ageMax` (integer) - `interests` (array) - `endDate` (string) — Required for lifetime budgets. - `audienceId` (string) - `advantageAudience` (integer) - **vibiz_meta_ads_accounts_list** — List the platform ad accounts (e.g. Meta `act_…` ids) reachable through a given Zernio social account. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `socialAccountId` (string) (required) — EXPECTS: Zernio social account id (24-char hex Mongo ObjectId). Get it from `vibiz_social_list_accounts[].id`. NOT a Meta platform ad account `act_…` id — that comes back from THIS tool as `accounts[].id`. - **vibiz_meta_ads_accounts_get_connect_url** — Start the ads-specific OAuth flow for a platform. Returns either an `authUrl` to send the user to, or `{ alreadyConnected: true }` when the workspace already has an ads credential for that platform. - `target` (object) — Where the generation should be applied. Pass `vibiz` (slug from list_vibiz) OR `brandUrl` (any URL — we scrape its brand). CRITICAL: if the user requests a brand that is not in the list_vibiz output AND brandUrl is not yet supported (or the URL fails), DO NOT silently fall back to a different vibiz. Tell the user the brand is not yet onboarded and either (a) suggest they create a new vibiz at /create or (b) ask them to pick from the available vibiz. Do not generate with the wrong brand. - `platform` (string) (required) — Ads platform to connect. Note `googleads` (not `google`). - `socialAccountId` (string) — Required for separate-token platforms (tiktok, twitter); ignored for same-token + standalone. - `redirectUrl` (string) — Custom URL to redirect the user back to after OAuth (same-token platforms only). ## Examples ``` > Generate a 1:1 ad image for our hero offer in our brand voice and schedule it as an Instagram post tomorrow at 9am. > Use vibiz to launch a Meta ads campaign with my latest approved creatives, $20/day budget, targeting US 25-44. > Show me the top 5 Instagram posts from the last 30 days by engagement and draft three caption variations in the same voice. ``` ## Reference - Docs site: https://app.vibiz.ai/docs - MCP endpoint: https://app.vibiz.ai/api/mcp - OAuth discovery: https://app.vibiz.ai/.well-known/oauth-protected-resource - This file: https://app.vibiz.ai/llms.txt