MMetadata /docs
Docs/Tools/search_experiment_recipes

search_experiment_recipes

Find proven CAMPAIGN CONFIGURATIONS to build from — combinations of channel, ad format, audience type, bid strategy and budget band that have run together successfully across mu…

Read campaigns

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

What it does

Find proven CAMPAIGN CONFIGURATIONS to build from — combinations of
channel, ad format, audience type, bid strategy and budget band that have
run together successfully across multiple advertisers.

USE THIS WHEN you are composing a campaign and need to decide HOW to
build it: which channel and format pairing, what kind of audience, which
bid strategy, roughly what daily budget. It answers "what should I
build", not "how is my account performing".

DO NOT USE IT for cohort performance questions ("what's the median CPL
for my industry", "how do we compare to similar companies") — that is
`query_metadata_analytics_benchmarks`. Do not use it for the caller's own
campaign history — that is `query_metadata_analytics_account`.

Every returned recipe is backed by at least five distinct advertisers.
Recipes below that floor are suppressed rather than returned, so an empty
result means "no configuration is proven enough to recommend here", NOT
"no data exists". Say so plainly rather than substituting a guess.

Arguments

ArgumentTypeNotes
query string required Natural-language description of the campaign you are building, e.g. "lead gen campaign targeting IT decision makers", "top of funnel awareness push for a new product launch".
channel any Optional exact filter — "linkedin", "facebook", "google_ads", "instagram". Omit to search every channel.
ad_format any Optional exact filter — "image", "video", "document", "carousel", "text".
audience_type any Optional exact filter, e.g. "firmographic_include", "linkedin_retargeting", "native_targeting_dynamic".
bid_strategy any Optional exact filter, e.g. "auto_bid", "manual_bid", "metadata_bid_agent".
num_results integer How many recipes to return (default 5).

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":"search_experiment_recipes","arguments":{"query":"<query>"}}}'

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
{
 "query": "linkedin"
}

Real, from the production server, in 2861 ms. The full response was 4,535 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
{
 "status": "ok",
 "tool": "search_experiment_recipes",
 "row_count": 5,
 "rows": [
  [
   "[rows redacted]",
   "linkedin",
   "image",
   "native_targeting_dynamic",
   "small",
   "manual_bid",
   "under_100",
   "[rows redacted]",
   "ent",
   "[number redacted]",
   "[number redacted]",
   "HIGH",
   5,
   54
  ],
  [
   "[rows redacted]",
   "linkedin",
   "image",
   "linkedin_retargeting",
   "medium",
   "manual_bid",
   "under_100",
   "unknown",
   "mid",
   "[number redacted]",
   "[number redacted]",
   null,
   5,
   26
  ],
  [
   "[rows redacted]",
   "linkedin",
   "image",
   "linkedin_retargeting",
   "small",
   "manual_bid",
   "under_100",
   "unknown",
   "mid",
   "[number redacted]",
   "[number redacted]",
   null,
   5,
   "[number redacted]"
  ],
  [
   "[rows redacted]",
   "linkedin",
   "image",
   "unknown",
   "unknown",
   "manual_bid",
   "under_100",
   "unknown",
   "unknown",
   "[number redacted]",
   "[number redacted]",
   null,
   10,
   "[number redacted]"
  ],
  [
   "[rows redacted]",
   "linkedin",
   "image",
   "unknown",
   "unknown",
   "manual_bid",
   "under_100",
   "[rows redacted]",
   "mid",
   "[number redacted]",
   "[number redacted]",
   "HIGH",
   5,
   "[number redacted]"
  ]
 ],
 "columns": [
  "recipe_id",
  "channel",
  "ad_format",
  "audience_type",
  "audience_size_band",
  "bid_strategy",
  "budget_band",
  "industry",
  "employee_size_band",
  "avg_cpl",
  "avg_mql_rate",
  "benchmark_confidence_tier",
  "tenant_count",
  "experiment_count"
 ],
 "recipes": [
  {
   "recipe_id": "[recipe_id redacted]",
   "channel": "linkedin",
   "ad_format": "image",
   "audience_type": "native_targeting_dynamic",
   "audience_size_band": "small",
   "bid_strategy": "manual_bid",
   "budget_band": "under_100",
   "industry": "[industry redacted]",
   "employee_size_band": "ent",
   "avg_cpl": "[number redacted]",
   "avg_mql_rate": "[number redacted]",
   "benchmark_confidence_tier": "HIGH",
   "tenant_count": 5,
   "experiment_count": 54,
   "score": "[number redacted]"
  },
  {
   "recipe_id": "[recipe_id redacted]",
   "channel": "linkedin",
   "ad_format": "image",
   "audience_type": "linkedin_retargeting",
   "audience_size_band": "medium",
   "bid_strategy": "manual_bid",
   "budget_band": "under_100",
   "industry": "unknown",
   "employee_size_band": "mid",
   "avg_cpl": "[number redacted]",
   "avg_mql_rate": "[number redacted]",
   "benchmark_confidence_tier": null,
   "tenant_count": 5,
   "experiment_count": 26,
   "score": "[number redacted]"
  },
  {
   "recipe_id": "[recipe_id redacted]",
   "channel": "linkedin",
   "ad_format": "image",
   "audience_type": "linkedin_retargeting",
   "audience_size_band": "small",
   "bid_strategy": "manual_bid",
   "budget_band": "under_100",
   "industry": "unknown",
   "employee_size_band": "mid",
   "avg_cpl": "[number redacted]",
   "avg_mql_rate": "[number redacted]",
   "benchmark_confidence_tier": null,
   "tenant_count": 5,
   "experiment_count": "[number redacted]",
   "score": "[number redacted]"
  },
  {
   "recipe_id": "[recipe_id redacted]",
   "channel": "linkedin",
   "ad_format": "image",
   "audience_type": "unknown",
   "audience_size_band": "unknown",
   "bid_strategy": "manual_bid",
   "budget_band": "under_100",
   "industry": "unknown",
   "employee_size_band": "unknown",
   "avg_cpl": "[number redacted]",
   "avg_mql_rate": "[number redacted]",
   "benchmark_confidence_tier": null,
   "tenant_count": 10,
   "experiment_count": "[number redacted]",
   "score": "[number redacted]"
  },
  {
   "recipe_id": "[recipe_id redacted]",
   "channel": "linkedin",
   "ad_format": "image",
   "audience_type": "unknown",
   "audience_size_band": "unknown",
   "bid_strategy": "manual_bid",
   "budget_band": "under_100",
   "industry": "[industry redacted]",
   "employee_size_band": "mid",
   "avg_cpl": "[number redacted]",
   "avg_mql_rate": "[number redacted]",
   "benchmark_confidence_tier": "HIGH"
  … truncated

Other campaigns tools:

All 160 tools · machine-readable index