add_extensions_to_native_campaign
Attach existing library extensions (sitelinks, callouts, etc.) to a native-structure Google Ads / Microsoft Ads campaign, so they actually serve when the campaign launches.
Writes extensions
Creates or changes something in the account. Put it behind whatever review your agent uses.
What it does
Attach existing library extensions (sitelinks, callouts, etc.) to a native-structure Google Ads / Microsoft Ads campaign, so they actually serve when the campaign launches.
ALSO KNOWN AS: add extension to campaign, attach sitelink, put sitelink on campaign, link extension to campaign, enable extension for campaign
KEYWORDS: add, attach, link, bind, extension, sitelink, callout, campaign, native, native structure, channel first, google ads, microsoft ads, bing
WHY THIS EXISTS: creating an extension only puts it in the account library — it is NOT attached to any campaign and will not serve. This tool performs the binding.
WHEN TO USE:
- "Add our 'Book a Demo' sitelink to campaign X"
- "Attach these callouts to the native search campaign"
- After create_google_sitelink_extension, when the user wants it live on a specific campaign
WHEN NOT TO USE:
- The campaign uses the Precision / METADATA structure — this tool covers native-structure campaigns only and will tell you so. Precision binds extensions per-creative and has no tool yet; direct the user to the platform UI.
- You do not have the extension's internal id → call list_extensions first
- Removing an attachment → use remove_extensions_from_native_campaign
INPUTS (all required):
- campaign_id: wizard campaign id
- channel: GOOGLE_ADS or MICROSOFT_ADS
- extension_ids: internal ids from list_extensions (the `id` field, NOT `externalId`)
BEHAVIOUR: additive — existing attachments are preserved. Safe to re-run; already-attached ids are reported and left alone.
ORDERING CAVEAT: add_and_edit_native_campaign_elements rebuilds the channel's native containers and CLEARS extension attachments. Attach extensions AFTER any native element edits, or re-attach afterwards.
EXAMPLE:
add_extensions_to_native_campaign(campaign_id=8421, channel="GOOGLE_ADS", extension_ids=[551, 552])Arguments
| Argument | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The wizard campaign id. |
channel |
string | required | Search channel. Ad extensions are a search-channel-only concept. one of: GOOGLE_ADS, MICROSOFT_ADS |
extension_ids |
array | required | Internal library extension ids from list_extensions. These are the `id` field, NOT `externalId` (the ad platform's own id). |
Request
curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
-H "Authorization: $METADATA_PAT" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"add_extensions_to_native_campaign","arguments":{"campaign_id":0,"channel":"GOOGLE_ADS","extension_ids":[]}}}'
Response
No recorded response. This tool writes to the account, so it is never executed to build these docs.
The request above is still the exact shape to send. Nothing on this page is invented.
Related
Other extensions tools: