All nodes/Integrations/Calendar
Calendar Tool
CalDAV tools for AI Agent. Requires calendar_store from caldav_config.
Type in the graph: calendar_tool
Tool
Try it
Minimal working workflow
- Execute + Data
- Extension
- LLM
- Memory
- Execute + Data + Streaming
Pick your own connection or knowledge base first — the graph carries REPLACE_ME.
When to use it
Twelve CalDAV operations the model calls on its own. Reach for this node when the request arrives as words — “what do I have tomorrow”, “move the meeting to Thursday” — and the sequence of steps is not known in advance. When it is known, a chain of ordinary steps is cheaper and more predictable: Calendar Query → Patch Calendar Event.
How it works
The node takes no part in the execution chain. Its output goes over a link_extension wire into
the Extensions port of the AI Agent node. The model receives
whichever operations are ticked in “Enabled tools”: list calendars, query events, query todos,
batch fetch, get, create or replace, patch fields, delete, free/busy, and three scheduling ones —
invite, reply, cancel.
Everything except scheduling is on by default. Scheduling needs an outbox URL on the connection and a server that implements RFC 6638 (iCloud and Google do not); when either is missing the tools are simply not shown to the model, rather than failing on every call.
A tool failure comes back to the model as JSON with ok: false and an error_code, and does not
stop the run: the model sees the reason and can correct itself.
Common mistakes
- The model does not know where the calendar is. The query tools take a required
calendar_urlargument. Leave “List calendars” enabled or name the collection URL in the system prompt, otherwise the model will invent one. - Writing is on by default. Create, patch and delete are part of the default set. For a read-only agent, untick those three.
- Ticking scheduling does not enable scheduling. Without an outbox URL on the integration the tool stays hidden however many times you tick it.
- An ETag lives inside the turn. Create and patch hand the model a new
etag; the previous one is void after the write, and reusing it earns a refusal from the server. - Two calendar nodes on one agent. Tool names are fixed, so the second node declares the same names as the first. Two calendars mean two separate agents.
- Nothing happens without an agent. Left unwired from the Extensions port, the node is just a setting on the canvas.
Inputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
Calendar storecalendar_store | Datadata | — | required |
Outputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
tool_out | Extensionlink_extension | — |
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
CalDAV connectionconnection_id | string | "" | Saved workspace CalDAV connection, so a simple calendar graph does not need a separate CalDAV Config node. A node wired to the 'calendar_store' port wins over this field. connection: caldavoverridden by port: calendar_store |
Enabled toolsenabled_tools | array<string> | ["cal_list_calendars","cal_query_events","cal_query_todos","cal_multiget_even… | Which CalDAV operations the model may call. Scheduling (invite/reply/cancel) is off by default: it needs a connection with a scheduling outbox and a provider that supports RFC 6638. Enabling it on a connection that has neither leaves the tools hidden from the model rather than failing per call. |