MMetadata /docs
Docs/Tools/list_extensions

list_extensions

List the account's Google Ads / Microsoft Ads library extensions (sitelinks, callouts, snippets, etc.) with their internal ids.

Read extensions

Returns data. Calling it changes nothing, so it is safe in an unattended loop.

What it does

List the account's Google Ads / Microsoft Ads library extensions (sitelinks, callouts, snippets, etc.) with their internal ids.

                ALSO KNOWN AS: list extensions, show extensions, find sitelink, which extensions do we have, extension library, browse extensions

                KEYWORDS: list, show, find, browse, extensions, sitelink, callout, library, google ads, microsoft ads, bing, id

                WHEN TO USE:
                - "What sitelinks do we have?" / "Show our Google Ads extensions"
                - ALWAYS before add_extensions_to_native_campaign or remove_extensions_from_native_campaign — those need internal ids, and this is the only tool that returns them. The create_*_extension tools return an empty body and cannot tell you the new id.

                WHEN NOT TO USE:
                - Creating a new extension → use the relevant create_*_extension tool
                - Non-search channels (Facebook / LinkedIn / Reddit) — extensions do not exist there

                INPUTS:
                - channel (required): GOOGLE_ADS or MICROSOFT_ADS
                - types (optional):   filter, e.g. ["SITELINK"]
                - name (optional):    name filter. Extension names are AUTO-DERIVED, not user-chosen — a sitelink's name is its link text and both description lines joined by newlines, truncated to 50 chars. Filter by `types` and match on the returned fields instead of guessing a name.
                - page / size (optional): pagination, defaults 0 / 50

                Returns {totalElements, totalPages, data:[{id, name, type, createdDate, ...}]}. Only campaign-attachable extensions are listed (account-level ones are excluded by the platform).

Arguments

ArgumentTypeNotes
channel string required Search channel. Ad extensions are a search-channel-only concept.
one of: GOOGLE_ADS, MICROSOFT_ADS
types array Optional extension-type filter, e.g. ["SITELINK"].
name string Optional name filter. Names are auto-derived by the platform, not user-chosen, so prefer filtering by `types`.
page integer 0-based page index. Defaults to 0.
size integer Page size. Defaults to 50.

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":"list_extensions","arguments":{"channel":"GOOGLE_ADS"}}}'

Response

Recorded with these arguments. Enum values are the first the tool's own schema declares; ids were fetched live from a list_ call immediately before.

arguments used
{
 "channel": "GOOGLE_ADS"
}

Real, from the production server, in 1387 ms. The full response was 16,802 bytes; this is the first part of it. Values that identify a customer or disclose money are replaced with typed placeholders; keys, types and nesting are exactly as returned.

recorded response
{
 "totalElements": 38,
 "totalPages": 1,
 "data": [
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "SITELINK",
   "createdDate": "2026-07-31T18:22:17",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "url": "[url redacted]",
   "linkText": "[linkText redacted]",
   "description1": "[description1 redacted]",
   "description2": "[description2 redacted]"
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "STRUCTURED_SNIPPET",
   "createdDate": "2026-07-31T18:22:17",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "header": "[header redacted]",
   "values": [
    "[values redacted]",
    "[values redacted]",
    "[values redacted]",
    "[values redacted]"
   ]
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "CALLOUT",
   "createdDate": "2026-07-31T18:22:15",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "calloutText": "[calloutText redacted]"
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "STRUCTURED_SNIPPET",
   "createdDate": "2026-07-08T17:40:36",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "header": "[header redacted]",
   "values": [
    "[values redacted]",
    "[values redacted]",
    "[values redacted]",
    "[values redacted]",
    "[values redacted]",
    "[values redacted]"
   ]
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "CALLOUT",
   "createdDate": "2026-07-08T17:40:16",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "calloutText": "[calloutText redacted]"
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "CALLOUT",
   "createdDate": "2026-07-08T17:40:05",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "calloutText": "[calloutText redacted]"
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "CALLOUT",
   "createdDate": "2026-07-08T17:39:53",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "calloutText": "[calloutText redacted]"
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "CALLOUT",
   "createdDate": "2026-07-08T17:39:41",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "calloutText": "[calloutText redacted]"
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "CALLOUT",
   "createdDate": "2026-07-08T17:39:25",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "calloutText": "[calloutText redacted]"
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "CALLOUT",
   "createdDate": "2026-07-08T17:39:08",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "calloutText": "[calloutText redacted]"
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "CALLOUT",
   "createdDate": "2026-07-08T17:38:55",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "calloutText": "[calloutText redacted]"
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "CALLOUT",
   "createdDate": "2026-07-08T17:38:45",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "calloutText": "[calloutText redacted]"
  },
  {
   "id": "[number redacted]",
   "name": "[name redacted]",
   "type": "CALLOUT",
   "createdDate": "2026-07-08T17:38:36",
   "disapproved": false,
   "disapprovalReasons": [],
   "thumbnail": "[thumbnail redacted]",
   "calloutText": "[calloutText redacted]"
  },
  {
   "id": "[number redacted]",
   "name"
  … truncated

Other extensions tools:

All 160 tools · machine-readable index