Ad Manager Facebook Upsert Ad
Immutable Catalog Entry
This descriptor comes from the active versioned Portal catalog.
- Contract tier:
agent_ready - Risk:
write - Catalog version:
2026-07-12.2 - Descriptor hash:
a1d80b2bba0a75be990d78cc4eb1d2d4b792c89e8b763ead85697f6f620ecbd4
Create or update a Facebook ad in GHL Ad Manager. Use this Marketing > Ad Manager write tool to create, update, connect, duplicate, pause, resume, publish, or otherwise change Facebook advertising resources. Do not use it for live ad changes unless the user explicitly requested that action. GHL category: Marketing. This writes to GoHighLevel and may change account data.
Request Body
{
"jsonrpc": "2.0",
"id": "ghl-ad-manager-facebook-upsert-ad-example",
"method": "tools/call",
"params": {
"name": "ghl.ad_manager_facebook_upsert_ad",
"arguments": {
"body": {},
"query": {},
"tenantId": "tenantId_123"
}
}
}
Arguments Schema
{
"type": "object",
"properties": {
"body": {
"type": "object",
"description": "Request body for this GHL Ad Manager operation, using only fields documented by GHL for this endpoint.",
"additionalProperties": true
},
"query": {
"type": "object",
"description": "Optional GHL-supported query parameters for this endpoint, such as pagination, account, date range, search, or filtering fields from the official docs.",
"additionalProperties": true
},
"tenantId": {
"type": "string",
"description": "Tenant ID from list_tenants."
}
},
"additionalProperties": false
}
Output Schema
{
"type": "object",
"required": [
"ok",
"data",
"error",
"meta"
],
"properties": {
"ok": {
"type": "boolean",
"description": "Whether the GHL MCP operation completed successfully."
},
"data": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "array",
"items": {}
},
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Tool-specific GHL or local navigation result when ok is true."
},
"meta": {
"type": "object",
"description": "Safe execution, routing, and timing metadata.",
"additionalProperties": true
},
"error": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Safe error details when ok is false; credential values are never returned."
}
},
"description": "Normalized GHL MCP response envelope.",
"additionalProperties": false
}
Code Examples
- cURL
- Node.js
- Python
curl -X POST 'https://portal.madpanda3d.com/api/mcp' \
-H 'Authorization: Bearer mad_live_***' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "ghl-ad-manager-facebook-upsert-ad-example",
"method": "tools/call",
"params": {
"name": "ghl.ad_manager_facebook_upsert_ad",
"arguments": {
"body": {},
"query": {},
"tenantId": "tenantId_123"
}
}
}'
const response = await fetch('https://portal.madpanda3d.com/api/mcp', {
method: 'POST',
headers: {
Authorization: 'Bearer mad_live_***',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": "ghl-ad-manager-facebook-upsert-ad-example",
"method": "tools/call",
"params": {
"name": "ghl.ad_manager_facebook_upsert_ad",
"arguments": {
"body": {},
"query": {},
"tenantId": "tenantId_123"
}
}
}),
});
const data = await response.json();
console.log(data);
import requests
url = 'https://portal.madpanda3d.com/api/mcp'
headers = {
'Authorization': 'Bearer mad_live_***',
'Content-Type': 'application/json',
}
payload = {
"jsonrpc": "2.0",
"id": "ghl-ad-manager-facebook-upsert-ad-example",
"method": "tools/call",
"params": {
"name": "ghl.ad_manager_facebook_upsert_ad",
"arguments": {
"body": {},
"query": {},
"tenantId": "tenantId_123"
}
}
}
response = requests.post(url, headers=headers, json=payload, timeout=60)
print(response.json())
Example Responses
- 200 Success
- 502 Upstream Error
{
"ok": true,
"message": "Tool ghl.ad_manager_facebook_upsert_ad executed successfully.",
"note": "Response shape varies by MCP tool. Inspect live responses for exact fields."
}
{
"ok": false,
"classification": "upstream_http_error",
"message": "Upstream MCP returned a non-success status."
}