[{"data":1,"prerenderedAt":797},["ShallowReactive",2],{"navigation_docs_en":3,"-en-advertiser-api-mcp":131,"-en-advertiser-api-mcp-surround":792},[4,18,47,60,69,102,127],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Getting Started","\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[9,13],{"title":10,"path":11,"stem":12},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F1.getting-started\u002F1.installation",{"title":14,"path":15,"stem":16},"Configuration","\u002Fen\u002Fgetting-started\u002Fconfiguration","en\u002F1.getting-started\u002F2.configuration",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Features","\u002Fen\u002Ffeatures","en\u002F2.features",[23,27,31,35,39,43],{"title":24,"path":25,"stem":26},"Page View Tracking","\u002Fen\u002Ffeatures\u002Fpageview-tracking","en\u002F2.features\u002F1.pageview-tracking",{"title":28,"path":29,"stem":30},"Conversion Tracking","\u002Fen\u002Ffeatures\u002Fconversion-tracking","en\u002F2.features\u002F2.conversion-tracking",{"title":32,"path":33,"stem":34},"SPA Support","\u002Fen\u002Ffeatures\u002Fspa-support","en\u002F2.features\u002F3.spa-support",{"title":36,"path":37,"stem":38},"React & Next.js","\u002Fen\u002Ffeatures\u002Freact-integration","en\u002F2.features\u002F4.react-integration",{"title":40,"path":41,"stem":42},"Vue & Nuxt","\u002Fen\u002Ffeatures\u002Fvue-integration","en\u002F2.features\u002F5.vue-integration",{"title":44,"path":45,"stem":46},"Google Tag Manager","\u002Fen\u002Ffeatures\u002Fgtm-integration","en\u002F2.features\u002F6.gtm-integration",{"title":48,"path":49,"stem":50,"children":51,"page":17},"Api","\u002Fen\u002Fapi","en\u002F3.api",[52,56],{"title":53,"path":54,"stem":55},"API Reference","\u002Fen\u002Fapi\u002Freference","en\u002F3.api\u002F1.reference",{"title":57,"path":58,"stem":59},"Events Reference","\u002Fen\u002Fapi\u002Fevents-reference","en\u002F3.api\u002F2.events-reference",{"title":61,"path":62,"stem":63,"children":64,"page":17},"Privacy","\u002Fen\u002Fprivacy","en\u002F4.privacy",[65],{"title":66,"path":67,"stem":68},"Data Collection & Privacy","\u002Fen\u002Fprivacy\u002Fdata-collection","en\u002F4.privacy\u002F1.data-collection",{"title":70,"path":71,"stem":72,"children":73,"page":17},"Chat SDK","\u002Fen\u002Fchat-sdk","en\u002F5.chat-sdk",[74,78,82,86,90,94,98],{"title":75,"path":76,"stem":77},"Chat SDK Getting Started","\u002Fen\u002Fchat-sdk\u002Fgetting-started","en\u002F5.chat-sdk\u002F1.getting-started",{"title":79,"path":80,"stem":81},"Vue Non-chat Integration","\u002Fen\u002Fchat-sdk\u002Fvue-non-chat","en\u002F5.chat-sdk\u002F2.vue-non-chat",{"title":83,"path":84,"stem":85},"React Integration","\u002Fen\u002Fchat-sdk\u002Freact-integration","en\u002F5.chat-sdk\u002F3.react-integration",{"title":87,"path":88,"stem":89},"AI SDK Middleware","\u002Fen\u002Fchat-sdk\u002Fai-sdk-middleware","en\u002F5.chat-sdk\u002F4.ai-sdk-middleware",{"title":91,"path":92,"stem":93},"Ad Formats","\u002Fen\u002Fchat-sdk\u002Fad-formats","en\u002F5.chat-sdk\u002F5.ad-formats",{"title":95,"path":96,"stem":97},"Tracking and Attribution","\u002Fen\u002Fchat-sdk\u002Ftracking-and-attribution","en\u002F5.chat-sdk\u002F6.tracking-and-attribution",{"title":99,"path":100,"stem":101},"Troubleshooting","\u002Fen\u002Fchat-sdk\u002Ftroubleshooting","en\u002F5.chat-sdk\u002F7.troubleshooting",{"title":103,"path":104,"stem":105,"children":106,"page":17},"Advertiser API","\u002Fen\u002Fadvertiser-api","en\u002F6.advertiser-api",[107,111,115,119,123],{"title":108,"path":109,"stem":110},"Overview","\u002Fen\u002Fadvertiser-api\u002Foverview","en\u002F6.advertiser-api\u002F1.overview",{"title":112,"path":113,"stem":114},"Read","\u002Fen\u002Fadvertiser-api\u002Fread","en\u002F6.advertiser-api\u002F2.read",{"title":116,"path":117,"stem":118},"Write","\u002Fen\u002Fadvertiser-api\u002Fwrite","en\u002F6.advertiser-api\u002F3.write",{"title":120,"path":121,"stem":122},"Conversions API","\u002Fen\u002Fadvertiser-api\u002Fconversions","en\u002F6.advertiser-api\u002F4.conversions",{"title":124,"path":125,"stem":126},"MCP server","\u002Fen\u002Fadvertiser-api\u002Fmcp","en\u002F6.advertiser-api\u002F5.mcp",{"title":128,"path":129,"stem":130},"Start Here","\u002Fen\u002Fstart-here","en\u002Fstart-here",{"id":132,"title":124,"body":133,"description":785,"extension":786,"links":787,"meta":788,"navigation":789,"path":125,"seo":790,"stem":126,"__hash__":791},"docs_en\u002Fen\u002F6.advertiser-api\u002F5.mcp.md",{"type":134,"value":135,"toc":779},"minimark",[136,140,148,158,161,167,173,202,228,233,448,459,466,473,477,484,640,644,651,746,750,755,761,775],[137,138,124],"h1",{"id":139},"mcp-server",[141,142,143,147],"p",{},[144,145,146],"code",{},"advertiser-mcp"," is a remote MCP server over Streamable HTTP. Tool calls go through the Advertiser API, so scopes, the rate limit, organization isolation, moderation, and first-campaign validation are the same rules.",[149,150,156],"pre",{"className":151,"code":153,"language":154,"meta":155},[152],"language-text","https:\u002F\u002Ftyfrhxfejrawgdlhryfu.supabase.co\u002Ffunctions\u002Fv1\u002Fadvertiser-mcp\n","text","",[144,157,153],{"__ignoreMap":155},[141,159,160],{},"Send the advertiser key on every request:",[149,162,165],{"className":163,"code":164,"language":154,"meta":155},[152],"Authorization: Bearer idl_adv_xxx\n",[144,166,164],{"__ignoreMap":155},[141,168,169,172],{},[144,170,171],{},"x-api-key: idl_adv_xxx"," is also accepted. Do not send a Supabase JWT.",[141,174,175,176,179,180,183,184,187,188,191,192,194,195,197,198,201],{},"The server name is ",[144,177,178],{},"idlen-advertiser",", version ",[144,181,182],{},"1.0.0",". Read tools need ",[144,185,186],{},"read",". Write tools need ",[144,189,190],{},"write",". ",[144,193,190],{}," does not include ",[144,196,186],{},". The limit is 120 requests per minute per key. The client sends ",[144,199,200],{},"Accept: application\u002Fjson, text\u002Fevent-stream",".",[141,203,204,205,208,209,212,213,208,216,219,220,223,224,227],{},"Missing or unknown keys return ",[144,206,207],{},"401"," with ",[144,210,211],{},"{ \"error\": { \"code\": \"unauthorized\", \"message\": \"...\" } }",". Over the rate limit returns ",[144,214,215],{},"429",[144,217,218],{},"rate_limited",", ",[144,221,222],{},"Retry-After",", and the ",[144,225,226],{},"X-RateLimit-*"," headers.",[229,230,232],"h2",{"id":231},"tools","Tools",[234,235,236,249],"table",{},[237,238,239],"thead",{},[240,241,242,246],"tr",{},[243,244,245],"th",{},"Tool",[243,247,248],{},"What it does",[250,251,252,267,277,299,313,334,344,364,381,394,404,414,428,438],"tbody",{},[240,253,254,260],{},[255,256,257],"td",{},[144,258,259],{},"list_campaigns",[255,261,262,263,266],{},"List campaigns for this organization, newest first. Archived campaigns are omitted unless ",[144,264,265],{},"include_archived"," is true.",[240,268,269,274],{},[255,270,271],{},[144,272,273],{},"get_campaign",[255,275,276],{},"Get one campaign in this organization. Another organization's campaign is not found.",[240,278,279,284],{},[255,280,281],{},[144,282,283],{},"get_campaign_stats",[255,285,286,287,290,291,294,295,298],{},"Daily impressions, clicks, spend in euro cents, and conversions. ",[144,288,289],{},"from"," and ",[144,292,293],{},"to"," are UTC ",[144,296,297],{},"YYYY-MM-DD",". Default is the last 30 days. The range cannot exceed 366 days.",[240,300,301,306],{},[255,302,303],{},[144,304,305],{},"create_campaign",[255,307,308,309,312],{},"Create a campaign and its ad set. Status defaults to ",[144,310,311],{},"draft",". Amounts are euro cents.",[240,314,315,320],{},[255,316,317],{},[144,318,319],{},"update_campaign",[255,321,322,323,326,327,330,331,201],{},"Update a campaign. Omitted fields stay unchanged. Setting ",[144,324,325],{},"status"," to ",[144,328,329],{},"active"," follows the same rules as ",[144,332,333],{},"resume_campaign",[240,335,336,341],{},[255,337,338],{},[144,339,340],{},"pause_campaign",[255,342,343],{},"Pause a campaign and its ad sets.",[240,345,346,350],{},[255,347,348],{},[144,349,333],{},[255,351,352,353,356,357,360,361,201],{},"Turn a campaign on. The first API campaign is refused. A zero balance returns ",[144,354,355],{},"insufficient_balance",". No approved ad returns ",[144,358,359],{},"ads_pending_moderation"," or ",[144,362,363],{},"ad_required",[240,365,366,371],{},[255,367,368],{},[144,369,370],{},"list_ads",[255,372,373,374,191,377,380],{},"List ads, newest first. Optional ",[144,375,376],{},"campaign_id",[144,378,379],{},"is_approved"," null or false means the ad is not delivering.",[240,382,383,388],{},[255,384,385],{},[144,386,387],{},"create_ad",[255,389,390,391,201],{},"Create an ad on a campaign. Headline 1–60 characters, body at most 150, link must start with ",[144,392,393],{},"https:\u002F\u002F",[240,395,396,401],{},[255,397,398],{},[144,399,400],{},"create_ad_from_url",[255,402,403],{},"Read a landing page and create an ad from it. Shares the limit of 10 requests per organization per hour.",[240,405,406,411],{},[255,407,408],{},[144,409,410],{},"update_ad",[255,412,413],{},"Update an ad. Omitted fields stay unchanged.",[240,415,416,421],{},[255,417,418],{},[144,419,420],{},"get_wallet",[255,422,423,424,427],{},"Wallet balance in euro cents, and the currency code (",[144,425,426],{},"EUR",").",[240,429,430,435],{},[255,431,432],{},[144,433,434],{},"list_transactions",[255,436,437],{},"Wallet transactions, newest first. Deposits are positive euro cents. Spends are negative. Payment processor references are not included.",[240,439,440,445],{},[255,441,442],{},[144,443,444],{},"create_deposit_checkout_link",[255,446,447],{},"Open a Stripe Checkout URL for a wallet deposit. This does not charge a card by itself.",[141,449,450,451,454,455,458],{},"Write tools take an optional ",[144,452,453],{},"idempotency_key",". It is sent as ",[144,456,457],{},"Idempotency-Key",". The same key and body replay for 24 hours.",[141,460,461,462,465],{},"A new ad stays pending until a person moderates it, and it does not deliver before that. Changing the headline, body, button text, link, or image sends the ad back to pending. The first campaign this organization creates through the API cannot be turned on from the API or from MCP. That result is ",[144,463,464],{},"first_campaign_requires_dashboard_validation"," and includes a dashboard link. Open the link and turn the campaign on in Ads Manager. A later campaign can be resumed when the wallet has funds and at least one ad is approved.",[141,467,468,469,201],{},"Field limits match ",[470,471,116],"a",{"href":472},"\u002Fadvertiser-api\u002Fwrite",[229,474,476],{"id":475},"claude-desktop-and-claude-code","Claude Desktop and Claude Code",[141,478,479,480,483],{},"Claude Desktop reads this from its config file. Claude Code uses the same ",[144,481,482],{},"mcpServers"," entry.",[149,485,489],{"className":486,"code":487,"language":488,"meta":155,"style":155},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"mcpServers\": {\n    \"idlen-advertiser\": {\n      \"type\": \"http\",\n      \"url\": \"https:\u002F\u002Ftyfrhxfejrawgdlhryfu.supabase.co\u002Ffunctions\u002Fv1\u002Fadvertiser-mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer idl_adv_xxx\"\n      }\n    }\n  }\n}\n","json",[144,490,491,500,518,533,559,580,594,616,622,628,634],{"__ignoreMap":155},[492,493,496],"span",{"class":494,"line":495},"line",1,[492,497,499],{"class":498},"sMK4o","{\n",[492,501,503,506,509,512,515],{"class":494,"line":502},2,[492,504,505],{"class":498},"  \"",[492,507,482],{"class":508},"spNyl",[492,510,511],{"class":498},"\"",[492,513,514],{"class":498},":",[492,516,517],{"class":498}," {\n",[492,519,521,524,527,529,531],{"class":494,"line":520},3,[492,522,523],{"class":498},"    \"",[492,525,178],{"class":526},"sBMFI",[492,528,511],{"class":498},[492,530,514],{"class":498},[492,532,517],{"class":498},[492,534,536,539,543,545,547,550,554,556],{"class":494,"line":535},4,[492,537,538],{"class":498},"      \"",[492,540,542],{"class":541},"sbssI","type",[492,544,511],{"class":498},[492,546,514],{"class":498},[492,548,549],{"class":498}," \"",[492,551,553],{"class":552},"sfazB","http",[492,555,511],{"class":498},[492,557,558],{"class":498},",\n",[492,560,562,564,567,569,571,573,576,578],{"class":494,"line":561},5,[492,563,538],{"class":498},[492,565,566],{"class":541},"url",[492,568,511],{"class":498},[492,570,514],{"class":498},[492,572,549],{"class":498},[492,574,575],{"class":552},"https:\u002F\u002Ftyfrhxfejrawgdlhryfu.supabase.co\u002Ffunctions\u002Fv1\u002Fadvertiser-mcp",[492,577,511],{"class":498},[492,579,558],{"class":498},[492,581,583,585,588,590,592],{"class":494,"line":582},6,[492,584,538],{"class":498},[492,586,587],{"class":541},"headers",[492,589,511],{"class":498},[492,591,514],{"class":498},[492,593,517],{"class":498},[492,595,597,600,604,606,608,610,613],{"class":494,"line":596},7,[492,598,599],{"class":498},"        \"",[492,601,603],{"class":602},"swJcz","Authorization",[492,605,511],{"class":498},[492,607,514],{"class":498},[492,609,549],{"class":498},[492,611,612],{"class":552},"Bearer idl_adv_xxx",[492,614,615],{"class":498},"\"\n",[492,617,619],{"class":494,"line":618},8,[492,620,621],{"class":498},"      }\n",[492,623,625],{"class":494,"line":624},9,[492,626,627],{"class":498},"    }\n",[492,629,631],{"class":494,"line":630},10,[492,632,633],{"class":498},"  }\n",[492,635,637],{"class":494,"line":636},11,[492,638,639],{"class":498},"}\n",[229,641,643],{"id":642},"cursor","Cursor",[141,645,646,647,650],{},"Put this in ",[144,648,649],{},".cursor\u002Fmcp.json"," or in Cursor Settings → MCP.",[149,652,654],{"className":486,"code":653,"language":488,"meta":155,"style":155},"{\n  \"mcpServers\": {\n    \"idlen-advertiser\": {\n      \"url\": \"https:\u002F\u002Ftyfrhxfejrawgdlhryfu.supabase.co\u002Ffunctions\u002Fv1\u002Fadvertiser-mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer idl_adv_xxx\"\n      }\n    }\n  }\n}\n",[144,655,656,660,672,684,702,714,730,734,738,742],{"__ignoreMap":155},[492,657,658],{"class":494,"line":495},[492,659,499],{"class":498},[492,661,662,664,666,668,670],{"class":494,"line":502},[492,663,505],{"class":498},[492,665,482],{"class":508},[492,667,511],{"class":498},[492,669,514],{"class":498},[492,671,517],{"class":498},[492,673,674,676,678,680,682],{"class":494,"line":520},[492,675,523],{"class":498},[492,677,178],{"class":526},[492,679,511],{"class":498},[492,681,514],{"class":498},[492,683,517],{"class":498},[492,685,686,688,690,692,694,696,698,700],{"class":494,"line":535},[492,687,538],{"class":498},[492,689,566],{"class":541},[492,691,511],{"class":498},[492,693,514],{"class":498},[492,695,549],{"class":498},[492,697,575],{"class":552},[492,699,511],{"class":498},[492,701,558],{"class":498},[492,703,704,706,708,710,712],{"class":494,"line":561},[492,705,538],{"class":498},[492,707,587],{"class":541},[492,709,511],{"class":498},[492,711,514],{"class":498},[492,713,517],{"class":498},[492,715,716,718,720,722,724,726,728],{"class":494,"line":582},[492,717,599],{"class":498},[492,719,603],{"class":602},[492,721,511],{"class":498},[492,723,514],{"class":498},[492,725,549],{"class":498},[492,727,612],{"class":552},[492,729,615],{"class":498},[492,731,732],{"class":494,"line":596},[492,733,621],{"class":498},[492,735,736],{"class":494,"line":618},[492,737,627],{"class":498},[492,739,740],{"class":494,"line":624},[492,741,633],{"class":498},[492,743,744],{"class":494,"line":630},[492,745,639],{"class":498},[229,747,749],{"id":748},"chatgpt-and-other-remote-mcp-clients","ChatGPT and other remote MCP clients",[141,751,752,753,201],{},"Use the URL and the Authorization header. The client sends ",[144,754,200],{},[149,756,759],{"className":757,"code":758,"language":154,"meta":155},[152],"URL\nhttps:\u002F\u002Ftyfrhxfejrawgdlhryfu.supabase.co\u002Ffunctions\u002Fv1\u002Fadvertiser-mcp\n\nHeader\nAuthorization: Bearer idl_adv_xxx\n",[144,760,758],{"__ignoreMap":155},[141,762,763,764,768,769,201],{},"Create the key in Ads Manager under ",[765,766,767],"strong",{},"Settings → API keys",", with Read and Write. The route list is also in the ",[470,770,774],{"href":771,"rel":772},"https:\u002F\u002Fwww.idlen.io\u002Fopenapi\u002Fadvertiser-api.yaml",[773],"nofollow","OpenAPI document",[776,777,778],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":155,"searchDepth":502,"depth":502,"links":780},[781,782,783,784],{"id":231,"depth":502,"text":232},{"id":475,"depth":502,"text":476},{"id":642,"depth":502,"text":643},{"id":748,"depth":502,"text":749},"Streamable HTTP MCP server for the Advertiser API, with 14 tools","md",null,{},true,{"title":124,"description":785},"5vRx1jsIyQHAEjRbWcD9jaZjSksmjd0FAMmxV4-YfoI",[793,795],{"title":120,"path":121,"stem":122,"description":794,"children":-1},"Record a conversion from your server with an advertiser API key",{"title":128,"path":129,"stem":130,"description":796,"children":-1},"Choose the right documentation path for your integration",1793804440449]