archive_campaign
ChatGPTArchive a Meta campaign (removes it from active views; cannot be undone from AdStellar). Two-step with confirmationToken. Prefer pause_campaign unless the user explicitly wants to archive.
build_campaign
ChatGPTHave the AI Campaign Builder assemble a complete Meta campaign (audiences, ad sets, ads, copy, creatives) as a reviewable draft. FREE and publishes nothing. Returns a jobId; poll get_campaign_build until phase is preview_ready, show the preview to the user, then call launch_campaign. Use get_launch_options first for pixel/Page ids. Confirm the product and its destinationUrl with the user (or take it from list_products) before calling: the builder fetches that public landing page and writes every ad from it.
create_brand_kit_from_url
ChatGPTScrape a brand's website and save a brand kit in a workspace: name, colors, fonts, tone of voice, target demographic, aesthetic, positioning (problem solved, differentiator, key result), industry, and the logo stored as a media asset. Buyer profiles are generated in the background afterwards (poll get_brand_kit for buyer_profiles_status). Takes 30-90 seconds. Free; spends no credits. Unlinked products on the same domain are linked to the new kit.
create_launch_draft
ChatGPTCreate a launch draft: a prepared campaign build (ad account + creative templates + audience templates + budget) that a human reviews and launches in the dashboard. Does NOT launch anything — no ads are published and no money is spent. Requires an active subscription.
create_product_from_url
ChatGPTScrape a product, store or landing-page URL and create a product in a workspace from it: name, description, selling points, CTA, category, brand colors, logo and up to 12 product images stored as media assets, plus an AI customer profile. Auto-links a brand kit on the same domain. Takes 20-60 seconds. Free; spends no credits. Use list_products first if the product may already exist.
create_workspace
ChatGPTCreate a new workspace in the team (a separate container for brand kits, products, assets and campaigns — typically one per client or brand). Requires the acting user to be a team owner or admin. The creator is added as the workspace admin. Free; spends nothing.
delete_launch_draft
ChatGPTDelete a launch draft by id. Does not affect any live campaign.
generate_ad_copy
ChatGPTWrite text-only ad copy variants matching Meta ad anatomy (long-form primary text, headline, optional description, CTA) for the team's brand or product. Grounded in the brand kit when available. Free — no generation credits used.
generate_image
ChatGPTGenerate AI image ad creatives for the team. Kicks off an async batch (Inngest) and returns a batchId immediately — poll get_generation_status for results. Charges credits: image cost per generation (aspect ratio × variation). Requires reference images or detailed instructions.
generate_video
ChatGPTGenerate an AI video ad. Two approaches: "exact" (an AI actor from list_avatars reads your exact script — requires actorId) or "realistic" (cinematic UGC from a scene prompt, optionally starting from a public image at productImageUrl, which is fetched). Returns a projectId immediately — poll get_generation_status for results. Spends AI credits from the team balance: video is expensive, credits are reserved when the job starts and charged when the video renders; only a failed job is refunded.
get_brand_kit
ChatGPTGet the team's brand kit (colors, fonts, tone of voice, brand description, buyer profiles). Pass brandKitId for a specific kit; omit for the default kit.
get_campaign_build
ChatGPTPoll a build_campaign job. phase is one of preparing, preview_ready (includes a preview of campaign, ad sets, ads and budget plus draftId), publishing, live, or failed (with error). Also reports publish progress after launch_campaign.
get_credit_balance
ChatGPTGet the team's current AI credit balance (available, reserved, included, used). Generation tools spend from this balance.
get_generation_status
ChatGPTPoll the status of an async generation job. Pass batchId (from generate_image) or projectId (from generate_video). Returns per-generation statuses, asset ids/URLs when complete, and errors when failed.
get_launch_draft
ChatGPTGet the full configuration of one launch draft by id.
get_launch_options
ChatGPTWhat an ad account has connected for launching: Meta pixels, Facebook Pages (with Instagram link), advertisable apps, plus the valid objectives and destinations. Call before build_campaign so you can pass real pixelId / pageId values or explain what is missing (e.g. Sales needs a pixel). The apps are only relevant to OUTCOME_APP_PROMOTION and say nothing about which product the user is advertising: never take a destinationUrl, product or offer from this response. Get the landing page from the user or list_products.
get_launch_status
ChatGPTGet launch records for the team (launch type, campaign, ad account, creative counts, goal tracking). Optionally filter to one launch id.
get_team_info
ChatGPTGet the AdStellar team attached to this API key: name, plan, industry, member count, and workspace count. Good first call to confirm which org you are acting on.
launch_campaign
ChatGPTPublish a built campaign to Meta. Spends 100 AI credits and, once active, real ad budget. Two-step: the first call returns the preview and a confirmationToken; after the user explicitly approves, call again with the token. status "paused" (default) publishes everything paused for a final look in Ads Manager; "active" starts delivery immediately. Requires get_campaign_build to report preview_ready.
list_ad_accounts
ChatGPTList the Meta ad accounts connected to the team (id, name, currency, timezone, status, last sync time). Use the ad_account_id values with analytics tools.
list_avatars
ChatGPTList the talking-actor avatars available to the team (stock library plus the team's custom avatars): id, name, portrait, gender, age range, style, and default voice.
list_campaigns
ChatGPTList campaigns launched through AdStellar (status, objective, budget, spend, dates). For live Meta-side state use query_performance.
list_launch_drafts
ChatGPTList launch drafts (campaign builds in progress) for the team. Drafts are prepared in the dashboard or via create_launch_draft and launched by a human in the UI.
list_models
ChatGPTList the AI models available for generation, by capability. Returns id, provider, cost, and supported options (durations, audio, lipsync) for each model so you can pick one and pass its id as the model parameter of a generation tool. Omit the capability filter to list everything.
list_products
ChatGPTList the team's products (name, description, url, linked brand kit).
list_projects
ChatGPTList the team's projects (asset organization folders with item counts).
list_voices
ChatGPTList the curated text-to-speech voices for talking-actor videos (AdStellar's cloned ElevenLabs pool; every actor's default voice comes from it). Optionally filter by a search term (name/accent/gender).
list_workspaces
ChatGPTList the workspaces this credential is allowed to act on (id, name). Pass a workspaceId to other tools to target one; omit those params to span all of these.
lookup_asset
ChatGPTGet full metadata for one media asset by id, including its Meta upload hashes and dimensions.
lookup_campaign
ChatGPTFind Meta campaigns the team launched through AdStellar or imported from Meta, by name fragment, and get their Meta campaign ids. Call this BEFORE pause_campaign / resume_campaign / archive_campaign / update_campaign_budget so you act on a concrete id. Omit query to list recent campaigns.
pause_ad
ChatGPTPause ONE Meta ad (e.g. a losing creative) without touching its ad set. Get the id from query_performance with breakdown "ad". Two-step with confirmationToken.
pause_ad_set
ChatGPTPause ONE Meta ad set without touching its campaign or sibling ad sets. Get the id from query_performance with breakdown "ad_set". Two-step with confirmationToken.
pause_campaign
ChatGPTPause a live Meta campaign (stops delivery and spend). Two-step: the first call returns a preview and a confirmationToken; after the user approves, call again with the token. Get the id from lookup_campaign.
query_performance
ChatGPTQuery synced Meta ads performance (spend, impressions, clicks, results, ROAS, budget) grouped by campaign / ad set / ad / creative component, over a date range. Use list_ad_accounts first to discover ad account ids. Data freshness depends on the team's sync schedule; check last_synced_at in list_ad_accounts.
resume_ad
ChatGPTResume ONE paused Meta ad. Get the id from query_performance with breakdown "ad". Two-step with confirmationToken.
resume_ad_set
ChatGPTResume ONE paused Meta ad set. Get the id from query_performance with breakdown "ad_set". Two-step with confirmationToken.
resume_campaign
ChatGPTResume (unpause) a paused Meta campaign so it delivers and spends again. Two-step with confirmationToken. Get the id from lookup_campaign.
search_assets
ChatGPTSearch the team's media asset library (generated and uploaded images/videos). Filter by file type, favorites, or a name substring. Returns asset metadata with URLs.
update_ad_set_budget
ChatGPTSet ONE ad set's daily budget (ABO campaigns only; CBO ad sets share the campaign budget). Amount is in the ad account's currency. Two-step with confirmationToken.
update_campaign_budget
ChatGPTChange a Meta campaign's daily budget. For a CBO / Advantage+ campaign this sets the shared campaign budget; for an ABO campaign it sets EVERY ad set to that amount (use update_ad_set_budget to change one ad set). Amount is in the ad account's currency. Two-step with confirmationToken.