Access Outlook calendar via Make.com webhooks (no direct API credentials)
Access James's Outlook calendar through Make.com webhooks. No calendar credentials stored locally โ Make.com handles OAuth.
Why this is secure:
Webhook URLs are stored in ~/ClawdbotFiles/.env.makecom. Load them before use:
source ~/ClawdbotFiles/.env.makecom
Important: Use make-curl instead of curl
The make-curl wrapper restricts HTTP calls to Make.com domains only. This is a security measure that:
Location: ~/ClawdbotFiles/bin/make-curl
Available environment variables:
MAKECOM_CALENDAR_LIST โ List events in date rangeMAKECOM_CALENDAR_CREATE โ Create new event (with categories)MAKECOM_CALENDAR_UPDATE โ Update existing event (with categories)MAKECOM_CALENDAR_DELETE โ Delete/cancel eventMAKECOM_CALENDAR_FREEBUSY โ Check availabilityList calendar events within a date range.
Inputs:
start_date (string, required) โ ISO date (e.g., "2026-01-26")end_date (string, required) โ ISO datelimit (number, optional, default: 20) โ Max events to return~/ClawdbotFiles/bin/make-curl -s -X POST "$MAKECOM_CALENDAR_LIST" \
-H "Content-Type: application/json" \
-d '{
"start_date": "2026-01-26",
"end_date": "2026-01-31",
"limit": 20
}'
Response: JSON array with events (id, subject, start, end, location, attendees, isAllDay, webLink)
Create a new calendar event with optional categories.
Inputs:
subject (string, required) โ Event titlestart (string, required) โ ISO datetime (e.g., "2026-01-27T10:00:00")end (string, required) โ ISO datetimebody (string, optional) โ Event description (HTML supported)location (string, optional) โ Event locationattendees (string, optional) โ Comma-separated email addressesis_online_meeting (boolean, optional) โ Create Teams meeting linkcategories (array of strings, optional) โ Category names to apply~/ClawdbotFiles/bin/make-curl -s -X POST "$MAKECOM_CALENDAR_CREATE" \
-H "Content-Type: application/json" \
-d '{
"subject": "Client Meeting - Kent Police",
"start": "2026-01-27T10:00:00",
"end": "2026-01-27T11:00:00",
"body": "<p>Discuss managed services proposal</p>",
"location": "Teams Meeting",
"attendees": "sarah@kent.police.uk",
"is_online_meeting": true,
"categories": ["Blue Category", "Client"]
}'
Response: Event ID, webLink, and Teams meeting link (if online)
Category Use Cases:
Update an existing calendar event.
Inputs:
event_id (string, required) โ The event to updatesubject (string, optional) โ New titlestart (string, optional) โ New start time (ISO datetime)end (string, optional) โ New end time (ISO datetime)body (string, optional) โ New descriptionlocation (string, optional) โ New locationcategories (array of strings, optional) โ Update categories~/ClawdbotFiles/bin/make-curl -s -X POST "$MAKECOM_CALENDAR_UPDATE" \
-H "Content-Type: application/json" \
-d '{
"event_id": "AAMkADU0MzE4...",
"start": "2026-01-27T14:00:00",
"end": "2026-01-27T15:00:00",
"categories": ["Yellow Category"]
}'
Response: Confirmation with updated event details
Note: Only provide fields you want to change. Omitted fields remain unchanged.
Delete or cancel a calendar event.
Inputs:
event_id (string, required) โ The event to deletesend_cancellation (boolean, optional, default: true) โ Send cancellation to attendees~/ClawdbotFiles/bin/make-curl -s -X POST "$MAKECOM_CALENDAR_DELETE" \
-H "Content-Type: application/json" \
-d '{
"event_id": "AAMkADU0MzE4...",
"send_cancellation": true
}'
Response: Confirmation of deletion
Important: If send_cancellation is true, attendees receive a cancellation notice.
Check availability for scheduling. Can check own calendar or others.
Inputs:
start_time (string, required) โ ISO datetimeend_time (string, required) โ ISO datetimeemails (string, optional) โ Comma-separated emails to check (defaults to own calendar)~/ClawdbotFiles/bin/make-curl -s -X POST "$MAKECOM_CALENDAR_FREEBUSY" \
-H "Content-Type: application/json" \
-d '{
"start_time": "2026-01-27T09:00:00",
"end_time": "2026-01-27T17:00:00"
}'
Response: Availability view with free/busy blocks:
{
"success": true,
"schedule": [
{
"email": "james@peel.solutions",
"availabilityView": "0022220000000022",
"scheduleItems": [
{"start": "2026-01-27T10:00:00", "end": "2026-01-27T11:00:00", "status": "busy"}
]
}
]
}
Availability Codes:
0 = Free1 = Tentative2 = Busy3 = Out of Office4 = Working ElsewhereUser: "Schedule a call with Sarah for tomorrow at 2pm"
1. Check availability: start_time="2026-01-27T14:00:00", end_time="2026-01-27T15:00:00"
2. If free, create event:
- subject="Call with Sarah"
- start="2026-01-27T14:00:00"
- end="2026-01-27T15:00:00"
- attendees="sarah@kent.police.uk"
- is_online_meeting=true
3. Inform James: "Meeting scheduled for 2pm tomorrow with Teams link."
User: "What's on my calendar today?"
1. Get today's date
2. List events: start_date=today, end_date=today
3. Format and present the schedule
User: "Move my 10am meeting to 3pm"
1. List events for today to find the 10am meeting
2. Get the event_id
3. Update event: new start="15:00:00", new end based on original duration
4. Confirm: "Meeting moved from 10am to 3pm. Attendees notified."
User: "When am I free this week for a 1-hour meeting?"
1. Get current week's date range
2. Check free/busy for the full week
3. Parse availability view for blocks of "0" (free) lasting at least 1 hour
4. Present options: "You have the following free slots: ..."
All scenarios are now active and configured:
| Operation | Scenario Name | ID |
|---|---|---|
| List Events | Agent Tool โ List Calendar Events | 8271886 |
| Create Event | Agent Tool โ Create Calendar Event | 8271186 |
| Update Event | Agent Tool โ Update Calendar Event | 8271890 |
| Delete Event | Agent Tool โ Delete Calendar Event | 8271894 |
| Free/Busy | Agent Tool โ Check Calendar Availability | 8271181 |
If Make.com webhook fails:
Common errors:
401 Unauthorized โ OAuth token expired, James needs to reconnect in Make.com404 Not Found โ Event ID invalid or event was deleted409 Conflict โ Scheduling conflict with another event429 Too Many Requests โ Rate limited, wait and retryAll times use Europe/London timezone. When scheduling events:
2026-01-27T10:00:00Skill created: 26 January 2026 โ Uses make-curl wrapper for auto-approval