MMetadata /docs
Docs/Tools/search_linkedin_engagement_sources

search_linkedin_engagement_sources

Find which LinkedIn campaigns or pages to retarget, for a chosen engagement source type.

Read analytics

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

What it does

Find which LinkedIn campaigns or pages to retarget, for a chosen engagement source
                type. STEP 2 of the LinkedIn Engagement Retargeting flow.

                Each result's `id` is the LinkedIn URN to pass as `engagement_source_urns` to
                create_linkedin_engagement_retargeting_audience. The audience will contain people who
                engaged with the sources you select, so this choice determines who is in it.

                REQUIRED FIRST: call get_linkedin_engagement_source_types and pick an
                `engagementSourceType` plus an `engagementTrigger`.

                **ALWAYS PASS engagement_trigger AND lookback_window_days TOGETHER.** With both, every
                candidate carries `engagementCount`, the volume of engagement behind it, sorted
                highest-first — which is the only way to tell which sources are worth retargeting.
                Without the pair the platform returns no counts and the order is not meaningful.
                Use the same trigger and lookback you intend to create the audience with, or the
                numbers describe a different audience than the one you are about to build.

                DO NOT CALL THIS FOR THE WEBSITE SOURCE TYPE. Website retargeting is defined by URL
                match rules, not by picking sources, and this tool refuses it. Go straight to the
                create tool with `page_set_name` and `url_match_groups`.

                READING THE RESULTS:
                - `id` — the LinkedIn URN (e.g. `urn:li:sponsoredCampaign:743409464`). Pass it
                  verbatim. It is NOT the numeric campaign id and must never be reconstructed.
                - `name` — the campaign or page name, for telling the user what you picked.
                - `engagementCount` — how many engagements that source drew under the trigger and
                  lookback you passed. Absent when you did not pass both.
                - `engagementMetricLabel` / `engagementMetric` — WHAT was counted, which follows the
                  trigger: "Total Engagement" for an any-interaction trigger, "Opens" for a
                  conversation open, clicks for a chargeable-click one. Quote this label when you
                  report numbers, so "1,200 opens" is not reported as impressions.
                - `status` — the campaign's state. `PENDING_DELETION` campaigns still appear and are
                  still valid engagement history, but prefer live ones when both have volume.
                  ORGANIZATION_PAGES candidates carry no status; that is normal, not missing data.

                HOW TO CHOOSE:
                - Prefer sources with real `engagementCount`. A source with 0 builds an audience
                  that will stay empty however long LinkedIn is given.
                - Selecting several sources is normal and usually right: the audience is the UNION of
                  everyone who engaged with any of them, so more sources means more reach.
                - IF EVERY CANDIDATE SHOWS 0, do not silently build from all of them. That means the
                  account has no engagement of this kind in the window. Say so, and offer the real
                  options: a longer lookback, a shallower trigger, a different source type, or
                  waiting until campaigns have run. Building anyway produces an empty audience the
                  user will believe is populated.
                - Only the top `limit` results come back, not the whole account. Narrow with `search`
                  rather than assuming the list is complete.

                WHEN TO USE:
                - After picking a source type, to find what can be retargeted
                - "Which of my video campaigns got the most engagement?"
                - "Find my lead gen form campaigns"
                - To resolve a campaign the user named to its URN, via `search`

                PARAMETERS:
                - engagement_source_type: an `engagementSourceType` from step 1 (required).
                  WEBSITE is not valid here.
                - engagement_trigger: a trigger valid for that source type. Pass it WITH
                  lookback_window_days to get engagement counts and a meaningful order.
                - lookback_window_days: 30, 60, 90, 180 or 365. Pairs with engagement_trigger.
                - search: narrow by name, case-insensitive substring. Use it when the user named a
                  campaign, or when the account has many campaigns.
                - limit: how many to return (default 12, max 100).

                RETURNS:
                - sources[]: the candidates, as described above
                - engagementMetricLabel: what the counts measure
                - count: how many came back
                - next_step: which tool to call next

                IMPORTANT NOTES:
                - ORGANIZATION_PAGES returns exactly one candidate, the account's own company page.
                  That is the whole result set, not a truncated one.
                - An empty `sources` list means the account has nothing of that type. Report that and
                  suggest a different source type rather than retrying the same call.

Arguments

ArgumentTypeNotes
engagement_source_type string required An `engagementSourceType` from get_linkedin_engagement_source_types (e.g. VIDEO_ADS, SINGLE_IMAGE_ADS, DOCUMENT_ADS, CONVERSATION_ADS, LEAD_GEN_FORMS, ORGANIZATION_PAGES). WEBSITE is not valid here — it has no sources to pick.
search string Narrow candidates by name (case-insensitive substring). Use when the user named a specific campaign, or when the account has more campaigns than `limit`.
limit integer How many candidates to return. Default 12, max 100. Results are the TOP N by engagement, not the whole account.
engagement_trigger string An `engagementTrigger` valid for this source type. Pass together with lookback_window_days to get `engagementCount` per candidate, sorted highest-first. Use the same trigger you will create the audience with.
lookback_window_days integer Window the engagement counts are measured over. Pass together with engagement_trigger, and use the same value you will create the audience with.
one of: 30, 60, 90, 180, 365

Request

Request template, not a complete runnable example. Replace placeholders, empty objects, arrays, and zero values with valid account-specific inputs. Read required fields and nested constraints in the full schema. Confirm the account, connected channels, and referenced assets before calling a write tool.

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":"search_linkedin_engagement_sources","arguments":{"engagement_source_type":"<engagement_source_type>"}}}'

Response

No recorded response. This tool needs arguments that only exist inside an account, so no response is recorded here. The request is an illustrative template. Fill required fields and check the current schema before calling it. No response is fabricated.

Other analytics tools:

Browse the tool catalog · machine-readable index