Meta Ads: changes & controls
enable_ad_set
Enable a Meta ad set.
POST
/
api
/
v1
/
tools
/
enable_ad_set
/
execute
Enable a Meta ad set.
curl --request POST \
--url https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"platform": "meta",
"arguments": {}
}
'import requests
url = "https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute"
payload = {
"platform": "meta",
"arguments": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'meta', arguments: {}})
};
fetch('https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'platform' => 'meta',
'arguments' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute"
payload := strings.NewReader("{\n \"platform\": \"meta\",\n \"arguments\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"platform\": \"meta\",\n \"arguments\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"platform\": \"meta\",\n \"arguments\": {}\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"platform": "<string>",
"tool": "<string>",
"error": {
"message": "<string>",
"code": "<unknown>",
"details": "<unknown>"
},
"mcp_response": "<unknown>",
"data": "<unknown>"
}Change — approval required. Calling this tool does not change your ad account. ADSMCP checks the arguments and stages the change as a pending action. It runs only after a person approves it on the dashboard Approvals page. Over MCP or REST you can view (
list_pending_actions) or reject (manage_action) it, never approve it. execution_mode and similar arguments do not skip the queue.Spend cap. When the approved change runs, ADSMCP adds up the daily budgets of everything that would be spending in the platform’s connected accounts after the change. If that total is above your Max Daily Budget (dashboard Brand page), the change is refused. If the total cannot be read, it is refused too.A change that fails when it runs is not retried automatically. It shows on the dashboard Execution Queue.How to call it
- MCP: on
https://mcp.adsmcp.si/mcp, run it through themeta_ads_writetool with{"action": "execute", "tool_name": "enable_ad_set", "arguments": { ... }}, or callenable_ad_setby name.search_toolsfinds it andget_tool_schemareturns its arguments;https://mcp.adsmcp.si/mcp/flatlists every tool by name. - REST:
POST https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/executewithAuthorization: Bearer sk_live_...and a JSON body{"platform": "meta", "arguments": { ... }}. The arguments are listed below; they are exactly the tool’s input schema.
Authorizations
⌘I
Enable a Meta ad set.
curl --request POST \
--url https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"platform": "meta",
"arguments": {}
}
'import requests
url = "https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute"
payload = {
"platform": "meta",
"arguments": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'meta', arguments: {}})
};
fetch('https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'platform' => 'meta',
'arguments' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute"
payload := strings.NewReader("{\n \"platform\": \"meta\",\n \"arguments\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"platform\": \"meta\",\n \"arguments\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://mcp.adsmcp.si/api/v1/tools/enable_ad_set/execute")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"platform\": \"meta\",\n \"arguments\": {}\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"platform": "<string>",
"tool": "<string>",
"error": {
"message": "<string>",
"code": "<unknown>",
"details": "<unknown>"
},
"mcp_response": "<unknown>",
"data": "<unknown>"
}