Ghl Sites Destructive
Immutable Catalog Entry
This descriptor comes from the active versioned Portal catalog.
- Contract tier:
agent_ready - Risk:
destructive - Catalog version:
2026-07-12.2 - Descriptor hash:
b26f51713a5999d7c7621557ec7c6cc00853482ea583719574db12d614b48e9e
Call destructive raw GHL tools that can delete, remove, cancel, void, or disconnect data in the GHL Sites category. Blogs, funnels, forms, surveys, pages, URL slugs, authors, and categories. First use ghl_list_category_tools and ghl_get_tool_reference to choose a raw tool and inspect its schema. Pass the raw tool name in toolName and its parameters in arguments. Compatibility: raw tool parameters supplied beside toolName are also forwarded, but nested arguments take precedence.
Request Body
{
"jsonrpc": "2.0",
"id": "ghl-ghl-sites-destructive-example",
"method": "tools/call",
"params": {
"name": "ghl.ghl_sites_destructive",
"arguments": {
"toolName": "toolName_example",
"tenantId": "tenantId_123",
"arguments": {},
"locationId": "locationId_123",
"confirmApply": "confirmApply_example",
"strictTenant": false
}
}
}
Arguments Schema
{
"type": "object",
"required": [
"toolName"
],
"properties": {
"tenantId": {
"type": "string",
"description": "Optional tenant ID override for non-runtime local deployments."
},
"toolName": {
"type": "string",
"description": "Raw Sites tool name to execute."
},
"arguments": {
"type": "object",
"description": "Arguments for the selected raw tool. Use ghl_get_tool_reference to inspect the schema before calling.",
"additionalProperties": true
},
"locationId": {
"type": "string",
"description": "Optional location ID for route validation. In public runtime mode, the runtime header location wins."
},
"confirmApply": {
"type": "string",
"description": "Set exactly to \"CONFIRM APPLY\" when intentionally executing a destructive raw tool."
},
"strictTenant": {
"type": "boolean",
"description": "When true, require tenantId to match locationId routing."
}
},
"additionalProperties": true
}
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-ghl-sites-destructive-example",
"method": "tools/call",
"params": {
"name": "ghl.ghl_sites_destructive",
"arguments": {
"toolName": "toolName_example",
"tenantId": "tenantId_123",
"arguments": {},
"locationId": "locationId_123",
"confirmApply": "confirmApply_example",
"strictTenant": false
}
}
}'
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-ghl-sites-destructive-example",
"method": "tools/call",
"params": {
"name": "ghl.ghl_sites_destructive",
"arguments": {
"toolName": "toolName_example",
"tenantId": "tenantId_123",
"arguments": {},
"locationId": "locationId_123",
"confirmApply": "confirmApply_example",
"strictTenant": false
}
}
}),
});
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-ghl-sites-destructive-example",
"method": "tools/call",
"params": {
"name": "ghl.ghl_sites_destructive",
"arguments": {
"toolName": "toolName_example",
"tenantId": "tenantId_123",
"arguments": {},
"locationId": "locationId_123",
"confirmApply": "confirmApply_example",
"strictTenant": false
}
}
}
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.ghl_sites_destructive 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."
}