Ghl Payments 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:
3e5c28ca746e8d0c137fe7669a0e419e5f7455d0273ecee192818b2cabbb2503
Call destructive raw GHL tools that can delete, remove, cancel, void, or disconnect data in the GHL Payments category. Payments, orders, transactions, subscriptions, coupons, products, prices, invoices, and estimates. 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-payments-destructive-example",
"method": "tools/call",
"params": {
"name": "ghl.ghl_payments_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 Payments 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-payments-destructive-example",
"method": "tools/call",
"params": {
"name": "ghl.ghl_payments_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-payments-destructive-example",
"method": "tools/call",
"params": {
"name": "ghl.ghl_payments_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-payments-destructive-example",
"method": "tools/call",
"params": {
"name": "ghl.ghl_payments_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_payments_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."
}