Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Ads Uploader

NPM · @ADSUPLOADER/MCP · 2 COMPONENTS · SCANNED SEP 28

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

+15 this week 60 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency10
Schema Quality & AI Usability65
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 5128 tokens (~183/item across 28 items; 28 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage90
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 71% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the Ads Uploader MCP server?

Ads Uploader runs locally as an npm package, launched with npx -y @adsuploader/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @adsuploader/mcp

# add to Claude Code
claude mcp add com-adsuploader-mcp -- npx -y @adsuploader/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "com-adsuploader-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@adsuploader/mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-adsuploader-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@adsuploader/mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add com-adsuploader-mcp -- npx -y @adsuploader/mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-adsuploader-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@adsuploader/mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-adsuploader-mcp --command npx --arg -y --arg @adsuploader/mcp
# ~/.hermes/config.yaml
mcp_servers:
  com-adsuploader-mcp:
    command: "npx"
    args: ["-y", "@adsuploader/mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-adsuploader-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@adsuploader/mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add com-adsuploader-mcp -t stdio -c npx -a -y @adsuploader/mcp
// mcp.json
{
  "mcpServers": {
    "com-adsuploader-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@adsuploader/mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 22 Sept 26 +15
    • Malware scan: unverified → pass ▲ security
  • 21 Sept 26 45

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 28 Sept 2026 · Analysed npm/@adsuploader/mcp@0.3.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 92 packages
Packages resolved 92
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 28 exposed · ~5,128 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
ads_cancel_job ~42

Cancel a running ad creation job or media ingest job.

NameTypeReqDescription
jobIdstringyesAd creation job ID or media ingest job ID (ingest_...).

No output schema declared.

No examples provided.

ads_create ~855

Create ads from a v1 AdSpec request body or saved build, including Instagram existing-post partnership ads with common, per-ad-set, or per-ad sponsors and text. Import by Instagram URL, shortcode, source ID, or ad code in mediaItems. Uploaded media supports Facebook and Instagram partnerships: set profile.partnership.enabled, shared or campaign sponsors, and texts.perAd/perAdset sponsors. Null both row sponsor IDs means No Partner; sponsorPageUseInstagramAccount supports Instagram-only partners. Approval is checked for the effective First Identity. Omit uploaderMode for uploads. Facebook post imports, mixed post/upload batches and Threads on imported posts are unsupported. CTA fields use Meta enum values such as SHOP_NOW. Standard ads normalize human labels such as Shop Now; imported partnership posts require the enum and do not normalize labels. Saved builds use their upload batch first, then fall back by media name to account-scoped mediaHash/image and mediaId/video identifiers captured in mediaItems. Videos used as standard, carousel, flexible, or placement media also require captured thumbnailHash; Multi Media videos require captured thumbnailUrl. Supports campaign-qualified texts.perAdset overrides and per-campaign profile.campaigns identities in multi-campaign launches. Admin-only options.testMode runs Meta validate_only without creating Meta objects and returns metaValidation passed, failed and not-checked counts. This blocks until the server job completes or the 30 minute ceiling is reached. If it returns status "still_running", the job is still progressing server-side; call ads_get_job with the returned jobId until complete is true.

NameTypeReqDescription
accountIdstring–Ad account ID, e.g. act_123.
adNamePatternstring––
adPresetIdstring–Saved API preset ID. Mutually exclusive with campaign, adSet, and copyFromAd.
adSet–––
aiDisclosureboolean––
buildIdstring–Saved build ID. When provided, the build's portable spec is used as the create body.
campaign–––
carouselarray–Carousel creatives using media names from uploadId or captured mediaItems. Card text stays in the public AdSpec shape.
copyFromAdstring–Existing Meta ad ID to copy settings from.
creative–––
creativeEnhancements–––
cta–––
executionPlan–––
flexiblearray–Flexible-format creatives using media names from uploadId or captured mediaItems.
launchBlockersarray–Saved-build metadata. Ignored when creating ads.
launchableboolean–Saved-build metadata. Ignored when creating ads.
mediaItemsarray–Portable saved-build media metadata. When uploadId is unavailable or incomplete, images resolve by mediaHash and videos by mediaId. Standard, carousel, flexible, and placement videos also need thumbn…
multimediaarray–Multi Media creatives with optional per-asset public text fields.
options–––
preBuiltApiCalls–––
processedConfig–––
profile–––
resetAdNameIndexPerAdSetboolean–Restart the {index} token for ad names in each ad set.
targetingobject–AdSpec-shaped audience override for NEW ad sets: locations, optional age/gender, and one flat OR group of mixed detailed-targeting selections. Omitted fields inherit from the source ad set. Set detai…
textPresetIdstring–Saved text preset ID. Mutually exclusive with texts.
texts–––
uploadIdstring–Upload batch ID returned by ads_upload or ads_get_upload.
urlTagsstring––

No output schema declared.

No examples provided.

ads_delete_build ~35

Delete one saved build by ID.

NameTypeReqDescription
buildIdstringyesSaved build ID, e.g. build_abc123...

No output schema declared.

No examples provided.

ads_duplicate_by_post ~377

Duplicate existing Meta ads selected by Page post ID into an existing ad set or new cloned ad set while preserving their post references. Use postIds for discovery or adIds for exact selection, never both. Preview returns sourceCandidates and a pinned resolvedRequest. Ambiguous matches require explicit adIds; warned live runs require acknowledgeWarnings:true or useCreativeId:true. This blocks until the duplication completes or the 30 minute ceiling is reached. If it returns status "still_running", call ads_get_duplication with the returned jobId until complete is true.

NameTypeReqDescription
accountIdstringyesMeta ad account ID, e.g. act_123.
acknowledgeWarningsboolean–Explicitly continue after reviewing preview creative warnings. Required for warned live runs unless useCreativeId is true.
adIdsarray–Ordered exact source ad IDs. Use preview.resolvedRequest to retain the reviewed selection; exclusive with postIds.
adNamePatternstring–New ad name pattern. Supports {AdName} and {Index}.
adSetIdstring–Existing destination ad set, or the template when a new-ad-set mode is selected. Must belong to campaignId and the selected account.
campaignIdstring–Existing destination campaign ID.
newAdSet––One shared new ad set. Cannot be combined with newAdSetPerAd.
newAdSetPerAd––One new ad set per source ad. Cannot be combined with newAdSet; one source produces one shared clone.
pausedboolean–Create duplicated ads paused.
postIdsarray–Discover source ads by Page post ID. Multiple matches require an explicit adIds selection; exclusive with adIds.
useCreativeIdboolean–Reuse original creative IDs instead of creating post-reference creatives.

No output schema declared.

No examples provided.

ads_duplicate_by_post_preview ~349

Preview a post-ID duplication of existing Meta ads selected by Page post ID without creating anything. Use postIds for discovery or adIds for exact selection, never both. Preview returns sourceCandidates and a pinned resolvedRequest. Ambiguous matches require explicit adIds; warned live runs require acknowledgeWarnings:true or useCreativeId:true. Returns a cleaned source-to-destination plan and never exposes raw Meta payloads.

NameTypeReqDescription
accountIdstringyesMeta ad account ID, e.g. act_123.
acknowledgeWarningsboolean–Explicitly continue after reviewing preview creative warnings. Required for warned live runs unless useCreativeId is true.
adIdsarray–Ordered exact source ad IDs. Use preview.resolvedRequest to retain the reviewed selection; exclusive with postIds.
adNamePatternstring–New ad name pattern. Supports {AdName} and {Index}.
adSetIdstring–Existing destination ad set, or the template when a new-ad-set mode is selected. Must belong to campaignId and the selected account.
campaignIdstring–Existing destination campaign ID.
newAdSet––One shared new ad set. Cannot be combined with newAdSetPerAd.
newAdSetPerAd––One new ad set per source ad. Cannot be combined with newAdSet; one source produces one shared clone.
pausedboolean–Create duplicated ads paused.
postIdsarray–Discover source ads by Page post ID. Multiple matches require an explicit adIds selection; exclusive with adIds.
useCreativeIdboolean–Reuse original creative IDs instead of creating post-reference creatives.

No output schema declared.

No examples provided.

ads_fork_build ~111

Fork a saved build into a new autosaved draft. Use this instead of editing the existing build when the user wants a variant and the original must stay intact. The fork copies the uploader configuration and media references, receives a new build ID, and can be edited independently. Confirm that the fork was created; share its URL only when the user asks for it or says there is no open uploader tab.

NameTypeReqDescription
buildIdstringyesSaved build ID to duplicate, e.g. build_abc123...

No output schema declared.

No examples provided.

ads_get_ad ~46

Get one ad with its creative details.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
adIdstringyesMeta ad ID.

No output schema declared.

No examples provided.

ads_get_build ~73

Get one saved build by ID. Returns spec and webState without truncation. Update spec for content changes. Treat webState as an opaque web uploader session snapshot and do not reconstruct it. Other metadata is trimmed for display.

NameTypeReqDescription
buildIdstringyesSaved build ID, e.g. build_abc123...

No output schema declared.

No examples provided.

ads_get_duplication ~47

Get or resume a duplication job by jobId. After ads_duplicate_by_post returns still_running, poll until complete is true.

NameTypeReqDescription
jobIdstringyesDuplication job ID.

No output schema declared.

No examples provided.

ads_get_job ~74

Get or resume an ad creation job by jobId, returning its summary and recent operations. After ads_create returns still_running, poll until complete is true.

NameTypeReqDescription
jobIdstringyesAd creation job ID.
operationsstring–Use recent for the last 20 operations or full for the complete operation log.

No output schema declared.

No examples provided.

ads_get_preset ~48

Get one saved preset by ID.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
presetIdstringyesAds Uploader preset ID.

No output schema declared.

No examples provided.

ads_get_upload ~92

Get a completed upload batch by batchId, or poll a background media-ingest job by jobId until complete is true.

NameTypeReqDescription
accountIdstring–Optional ad account ID, e.g. act_123.
batchIdstring–Completed upload batch ID.
jobIdstring–Background ingest job ID. Poll until complete is true; the final batch summary is returned in result.

No output schema declared.

No examples provided.

ads_list_accounts ~22

List Meta ad accounts available to the authenticated Ads Uploader user.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ads_list_ads ~100

List ads in an ad set.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
adSetIdstringyesMeta ad set ID.
limitinteger––
offsetinteger––
searchstring–Optional ad name search text.
statusstring–'active' returns only active/in-process ads (default); 'all' also includes paused and archived.

No output schema declared.

No examples provided.

ads_list_adsets ~101

List ad sets in a campaign.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
campaignIdstringyesMeta campaign ID.
limitinteger––
offsetinteger––
searchstring–Optional ad set name search text.
statusstring–'active' returns only active/in-process ad sets (default); 'all' also includes paused and archived.

No output schema declared.

No examples provided.

ads_list_builds ~59

List saved uploader builds for the authenticated user, optionally filtered by ad account.

NameTypeReqDescription
accountIdstring–Optional ad account ID filter, e.g. act_123.
limitinteger––
offsetinteger––

No output schema declared.

No examples provided.

ads_list_campaigns ~96

List campaigns in an ad account, optionally filtered by name search and status.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
limitinteger––
offsetinteger––
searchstring–Optional campaign name search text.
statusstring–'active' returns only active/in-process campaigns (default); 'all' also includes paused and archived.

No output schema declared.

No examples provided.

ads_list_pages ~60

List Facebook Pages (with their connected Instagram accounts) available for profile overrides in an ad account.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
limitinteger––
offsetinteger––

No output schema declared.

No examples provided.

ads_list_presets ~61

List saved API or ad text presets for an ad account.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
limitinteger––
offsetinteger––
typestring––

No output schema declared.

No examples provided.

ads_list_uploads ~52

List recent media upload batches for an ad account.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
limitinteger––
offsetinteger––

No output schema declared.

No examples provided.

ads_preview ~706

Preview a v1 AdSpec or saved build, including uploaded-media partnerships and Instagram existing-post partnership imports. Uploaded-media previews report effective sponsors, approval and header mode per ad and ad set. Resolves posts and checks Meta permissions using read/validate-only calls without creating ads or storing codes. Returns per-ad creators, sponsors, optional text, authorization status, warnings, and a code-free resolvedSpec. Supply transient codes again at create. Uploaded media supports Facebook and Instagram partnerships: set profile.partnership.enabled, shared or campaign sponsors, and texts.perAd/perAdset sponsors. Null both row sponsor IDs means No Partner; sponsorPageUseInstagramAccount supports Instagram-only partners. Approval is checked for the effective First Identity. Omit uploaderMode for uploads. Facebook post imports, mixed post/upload batches and Threads on imported posts are unsupported.

NameTypeReqDescription
accountIdstring–Ad account ID, e.g. act_123.
adNamePatternstring––
adPresetIdstring–Saved API preset ID. Mutually exclusive with campaign, adSet, and copyFromAd.
adSet–––
aiDisclosureboolean––
buildIdstring–Saved build ID. When provided, the build's portable spec is used as the create body.
campaign–––
carouselarray–Carousel creatives using media names from uploadId or captured mediaItems. Card text stays in the public AdSpec shape.
copyFromAdstring–Existing Meta ad ID to copy settings from.
creative–––
creativeEnhancements–––
cta–––
executionPlan–––
flexiblearray–Flexible-format creatives using media names from uploadId or captured mediaItems.
launchBlockersarray–Saved-build metadata. Ignored when creating ads.
launchableboolean–Saved-build metadata. Ignored when creating ads.
mediaItemsarray–Portable saved-build media metadata. When uploadId is unavailable or incomplete, images resolve by mediaHash and videos by mediaId. Standard, carousel, flexible, and placement videos also need thumbn…
multimediaarray–Multi Media creatives with optional per-asset public text fields.
options–––
preBuiltApiCalls–––
processedConfig–––
profile–––
resetAdNameIndexPerAdSetboolean–Restart the {index} token for ad names in each ad set.
targetingobject–AdSpec-shaped audience override for NEW ad sets: locations, optional age/gender, and one flat OR group of mixed detailed-targeting selections. Omitted fields inherit from the source ad set. Set detai…
textPresetIdstring–Saved text preset ID. Mutually exclusive with texts.
texts–––
uploadIdstring–Upload batch ID returned by ads_upload or ads_get_upload.
urlTagsstring––

No output schema declared.

No examples provided.

ads_save_build ~422

Create a durable saved build for the authenticated user. A spec-only build is supported and preferred for agent-created configurations because the web uploader hydrates it and generates its own webState on resume. Portable specs support the full v1 launch surface, including campaign-qualified texts.perAdset entries and per-campaign profile.campaigns identity overrides. Web-captured builds can launch without uploadId when spec.mediaItems carries a mediaHash for every image and mediaId for every video, plus thumbnailHash for video paths that require it (Multi Media uses thumbnailUrl). Do not construct webState by hand. Only provide webState when round-tripping a webState previously read from a build without changing its structure. accountId is optional when it can be derived from webState.selectedAccount.accountId, webState.selectedAccount.account_id, or spec.accountId. Confirm that the build was saved. If the user has an open uploader tab, do not repeat the returned url; share it only when the user asks for it or says the tab is closed. For a new headless build with no open uploader tab, give the returned url so the user can open and review it. Use ads_create with buildId to launch it when spec.launchable is true. launchable only describes headless ads_create launches; a launchable:false build still opens, edits, and launches fine in the web uploader, so do not warn web-bound users about it.

NameTypeReqDescription
accountIdstring–Optional ad account ID. The server can also derive it from webState.selectedAccount.accountId, webState.selectedAccount.account_id, or spec.accountId.
namestring–Optional durable build name.
notesstring–Optional free-form notes stored on the build.
specobject–Portable launch specification. Spec-only creation is supported and preferred for agent-created builds.
webStateobject–Opaque web uploader session snapshot. Do not construct it by hand. Only provide webState when round-tripping a snapshot previously read from a build without changing its structure.

No output schema declared.

No examples provided.

ads_save_preset ~75

Save an existing ad as a reusable API preset.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
fromAdIdstringyesExisting Meta ad ID to save as a preset.
namestringyesPreset name.
shareWithTeamboolean––

No output schema declared.

No examples provided.

ads_search_targeting ~166

Search Meta targeting values for ads_create or a saved build spec. Use type=city to find targeting.cities[].key values, type=zip to find targeting.zips[].key values, or type=detailed to find complete {id,name,type} entries for targeting.detailedTargetingGroups. IDs must never be guessed; use this tool to discover them.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
limitinteger––
querystringyesCity name, zip/postal code, or detailed-targeting keyword to search.
typestringyesUse city to find targeting.cities[].key values, zip to find targeting.zips[].key values, or detailed to find detailedTargetingGroups selections.

No output schema declared.

No examples provided.

ads_update_build ~633

Update one saved build by ID: rename it, edit notes, patch its portable spec, or deliberately replace its full spec/webState. Uploaded-media partnerships support profile.partnership for a shared Second Identity and texts.perAd/perAdset sponsor overrides, including both IDs null for No Partner. These builds launch through the CLI and MCP and hydrate their identities in the web uploader. Approval is rechecked at preview and launch. Prefer specPatch for content edits: omitted fields survive and nested text entries merge field-by-field, so changing headlines does not clear link, displayUrl, CTA, URL tags, or AI disclosure. CTA fields use Meta enum values such as SHOP_NOW. Standard ads normalize human labels such as Shop Now; imported partnership posts require the enum and do not normalize labels. specPatch requires the revision from ads_get_build as expectedRevision. Use spec only for a full rewrite because it replaces the whole portable spec. Do not construct webState by hand; only round-trip an unchanged webState previously read from the build. When only portable spec changes, the web uploader regenerates webState on next resume. Setting a name promotes an autosaved build to a kept, named build. Returns updated metadata only; call ads_get_build again to read the stored state. Confirm that the update was saved; an open uploader tab picks it up automatically. Share the build url only when the user asks for it or says the tab is closed. Do not surface webStateStale or launchable/launchBlockers unless the user asked about launching from the CLI/MCP: webStateStale:true after a spec edit is normal and clears itself when the web uploader next opens the build, and launchable only describes headless ads_create launches - it never prevents opening, editing, or launching the build in the web uploader.

NameTypeReqDescription
buildIdstringyesSaved build ID, e.g. build_abc123...
expectedRevisioninteger–Revision returned by ads_get_build. Required with specPatch and recommended for every update; the update fails instead of overwriting a newer revision.
namestring–New build name. Setting a name marks the build as manually saved, so it stops rotating out with autosaves.
notesstring–Free-form notes stored on the build.
spec––Replacement portable spec (the launch configuration used by ads_create with buildId). Send the FULL updated spec object, not a partial diff. Set to null to clear it.
specPatchobject–Preferred for content edits. Field-aware merge patch applied to the stored portable spec: omitted fields survive, nested objects (including individual texts.perAd/perAdset entries) merge, supplied ar…
webStateobject–Opaque web uploader session snapshot. Do not construct this object by hand. Only send it when round-tripping a webState previously read from the build without changing its structure. For content chan…

No output schema declared.

No examples provided.

ads_upload ~226

Upload media to an ad account. Use paths for local disk media, files[].url for public URLs or Google Drive file links, or driveFolderUrl for a public Drive folder. URL and Drive modes return a background jobId to poll with ads_get_upload. Base64 is only for a couple of small images; presigned mode is only for byte-capable environments.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
batchIdstring–Optional existing batch ID for grouping with an earlier upload.
cwdstring–Optional base directory for resolving relative paths.
driveFolderUrlstring–Public Google Drive folder share link for server-side background ingestion.
filesarray–Public media URLs (including Drive file links), small inline images, or presigned metadata.
pathsarray–Local files or directories to upload when running the local stdio server. Relative paths resolve from cwd.
presignedboolean–Only for environments that can PUT bytes themselves. Large files may return multipart part URLs.

No output schema declared.

No examples provided.

ads_upload_finalize ~138

Finalize a presigned upload batch after the client has PUT each file. Hosted calls return a background ingest jobId; poll it with ads_get_upload.

NameTypeReqDescription
accountIdstringyesAd account ID, e.g. act_123.
batchIdstringyesUpload batch ID returned by ads_upload with presigned=true.
filesarray–Files returned by ads_upload presigned mode after the client has PUT each file to uploadUrl or each multipart chunk to parts[].url.
thumbnailMaparray–Optional explicit video-to-thumbnail staged key map. ads_upload usually returns thumbnailFileKey on the video automatically.

No output schema declared.

No examples provided.

ads_whoami ~62

Show which Ads Uploader user this session is authenticated as (email, name, user ID) and the API host it talks to. Use this to verify the tool session matches the account the user is logged into on the web before editing builds or creating ads.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Common questions

What is the Ads Uploader MCP server?

Ads Uploader is an MCP server listed in the public MCP registry as com.adsuploader/mcp. Meta ads bulk launcher: upload creatives, edit builds, preview, and create paused ads. This page covers its npm package (@adsuploader/mcp).

Is the Ads Uploader MCP server safe to use?

Ads Uploader scores 60 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 28 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Ads Uploader MCP server expose?

Ads Uploader exposes 28 tools: ads_whoami, ads_list_accounts, ads_list_campaigns, ads_list_adsets, ads_list_ads, and 23 more. Their descriptions and schemas cost roughly 5,128 tokens of context every time the server is loaded.

Is the Ads Uploader MCP server still maintained?

Ads Uploader is still listed as active in the MCP registry. We last reached this channel on 28 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Ads Uploader MCP server under?

Ads Uploader declares the UNLICENSED licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.