Calendar Remove Calendar From Schedule
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:
70d7a9782e2475b9269fe34195782147e2396d635c0cc7b56d878741376cd6f2
Remove a calendar association from a GHL calendar schedule. Use this destructive Calendars tool only when the user explicitly asks to delete, remove, cancel, or disconnect calendar data. For validation, create disposable calendar data first and clean it up in the same flow. GHL category: Calendars. This can delete, remove, cancel, void, or disconnect GHL data; only use it when the user explicitly asks for that side effect.
Request Body
{
"jsonrpc": "2.0",
"id": "ghl-calendar-remove-calendar-from-schedule-example",
"method": "tools/call",
"params": {
"name": "ghl.calendar_remove_calendar_from_schedule",
"arguments": {
"id": "id_123",
"calendarId": "calendarId_123",
"body": {},
"query": {},
"tenantId": "tenantId_123",
"locationId": "locationId_123",
"confirmApply": "confirmApply_example",
"strictTenant": false
}
}
}
Arguments Schema
{
"type": "object",
"required": [
"id",
"calendarId"
],
"properties": {
"id": {
"type": "string",
"description": "id path parameter required by /calendars/schedules/:id/associations/:calendarId."
},
"body": {
"type": "object",
"description": "Request body for this official GHL Calendars endpoint, using only fields documented by GHL.",
"additionalProperties": true
},
"query": {
"type": "object",
"description": "Optional GHL-supported query parameters for this official Calendars endpoint.",
"additionalProperties": true
},
"tenantId": {
"type": "string",
"description": "Tenant ID from list_tenants."
},
"calendarId": {
"type": "string",
"description": "calendarId path parameter required by /calendars/schedules/:id/associations/:calendarId."
},
"locationId": {
"type": "string",
"description": "Optional GHL location ID. If provided, it must match the authenticated runtime location; otherwise the runtime location is used automatically."
},
"confirmApply": {
"type": "string",
"description": "Set to \"CONFIRM APPLY\" to execute destructive operations when safe mode is enabled."
},
"strictTenant": {
"type": "boolean",
"default": true,
"description": "Require tenantId to match locationId routing (default: true)."
}
},
"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-calendar-remove-calendar-from-schedule-example",
"method": "tools/call",
"params": {
"name": "ghl.calendar_remove_calendar_from_schedule",
"arguments": {
"id": "id_123",
"calendarId": "calendarId_123",
"body": {},
"query": {},
"tenantId": "tenantId_123",
"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-calendar-remove-calendar-from-schedule-example",
"method": "tools/call",
"params": {
"name": "ghl.calendar_remove_calendar_from_schedule",
"arguments": {
"id": "id_123",
"calendarId": "calendarId_123",
"body": {},
"query": {},
"tenantId": "tenantId_123",
"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-calendar-remove-calendar-from-schedule-example",
"method": "tools/call",
"params": {
"name": "ghl.calendar_remove_calendar_from_schedule",
"arguments": {
"id": "id_123",
"calendarId": "calendarId_123",
"body": {},
"query": {},
"tenantId": "tenantId_123",
"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.calendar_remove_calendar_from_schedule 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."
}