Motivation
FreeBusy queries are useful for "When am I free?" queries.
Problem with native CalDAV free-busy-query
The native CalDAV free-busy-query REPORT (RFC 4791) has poor server support:
| Server |
Native FreeBusy Support |
| Google CalDAV |
❌ Not supported |
| iCloud |
❌ 500 Internal Server Error |
| Radicale |
❌ Not implemented (Issue #34 open since 2013) |
| Nextcloud |
⚠️ Bugs (Issue #50239, #6740) |
| Baikal |
⚠️ Users report problems |
| DAViCal |
✅ Works |
tsdav documentation explicitly warns:
"a lot of caldav providers do not support this method like google, apple. use with caution."
Solution: Client-Side Calculation
Instead of relying on server support, we calculate FreeBusy client-side:
- Fetch events in time range (works with ALL servers)
- Evaluate TRANSP property (OPAQUE = busy, TRANSPARENT = free)
- Calculate and return busy/free slots
Advantages:
- ✅ Works with ALL CalDAV servers
- ✅ Consistent behavior
- ✅ No server dependency
Disadvantages:
- ⚠️ Requires read access to calendar (not just FreeBusy permission)
- ⚠️ More data is transferred
Implementation
- New tool:
freebusy_query
- Optional: calendar_url (all calendars if not specified)
- Required: time_range_start, time_range_end
- Optional: include_event_details (shows event titles)
Motivation
FreeBusy queries are useful for "When am I free?" queries.
Problem with native CalDAV free-busy-query
The native CalDAV
free-busy-queryREPORT (RFC 4791) has poor server support:tsdav documentation explicitly warns:
Solution: Client-Side Calculation
Instead of relying on server support, we calculate FreeBusy client-side:
Advantages:
Disadvantages:
Implementation
freebusy_query