Ads Uploader

Meta ads bulk launcher: upload creatives, edit builds, preview, and create paused ads.

Otherv0.3.1

Ads Uploader takes an existing ad you already run, turns its settings into a reusable template, and builds brand-new ads on top of it — new media, copy, CTA, and targeting — in bulk. It also duplicates existing ads by post so social proof is preserved. Point your AI agent at it and describe the ads you want.

Agent-assisted vs fully agentic. For agent-assisted launches, we recommend having your agent assemble a saved build rather than creating ads headlessly — the build is accessible, editable, and launchable from the Ads Uploader web app, so you keep a human review-and-launch step in the polished UI.

Requires an existing paid Ads Uploader account with MCP access and a connected Meta account with the necessary permissions. MCP access is not included in trials.

This repository contains public documentation and connector configuration. Ads Uploader is a proprietary product; its application, backend and MCP server implementation are not included here. See License for the scope of reuse permissions.

What it does

  • Build ads from a template — copy settings from any existing ad, then swap in new media, text, CTA, links, and targeting.
  • Bulk creation — many ads across campaigns and ad sets in one job, with per-ad text and creative options.
  • Duplicate by post — clone existing ads by Page post ID so the original post's likes, comments, and shares carry into new campaigns.
  • Partnership (branded content) ads — run ads as a partnership with a creator or brand, from your own uploaded media or an imported Instagram post, with shared or per-ad/ad-set sponsors. (See below.)
  • Media pipeline — import creatives from public URLs, a Google Drive folder, or local files.
  • Preview before launch — resolve a spec, check Meta permissions, and see exactly what would be created.
  • Multi-account — list and work across every Meta ad account, Page, and connected Instagram account you have access to.

Why Ads Uploader

Founded on a decade of hands-on Meta advertising, Ads Uploader gives an agent the deepest, most complete Meta (Facebook & Instagram) ad-creation workflows available — everything needed to actually ship campaigns end to end:

  • Template from any live ad — copy a proven ad's exact settings, then rebuild on top with new media, copy, and targeting.
  • Real bulk — many ads across campaigns and ad sets in a single job, with per-ad and per-ad-set text.
  • Partnership / branded content ads — uploaded-media partnerships (Facebook + Instagram) and imported Instagram creator posts, with shared or per-ad/ad-set sponsors and header modes.
  • Duplicate preserving social proof — clone by post so likes, comments, and shares carry into new campaigns.
  • Creative depth — carousel, flexible, Multi-Media, Dynamic Optimization, creative enhancements, Advantage+ targeting, CTA and URL tagging.
  • Human-in-the-loop by design — validate-only previews and saved builds you finish in the web app.

Built by a team that runs Meta ads at scale, and trusted by performance marketers and agencies managing serious Meta budgets.

Install

Claude Code

claude mcp add --transport http ads-uploader https://adsuploader.com/api/mcp

Claude desktop / Claude.ai

Settings → Connectors → Add custom connector → paste the URL, then complete sign-in and consent in your browser:

https://adsuploader.com/api/mcp

ChatGPT

Settings → Connectors (custom MCP) → add the server URL https://adsuploader.com/api/mcp → sign in when prompted.

Cursor

Add Ads Uploader to Cursor

This repository includes an Agent Plugins plugin.json and mcp.json, plus a .mcp.json compatibility file for directory discovery. The plugin connects to the hosted server; authentication happens in your browser.

Add to ~/.cursor/mcp.json (or a project .cursor/mcp.json):

{
  "mcpServers": {
    "ads-uploader": {
      "url": "https://adsuploader.com/api/mcp"
    }
  }
}

After adding the server, complete the Ads Uploader sign-in and consent prompt. Ask the agent to list your ad accounts to check the connection.

Grok

Open Grok Connectors, choose New Connector → Custom, and enter https://adsuploader.com/api/mcp. Follow the authentication prompt. See the Grok connection guide for prerequisites and example prompts; this host connection is awaiting an end-to-end test.

Codex

Add to ~/.codex/config.toml:

[mcp_servers.ads-uploader]
command = "npx"
args = ["mcp-remote", "https://adsuploader.com/api/mcp"]

Local stdio package

For hosts that need to upload files directly from disk. Requires Node.js 18+.

npm install -g @adsuploader/cli @adsuploader/mcp
ads login
{
  "mcpServers": {
    "ads-uploader": {
      "command": "ads-mcp"
    }
  }
}

The hosted server authenticates through OAuth in your browser — no token copying. The local package reads the credentials saved by ads login. Ask the agent to list my ad accounts to confirm the connection.

Tools

Every tool carries a display title and read-only / destructive hints so your host can show the right guardrails.

Accounts & discovery (read-only)

ToolWhat it does
ads_whoamiShow which Ads Uploader user this session is authenticated as
ads_list_accountsList Meta ad accounts available to you
ads_list_campaignsList campaigns in an ad account (name/status filters)
ads_list_adsetsList ad sets in a campaign
ads_list_adsList ads in an ad set
ads_get_adGet one ad with its creative details
ads_list_pagesList Facebook Pages and their connected Instagram accounts
ads_search_targetingSearch Meta targeting values for a build

Presets & saved builds

ToolWhat it does
ads_list_presets / ads_get_presetBrowse saved API and ad-text presets
ads_save_presetSave an existing ad as a reusable preset
ads_list_builds / ads_get_buildBrowse saved uploader builds
ads_save_build / ads_update_buildCreate or edit a durable saved build
ads_fork_buildFork a saved build into a new draft
ads_delete_buildDelete a saved build

Media

ToolWhat it does
ads_uploadUpload media from URLs, a Google Drive folder, or disk
ads_upload_finalizeFinalize a presigned upload batch
ads_list_uploads / ads_get_uploadList batches or poll an ingest job

Create & duplicate

ToolWhat it does
ads_createCreate ads from a full AdSpec or saved build, incl. partnership ads
ads_previewResolve a spec, check Meta permissions and partnership sponsors, without creating anything
ads_duplicate_by_postDuplicate ads by Page post ID, preserving social proof
ads_duplicate_by_post_previewPreview a post-ID duplication
ads_get_job / ads_get_duplicationPoll or resume a running job
ads_cancel_jobCancel a creation or ingest job

See SKILL.md for the full per-parameter reference agents should follow.

Partnership (branded content) ads

ads_create and ads_preview support partnership ads two ways:

  • Your own uploaded media, as a partnership on Facebook or Instagram — choose a partner (the Second Identity) by Page and/or Instagram account, apply it across the whole launch or per ad / ad set, and pick the header mode (both identities, partner-only, or dynamic). An Instagram-only partner is supported.
  • Import an existing Instagram creator post by URL, shortcode, source ID, or ad code, and set the sponsor and text per ad, per ad set, or shared.

Previews report the effective sponsors per ad and check partnership authorization for the First Identity before anything is created. Facebook post imports, mixed post/upload batches, and Threads on imported posts are not supported.

Example prompts

  • "Using any ad from my Sales ad set as the template, launch these 100 creatives — and write a unique headline and primary text for each."
  • "Take my best-performing sales ad and build 20 variations with different primary-text hooks, all paused in a new ad set."
  • "Assemble a saved build from these creatives and copy, then give me the link to review and launch it in the Ads Uploader web app."
  • "Duplicate the ad behind this Facebook post into my Retargeting ad set so the likes and comments carry over."
  • "Import this Instagram creator post as a partnership ad with our brand as the sponsor, and preview the sponsors before creating."
  • "Upload the creatives in this Google Drive folder, then build ads from them in a new ad set with a unique hook per product."
  • "Preview what would be created from my saved build 'Q4 Prospecting' before anything goes live."
  • "Search interest targeting for 'home fitness' and add the top matches to my build."

How it works

  • Draft / preview first. ads_preview resolves posts, media, and permissions using read and validate-only calls — it never creates ads or stores codes.
  • Hand off to the web app. Instead of launching headlessly, the agent can assemble a saved build and hand you a link — it hydrates in the Ads Uploader web uploader (an open tab picks it up automatically) so you review and launch from the full UI.
  • Long jobs stay responsive. The hosted server returns still_running with a jobId after ~60s so tool calls stay under proxy deadlines; resume with ads_get_job.
  • OAuth, not tokens. The hosted server authenticates with OAuth 2.1 (PKCE) in your browser.

Learn more

Support

Questions or issues: support@adsuploader.com

License

The documentation, examples and connector configuration explicitly listed in LICENSE are available under the MIT License. You can reuse and adapt those files while retaining the license and copyright notice. The license field in plugin.json refers only to this public connector package and the files covered by that license.

Ads Uploader remains proprietary. The hosted product, application and backend source code, MCP server implementation, API/CLI implementation, and separately distributed npm packages (including @adsuploader/mcp and @adsuploader/cli) are outside this license. Linking to a package or service does not license its implementation. Service use remains subject to your subscription, permissions and Terms of Service.

The assets/ directory, logos, brand artwork and trademarks are excluded from the MIT license. All rights in excluded material are reserved by their respective owners. No right to imply affiliation or endorsement is granted.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @adsuploader/mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "com-adsuploader-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@adsuploader/mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@adsuploader/mcpnpm

Compatible MCP Clients

Ads Uploader works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More