Xylo changelog
New MCP tools, ad platform coverage, and improvements to Xylo.
Brand links on the brand profile
Brand profiles now hold the brand's URLs: the website, shop, and key landing pages. Your AI saves the site it researched and reads it back on every future call, and the dashboard editor gets a Links section.
- New urls field on the brand profile: an array of {url, label} entries, merged like every other profile key
- Account research now saves the brand website URL it worked from, so future sessions start from the same source
- Links section in the dashboard brand profile editor, with click-to-open
AI video generation
Generate ad videos with Seedance 2.0, Kling 3.0, and Gemini Omni straight from your AI, using your brand assets and generated images as references, then edit any video with plain English. Same credits, same pipeline: preview, then push to Meta.
- New video models: Seedance 2.0 (premium cinematic, richest reference control), Kling 3.0 (dialogue and lip-sync, the only 4K option), and Gemini Omni (the cheapest generator, plus natural-language video editing)
- Text-to-video and image-to-video, using brand assets, generated stills, or a prior generation as the starting frame
- Edit any video with plain English: trim a scene, change a line of dialogue, swap a background, no re-shoot needed
- Generation is async: submit a job, then poll for status while it renders
- Same generation-credit system and staging pipeline as image generation: preview before it ever touches Meta
GPT Image 2 for static product ads, with a quality dial
The flagship static-ad model upgrades to GPT Image 2 — the strongest model available for text-overlay product ads — and generation cost is now under your control with a quality setting.
- gpt-image-edit now runs on GPT Image 2: sharper in-image text and layout, faithful product and logo references, and every key ad ratio including 4:5 and 9:16 (previously square and landscape only)
- New quality setting on gpt-image-edit: defaults to medium at 20 credits per image (half the previous price); if fine text or a small logo isn't perfect, re-run the same prompt at high (45 credits) for the crispest rendering — low (10 credits) covers rough drafts
- The generation guide teaches the escalation pattern: start at medium, pay for high only when a result needs it
- gpt-image (text-to-image) also upgraded to GPT Image 2 with the same quality setting and ad ratios; GPT Image 1.5 is fully retired
Catalog product photos as AI generation references
Generating creative for an e-commerce product no longer requires a text description or a manually uploaded photo. The agent can pull a product's own images straight out of your Meta catalog and use them as reference images.
- New action: stage a Meta catalog product's photos (main image plus additional angles) into free, 24-hour staging for use as generation references
- Catalog products can now be found by name search, not just by retailer ID
- Staged previews are returned inline so the agent can vet each shot (clean studio angle vs. lifestyle clutter) before generating
- Kept images feed straight into creative generation as reference images, alongside brand assets and winning-ad media
Brand knowledge: your whole brand's research in one place
Everything your agent learns about a brand now travels with the brand, not just one ad account. Agents working any attached account see what the brand's other accounts already taught them, and the dashboard shows all of it on the brand.
- Reading an account's brief on a multi-account brand also returns every sibling account's brief and remembered facts, so researching a second platform starts from what the first one already knows
- New Knowledge tab on each Brand Profile: the research brief and remembered facts for every attached account, side by side, with a link to edit them on the account
- Top-performers (winners) insights default to a 30-day window so large accounts answer fast; pass an explicit date range for 90 or 180 days
- Asset refs like winning_ad:{id} resolve on their own; no platform or account id needed
- Winning-ad usage counts skip archived and deleted ads, so "runs in N ads" reflects real usage
Premium image models for product ads + a creative-director prompting guide
AI image generation graduates from basic composites: GPT Image 1.5 and Nano Banana Pro join the model lineup, static product ads route to models that get the product, the logo, AND the in-image text right in one pass, and the generation guide now teaches agents to prompt like a creative director.
- New gpt-image-edit model (GPT Image 1.5): renders your exact product shots and logo from reference images with polished layout and near-perfect in-image text — the new default for static promo cards and offer ads
- New nano-banana-pro and nano-banana-pro-edit models (Gemini 3 Pro Image): premium text rendering and design sense across every aspect ratio, with up to 14 reference images — the pick for 4:5 and 9:16 product ads
- The creative_generation guide now documents per-model prompting technique — layered art direction (subject, surface, lighting, exact copy in quotes with layout positions, finish) instead of flat one-line prompts
- num_images semantics documented honestly: N images = near-identical takes on one prompt; agents are steered to generate distinct concepts as separate prompts, then variants of the direction you pick
- Ads can now be listed and name-searched account-wide (no ad set ID required), so agents can pull your actual winning creatives to ground new designs on real pixels instead of text summaries
Partnership-ad video analysis, honest Google listings, leaner payloads
Creative analysis now recovers Partnership / whitelisting videos through their public Instagram post, Google campaign lists surface your live campaigns first and stop under-reporting, and the big insights lenses default to sizes an AI agent can actually read.
- Partnership / whitelisting video ads analyze at full fidelity again: when Meta locks the Facebook video node, Xylo resolves the creative's public Instagram post and analyzes the real video — thumbnail-only is now the rare per-asset exception, and its message no longer claims the ad is unanalyzable
- Google campaign lists order live campaigns first (active before paused, newest first), report has_more honestly across every Google list tool, and each campaign carries delivery_status (Google's primary_status) so ENABLED-but-ended campaigns read as ENDED
- Google insights with time_granularity "all" return one aggregated row per entity as documented, instead of silently exploding into daily rows
- Copy-performance breakdowns default to the aggregated view with the top 15 variants per ranking — full per-ad dumps are opt-in, so large accounts no longer overflow the conversation
- Number-vs-string parameter mixups (like limit: 60) are coerced instead of erroring, and the onboarding playbook now rejects black-and-white-only palettes and generic font families as failed brand extractions
Smarter account onboarding: better winners, seedable briefs, sturdier memory
First-run account ingestion learned from its first real-world outing. Winners are now grouped by what each ad set actually optimizes for, agents can seed the narrative Account Brief, and saved memory sticks to durable conventions instead of live state that drifts.
- Winners insights group by optimization goal (ordered by spend), so cheap link-click campaigns no longer bury your real lead-gen or purchase winners
- update_account_brief can seed the freeform Account Brief during first-time ingestion — written only while empty; once set it stays yours
- Memory guidance hardened: agents save durable conventions (e.g. budgets for NEW ad sets), never current budgets or running promotions, and re-verify stored offers before reusing them in new ads
- Onboarding playbook now requires concrete brand colors and fonts (hex + font families) before finishing, flags billing-inactive accounts up front, and stays inside response-size limits on big accounts
- Passing a channel to channel-agnostic tools (like list_brands) no longer errors, and date_preset docs list exactly the values Meta accepts
Bulk tools: reliable counts, safe retries, no more mystery timeouts
Every bulk tool now tells you exactly what happened — even when the ad platform is slow. Timed-out operations are verified and retried automatically, and re-running the same call safely skips work that already happened.
- meta_bulk_create_ads and meta_duplicate_ads lead with a summary (requested / created / skipped_existing / failed), auto-verify timed-out operations against the target ad set, retry the genuinely missing ones, and skip already-existing ads on a re-run — safe retries, no duplicates
- meta_bulk_update_ads / ad sets / campaigns auto-retry writes that time out inside Meta's batch (field updates are idempotent), so failed[] now means "definitively did not apply"
- TikTok bulk status updates no longer stop at the first failed batch — every chunk runs, and the response reports exactly which IDs changed and which didn't
- Large Meta batches run in parallel and MCP tool calls get up to 5 minutes, so big launches finish instead of timing out
Account Brief: persistent per-account memory
Every connected ad account now has a persistent Account Brief the agent reads before it works and writes to as you share preferences, so you stop repeating yourself. Works the same across Meta, Google, and TikTok.
- Two universal MCP tools, on every connector: read_account_brief (recall the account's saved context at the start of a task) and update_account_brief (remember new facts as you state them)
- Structured memory captures the things you'd otherwise re-explain: naming conventions, default budgets, geo and audience preferences, product sets, which campaigns are which and where new ads go, brand voice, and ad copy preferences
- New "Remembered by AI" panel on each account in the dashboard — view, edit, add, or remove any remembered fact, alongside the existing freeform Account Brief
- Cross-platform REST endpoint GET/PATCH/DELETE /v1/account-memory, gated by the same per-account read/write permissions as the rest of the API
- Available on every plan, including Free
Enterprise Tier: Data Warehouse, Async Insights & Ad Integrity
Enterprise-tier release. A local data warehouse that refreshes Meta account state daily, async insights jobs for heavy queries that would time out synchronously, and an ad integrity checker that flags suspicious landing pages, unknown Pages, and unauthorized Instagram accounts on scheduled daily runs.
- Scheduled daily bulk pulls — campaigns, ad sets, ads with creatives, and daily-granularity insights on a rolling 90-day window — with incremental sync (re-pulls last 7 days each run to catch late conversion attribution, backfills older history 30 days at a time)
- Transparent local-snapshot serving for /v1/insights on enterprise accounts; response includes data_freshness: 'local_snapshot' with snapshot_at timestamp
- Async insights jobs via meta_start_insights_job / meta_check_insights_job MCP tools — threshold-routed (sync / sync_slow / async_recommended / async_required / refused) based on estimated row count (entities × date buckets × breakdowns)
- meta_check_ad_integrity MCP tool — flags ads linking to unknown domains, using unknown Facebook Pages, on unknown Instagram accounts, or with no destination URL
- Business website field on the account dashboard — sets the reference domain for the integrity checker; subdomains accepted automatically
- Approved domains panel in the dashboard — mark domains as known-good to stop future anomaly flags
- New endpoints: POST /v1/insights/async/start, GET /v1/insights/async/:job_id, GET /v1/ai/integrity-check, POST /v1/cron/bulk-pull
- URL history tracking — ad_url_history table records every unique landing URL per account, with first/last seen timestamps and seen_count
Publishing, Media Pipeline & MCP Polish
Meta MCP parity push: a staged media pipeline that dedupes and groups assets before finalizing to Meta, Page and Instagram publishing with comment management, and a broad round of MCP and insights polish.
- Staged media upload with dedupe and grouping — stage in Vercel Blob, finalize pushes to Meta while keeping blobs alive for Page/IG reuse
- Facebook Page and Instagram publishing with comment management and engagement counts on Page post responses
- List user-managed Pages without requiring a connected ad account
- Catalog discovery fixes and per-account default catalog selector, plus meta_list_catalogs and meta_list_catalog_products MCP tools
- Insight deduping across standard events and lead counts to match Ads Manager, with funnel metrics exposed
- MCP polish: accept xy_sk_ API keys as bearer tokens, keyword hints in tool descriptions for claude.ai tool_search, latest-post shortcuts for Page and Instagram, and lead form tools (meta_list_lead_forms, meta_get_lead_submissions)
- Dropped read_insights from the Meta OAuth scope to simplify consent
- Fixes for duplicate campaign/ad-set on Meta v25, budget schedule ISO parsing, and IG media delete via Page access token
- Ads Library preview removed
Google Ads Search Terms & Negative Keywords
Deep Google Ads optimization tools: search term reports, campaign and shared negative keyword lists, and full MCP tool coverage for search term management.
- Search term performance reports with date range filtering
- Campaign-level negative keyword management (add, remove, list)
- Shared negative keyword lists with campaign linking
- MCP tools for all search term and negative keyword operations
- Negative keyword list ↔ campaign association endpoints
Performance Max & Experiments
Full support for Google Ads Performance Max asset groups and A/B experiment management. Run experiments, promote winners, and manage PMax creative assets programmatically.
- Performance Max asset group CRUD and asset linking
- A/B experiment creation, promotion, and end lifecycle
- Google Ads change history and recommendation engine integration
- Keyword quality score reporting
- Budget management endpoints (shared budgets)
- User list and customer match audience management
Instagram & Facebook Pages Publishing
Publish content directly to Instagram and Facebook Pages through the API and MCP. Images, videos, Reels, Stories, carousels, and comment management across both platforms.
- Instagram publishing: images, videos, Reels, Stories, and carousels
- Facebook Page post creation, scheduling, and management
- Comment management for both Pages and Instagram
- Meta Pixel management and Conversions API (server-side events)
- Media insights and publishing rate limit checks
- MCP tools expanded to ~195 across all platforms
TikTok Ads & Multi-Provider Auth
TikTok Ads platform integration and a complete auth overhaul supporting email/password, Meta OAuth, and Google OAuth sign-in. Team management with role-based access control.
- TikTok Ads: campaigns, ad groups, ads, insights, and audiences
- Email/password authentication with bcrypt and email verification
- Google OAuth login (separate from Google Ads connection)
- Team management: roles (owner/admin/member/viewer), invites
- OAuth 2.1 with PKCE for MCP server authentication
- Webhook subscriptions for campaign and ad set events
- Bulk operations endpoint for sequential multi-request execution
- AI-powered campaign audit, budget optimization, and report generation
- Cross-platform insights with normalized metrics and grand totals
Google Ads Support
Full Google Ads API integration with the same normalized response format as Meta. Manage campaigns, ad groups, ads, and pull performance reports across both platforms with a single API key.
- Google Ads campaign CRUD operations
- Ad group management with targeting options
- Cross-platform normalized response schema
- Google Ads insights and performance reporting
- Keyword targeting and bid management endpoints
- Conversion action tracking and offline conversion uploads
- Asset management (sitelinks, callouts, structured snippets, images)
MCP Server Release
Introduced the Xylo MCP server, enabling AI agents like Claude, GPT-4, and Cursor to manage ad campaigns through natural language. Configure in your AI tool of choice.
- MCP server with Streamable HTTP transport and OAuth 2.1 auth
- Meta campaign, ad set, ad, audience, and insights tools
- Claude Desktop, Claude Code, and Cursor integration
- Typed tool schemas with descriptions for AI discovery
- Read and write operations with safety confirmations
Meta Ads Full Coverage
Expanded Meta Ads API coverage to include audiences, creatives, lead forms, catalogs, and Instagram-specific endpoints. Added response caching and rate limit handling.
- Custom audience and lookalike audience management
- Creative asset upload and management
- Lead form retrieval and lead data access
- Product catalog integration
- Instagram account and media endpoints
- Response caching with configurable TTLs
- Automatic retry with exponential backoff for rate limits
- Page management endpoints
Initial Launch
First public release of Xylo. Core Meta Ads API wrapper with campaign, ad set, and ad management. REST API with API key authentication and AES-256-GCM token encryption.
- Meta Ads campaign CRUD operations
- Ad set management with targeting configuration
- Ad creation and status management
- Performance insights and reporting endpoints
- API key authentication with SHA-256 hashing
- Meta OAuth connection flow
- Account management dashboard
- Organization and team support
- Usage logging and request tracking
- Docker deployment configuration