@chronary/toolkit 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-sdk.cjs +183 -144
- package/dist/ai-sdk.cjs.map +1 -1
- package/dist/ai-sdk.js +183 -144
- package/dist/ai-sdk.js.map +1 -1
- package/dist/index.cjs +183 -144
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +98 -61
- package/dist/index.d.ts +98 -61
- package/dist/index.js +183 -144
- package/dist/index.js.map +1 -1
- package/dist/langchain.cjs +183 -144
- package/dist/langchain.cjs.map +1 -1
- package/dist/langchain.js +183 -144
- package/dist/langchain.js.map +1 -1
- package/dist/mastra.cjs +183 -144
- package/dist/mastra.cjs.map +1 -1
- package/dist/mastra.js +183 -144
- package/dist/mastra.js.map +1 -1
- package/dist/mcp.cjs +183 -144
- package/dist/mcp.cjs.map +1 -1
- package/dist/mcp.js +183 -144
- package/dist/mcp.js.map +1 -1
- package/dist/openai.cjs +183 -144
- package/dist/openai.cjs.map +1 -1
- package/dist/openai.js +183 -144
- package/dist/openai.js.map +1 -1
- package/package.json +2 -2
package/dist/ai-sdk.cjs
CHANGED
|
@@ -30,72 +30,90 @@ var import_sdk2 = require("@chronary/sdk");
|
|
|
30
30
|
|
|
31
31
|
// src/schemas.ts
|
|
32
32
|
var import_zod = require("zod");
|
|
33
|
+
var WEBHOOK_EVENT_TYPES = [
|
|
34
|
+
"agent.created",
|
|
35
|
+
"agent.updated",
|
|
36
|
+
"event.created",
|
|
37
|
+
"event.updated",
|
|
38
|
+
"event.deleted",
|
|
39
|
+
"event.started",
|
|
40
|
+
"event.ended",
|
|
41
|
+
"event.reminder",
|
|
42
|
+
"event.hold_created",
|
|
43
|
+
"event.hold_expired",
|
|
44
|
+
"event.hold_released",
|
|
45
|
+
"event.hold_confirmed",
|
|
46
|
+
"proposal.created",
|
|
47
|
+
"proposal.responded",
|
|
48
|
+
"proposal.confirmed",
|
|
49
|
+
"proposal.expired",
|
|
50
|
+
"proposal.cancelled",
|
|
51
|
+
"webhook.deactivated"
|
|
52
|
+
];
|
|
53
|
+
var WEBHOOK_DELIVERY_STATUSES = ["pending", "delivered", "failed"];
|
|
33
54
|
var ListCalendarsSchema = import_zod.z.object({
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
offset: import_zod.z.number().int().min(0).optional().describe("Pagination offset (default 0)")
|
|
55
|
+
include: import_zod.z.enum(["all"]).optional().describe('Pass "all" to include calendars across all agents (org keys only)'),
|
|
56
|
+
limit: import_zod.z.number().int().min(1).max(200).default(50).describe("Max results to return"),
|
|
57
|
+
offset: import_zod.z.number().int().min(0).default(0).describe("Pagination offset")
|
|
38
58
|
});
|
|
39
59
|
var GetCalendarSchema = import_zod.z.object({
|
|
40
|
-
calendar_id: import_zod.z.string().describe("
|
|
60
|
+
calendar_id: import_zod.z.string().describe("Calendar ID to fetch")
|
|
41
61
|
});
|
|
42
62
|
var CreateCalendarSchema = import_zod.z.object({
|
|
43
|
-
name: import_zod.z.string().describe("Calendar name"),
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
default_reminders: import_zod.z.array(import_zod.z.number().int().min(1).max(40320)).max(5).nullable().optional().describe("Default reminder offsets in minutes before start, inherited by events that don't set their own
|
|
47
|
-
metadata: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional().describe("Arbitrary key-value metadata")
|
|
63
|
+
name: import_zod.z.string().min(1).max(255).describe("Calendar name"),
|
|
64
|
+
agent_id: import_zod.z.string().optional().describe("Agent ID to own this calendar (omit for org-level)"),
|
|
65
|
+
timezone: import_zod.z.string().min(1).describe("IANA timezone (e.g. America/New_York)"),
|
|
66
|
+
default_reminders: import_zod.z.array(import_zod.z.number().int().min(1).max(40320)).max(5).nullable().optional().describe("Default reminder offsets in minutes before start, inherited by events on this calendar that don't set their own. Omit or null to use the system default (10 min); [] for no reminders.")
|
|
48
67
|
});
|
|
49
68
|
var UpdateCalendarSchema = import_zod.z.object({
|
|
50
|
-
calendar_id: import_zod.z.string().describe("
|
|
51
|
-
name: import_zod.z.string().optional().describe("New calendar name"),
|
|
52
|
-
timezone: import_zod.z.string().optional().describe("New IANA timezone"),
|
|
53
|
-
|
|
54
|
-
|
|
69
|
+
calendar_id: import_zod.z.string().describe("Calendar ID to update"),
|
|
70
|
+
name: import_zod.z.string().min(1).max(255).optional().describe("New calendar name"),
|
|
71
|
+
timezone: import_zod.z.string().min(1).optional().describe("New IANA timezone (e.g. America/New_York)"),
|
|
72
|
+
agent_status: import_zod.z.enum(["idle", "working", "waiting", "error"]).optional().describe("Owning agent's status"),
|
|
73
|
+
default_reminders: import_zod.z.array(import_zod.z.number().int().min(1).max(40320)).max(5).nullable().optional().describe("Default reminder offsets in minutes; null for system default, [] for none"),
|
|
74
|
+
metadata: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional().describe("Arbitrary metadata (max 16KB)")
|
|
55
75
|
});
|
|
56
76
|
var DeleteCalendarSchema = import_zod.z.object({
|
|
57
|
-
calendar_id: import_zod.z.string().describe("
|
|
77
|
+
calendar_id: import_zod.z.string().describe("Calendar ID to delete")
|
|
58
78
|
});
|
|
59
79
|
var ListEventsSchema = import_zod.z.object({
|
|
60
|
-
calendar_id: import_zod.z.string().
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
source: import_zod.z.enum(["internal", "external_ical"]).optional().describe("Filter by event source"),
|
|
66
|
-
limit: import_zod.z.number().int().min(1).max(200).optional().describe("Max results per page (default 50)"),
|
|
67
|
-
offset: import_zod.z.number().int().min(0).optional().describe("Pagination offset (default 0)")
|
|
80
|
+
calendar_id: import_zod.z.string().describe("Calendar ID to list events from"),
|
|
81
|
+
start_after: import_zod.z.string().datetime().optional().describe("Filter events starting after this time"),
|
|
82
|
+
start_before: import_zod.z.string().datetime().optional().describe("Filter events starting before this time"),
|
|
83
|
+
limit: import_zod.z.number().int().min(1).max(200).default(50).describe("Max results to return"),
|
|
84
|
+
offset: import_zod.z.number().int().min(0).default(0).describe("Pagination offset")
|
|
68
85
|
});
|
|
69
86
|
var GetEventSchema = import_zod.z.object({
|
|
70
|
-
|
|
71
|
-
|
|
87
|
+
event_id: import_zod.z.string().describe("Event ID to retrieve"),
|
|
88
|
+
calendar_id: import_zod.z.string().describe("Calendar ID that owns the event. Required \u2014 the SDK is calendar-scoped (unlike the hosted MCP, which can resolve the calendar from event_id).")
|
|
72
89
|
});
|
|
73
90
|
var CreateEventSchema = import_zod.z.object({
|
|
74
|
-
calendar_id: import_zod.z.string().describe("Calendar ID to
|
|
75
|
-
title: import_zod.z.string().describe("Event title"),
|
|
76
|
-
start_time: import_zod.z.string().describe("Start time
|
|
77
|
-
end_time: import_zod.z.string().describe("End time
|
|
78
|
-
description: import_zod.z.string().optional().describe("
|
|
79
|
-
all_day: import_zod.z.boolean().
|
|
80
|
-
status: import_zod.z.enum(["confirmed", "tentative", "
|
|
81
|
-
reminders: import_zod.z.array(import_zod.z.number().int().min(1).max(40320)).max(5).nullable().optional().describe("Reminder offsets in minutes before
|
|
82
|
-
|
|
91
|
+
calendar_id: import_zod.z.string().describe("Calendar ID to add the event to"),
|
|
92
|
+
title: import_zod.z.string().min(1).max(500).describe("Event title"),
|
|
93
|
+
start_time: import_zod.z.string().datetime().describe("Start time (ISO 8601)"),
|
|
94
|
+
end_time: import_zod.z.string().datetime().describe("End time (ISO 8601)"),
|
|
95
|
+
description: import_zod.z.string().optional().describe("Optional event description"),
|
|
96
|
+
all_day: import_zod.z.boolean().default(false).describe("Whether this is an all-day event"),
|
|
97
|
+
status: import_zod.z.enum(["confirmed", "tentative", "hold"]).optional().describe('Event status. "hold" creates a tentative reservation that auto-expires at hold_expires_at. Defaults to "confirmed".'),
|
|
98
|
+
reminders: import_zod.z.array(import_zod.z.number().int().min(1).max(40320)).max(5).nullable().optional().describe("Reminder offsets in minutes before start_time (e.g. [10, 1440]). Each fires an event.reminder webhook and shows as an alarm in the iCal feed. Omit or null to inherit the calendar default (then the system default of 10 min); [] for no reminders."),
|
|
99
|
+
hold_expires_at: import_zod.z.string().datetime().optional().describe('Required when status="hold". ISO 8601 timestamp 30s-15min in the future. Auto-releases the hold when reached.'),
|
|
100
|
+
hold_priority: import_zod.z.number().int().min(0).max(100).optional().describe('Only valid with status="hold". Higher-priority overlapping holds pre-empt lower-priority ones. Defaults to 0.')
|
|
83
101
|
});
|
|
84
102
|
var UpdateEventSchema = import_zod.z.object({
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
title: import_zod.z.string().optional().describe("New event title"),
|
|
88
|
-
description: import_zod.z.string().nullable().optional().describe("New description
|
|
89
|
-
start_time: import_zod.z.string().optional().describe("New start time
|
|
90
|
-
end_time: import_zod.z.string().optional().describe("New end time
|
|
103
|
+
event_id: import_zod.z.string().describe("Event ID to update"),
|
|
104
|
+
calendar_id: import_zod.z.string().describe("Calendar ID that owns the event. Required \u2014 the SDK is calendar-scoped (unlike the hosted MCP, which can resolve the calendar from event_id)."),
|
|
105
|
+
title: import_zod.z.string().min(1).max(500).optional().describe("New event title"),
|
|
106
|
+
description: import_zod.z.string().nullable().optional().describe("New description, or null to clear it"),
|
|
107
|
+
start_time: import_zod.z.string().datetime().optional().describe("New start time (ISO 8601)"),
|
|
108
|
+
end_time: import_zod.z.string().datetime().optional().describe("New end time (ISO 8601)"),
|
|
91
109
|
all_day: import_zod.z.boolean().optional().describe("Whether this is an all-day event"),
|
|
92
110
|
status: import_zod.z.enum(["confirmed", "tentative", "cancelled"]).optional().describe("New event status"),
|
|
93
|
-
|
|
94
|
-
|
|
111
|
+
metadata: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional().describe("Replacement metadata object"),
|
|
112
|
+
reminders: import_zod.z.array(import_zod.z.number().int().min(1).max(40320)).max(5).nullable().optional().describe("Reminder offsets in minutes before start_time. Omit to leave unchanged, null to inherit the calendar default, [] for no reminders.")
|
|
95
113
|
});
|
|
96
114
|
var CancelEventSchema = import_zod.z.object({
|
|
97
|
-
|
|
98
|
-
|
|
115
|
+
event_id: import_zod.z.string().describe("Event ID to cancel"),
|
|
116
|
+
calendar_id: import_zod.z.string().describe("Calendar ID that owns the event. Required \u2014 the SDK is calendar-scoped (unlike the hosted MCP, which can resolve the calendar from event_id).")
|
|
99
117
|
});
|
|
100
118
|
var ConfirmEventSchema = import_zod.z.object({
|
|
101
119
|
event_id: import_zod.z.string().describe("Event ID of the hold to confirm")
|
|
@@ -106,14 +124,13 @@ var ReleaseEventSchema = import_zod.z.object({
|
|
|
106
124
|
var CreateAgentSchema = import_zod.z.object({
|
|
107
125
|
name: import_zod.z.string().min(1).max(255).describe("Display name for the agent"),
|
|
108
126
|
type: import_zod.z.enum(["ai", "human", "resource"]).describe("Agent type"),
|
|
109
|
-
description: import_zod.z.string().optional().describe("Optional description")
|
|
110
|
-
metadata: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional().describe("Arbitrary key-value metadata")
|
|
127
|
+
description: import_zod.z.string().optional().describe("Optional description")
|
|
111
128
|
});
|
|
112
129
|
var ListAgentsSchema = import_zod.z.object({
|
|
113
130
|
type: import_zod.z.enum(["ai", "human", "resource"]).optional().describe("Filter by agent type"),
|
|
114
131
|
status: import_zod.z.enum(["active", "paused", "decommissioned"]).optional().describe("Filter by status"),
|
|
115
|
-
limit: import_zod.z.number().int().min(1).max(200).
|
|
116
|
-
offset: import_zod.z.number().int().min(0).
|
|
132
|
+
limit: import_zod.z.number().int().min(1).max(200).default(50).describe("Max results to return"),
|
|
133
|
+
offset: import_zod.z.number().int().min(0).default(0).describe("Pagination offset")
|
|
117
134
|
});
|
|
118
135
|
var GetAgentSchema = import_zod.z.object({
|
|
119
136
|
agent_id: import_zod.z.string().describe("Agent ID to fetch")
|
|
@@ -130,27 +147,32 @@ var DeleteAgentSchema = import_zod.z.object({
|
|
|
130
147
|
});
|
|
131
148
|
var GetAvailabilitySchema = import_zod.z.object({
|
|
132
149
|
agent_id: import_zod.z.string().describe("Agent ID to check availability for"),
|
|
133
|
-
start: import_zod.z.string().describe("Range start (ISO 8601)"),
|
|
134
|
-
end: import_zod.z.string().describe("Range end (ISO 8601)"),
|
|
135
|
-
|
|
136
|
-
|
|
150
|
+
start: import_zod.z.string().datetime().optional().describe("Range start (ISO 8601). Alias: start_time."),
|
|
151
|
+
end: import_zod.z.string().datetime().optional().describe("Range end (ISO 8601). Alias: end_time."),
|
|
152
|
+
start_time: import_zod.z.string().datetime().optional().describe("Alias for `start` (matches REST events naming)."),
|
|
153
|
+
end_time: import_zod.z.string().datetime().optional().describe("Alias for `end` (matches REST events naming)."),
|
|
154
|
+
slot_duration: import_zod.z.enum(["15m", "30m", "45m", "1h", "2h"]).default("30m").describe("Minimum slot duration required \u2014 only free blocks at least this long are returned"),
|
|
155
|
+
include_busy: import_zod.z.boolean().default(false).describe("Include busy blocks in response")
|
|
137
156
|
});
|
|
138
157
|
var FindMeetingTimeSchema = import_zod.z.object({
|
|
139
|
-
agents: import_zod.z.array(import_zod.z.string()).min(1).describe("Array of agent IDs to find common free time for. All agents must be free during the returned slots."),
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
158
|
+
agents: import_zod.z.array(import_zod.z.string()).min(1).optional().describe("Array of agent IDs to find common free time for. All agents must be free during the returned slots. Alias: agent_ids."),
|
|
159
|
+
agent_ids: import_zod.z.array(import_zod.z.string()).min(1).optional().describe("Alias for `agents` (matches REST/scheduling-proposal naming)."),
|
|
160
|
+
start: import_zod.z.string().datetime().optional().describe("Search range start (ISO 8601). Alias: start_time."),
|
|
161
|
+
end: import_zod.z.string().datetime().optional().describe("Search range end (ISO 8601). Alias: end_time."),
|
|
162
|
+
start_time: import_zod.z.string().datetime().optional().describe("Alias for `start` (matches REST events naming)."),
|
|
163
|
+
end_time: import_zod.z.string().datetime().optional().describe("Alias for `end` (matches REST events naming)."),
|
|
164
|
+
slot_duration: import_zod.z.enum(["15m", "30m", "45m", "1h", "2h"]).default("30m").describe("Minimum slot duration required \u2014 only free blocks at least this long are returned"),
|
|
143
165
|
calendars: import_zod.z.array(import_zod.z.string()).optional().describe("Additional shared calendar IDs to treat as busy"),
|
|
144
|
-
include_busy: import_zod.z.boolean().
|
|
166
|
+
include_busy: import_zod.z.boolean().default(false).describe("Include per-agent busy blocks in response")
|
|
145
167
|
});
|
|
146
168
|
var GetCalendarContextSchema = import_zod.z.object({
|
|
147
169
|
calendar_id: import_zod.z.string().describe("Calendar ID")
|
|
148
170
|
});
|
|
149
171
|
var proposalSlotSchema = import_zod.z.object({
|
|
150
|
-
start_time: import_zod.z.string().
|
|
151
|
-
end_time: import_zod.z.string().
|
|
152
|
-
weight: import_zod.z.number().min(0).max(10).
|
|
153
|
-
calendar_id: import_zod.z.string().optional()
|
|
172
|
+
start_time: import_zod.z.string().datetime(),
|
|
173
|
+
end_time: import_zod.z.string().datetime(),
|
|
174
|
+
weight: import_zod.z.number().min(0).max(10).default(1).optional(),
|
|
175
|
+
calendar_id: import_zod.z.string().optional()
|
|
154
176
|
});
|
|
155
177
|
var CreateProposalSchema = import_zod.z.object({
|
|
156
178
|
title: import_zod.z.string().min(1).max(500).describe("Short description of what the meeting is about"),
|
|
@@ -159,7 +181,7 @@ var CreateProposalSchema = import_zod.z.object({
|
|
|
159
181
|
participant_agent_ids: import_zod.z.array(import_zod.z.string()).min(1).max(50).describe("Agent IDs invited to respond"),
|
|
160
182
|
calendar_id: import_zod.z.string().describe("Calendar the resolved event will be created on"),
|
|
161
183
|
slots: import_zod.z.array(proposalSlotSchema).min(1).max(20).describe("Candidate time slots (up to 20)"),
|
|
162
|
-
expires_at: import_zod.z.string().optional().describe("Auto-cancel cutoff if unresolved
|
|
184
|
+
expires_at: import_zod.z.string().datetime().optional().describe("Auto-cancel cutoff if unresolved")
|
|
163
185
|
});
|
|
164
186
|
var ListProposalsSchema = import_zod.z.object({
|
|
165
187
|
status: import_zod.z.enum(["pending", "confirmed", "expired", "cancelled"]).optional().describe("Filter by proposal status"),
|
|
@@ -184,9 +206,10 @@ var ResolveProposalSchema = import_zod.z.object({
|
|
|
184
206
|
var CancelProposalSchema = import_zod.z.object({
|
|
185
207
|
proposal_id: import_zod.z.string().describe("Proposal to cancel")
|
|
186
208
|
});
|
|
209
|
+
var timeOfDay = import_zod.z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/, "must be HH:MM in 24-hour time");
|
|
187
210
|
var workingHoursDaySchema = import_zod.z.object({
|
|
188
|
-
start:
|
|
189
|
-
end:
|
|
211
|
+
start: timeOfDay,
|
|
212
|
+
end: timeOfDay
|
|
190
213
|
});
|
|
191
214
|
var workingHoursSchema = import_zod.z.object({
|
|
192
215
|
mon: workingHoursDaySchema.optional(),
|
|
@@ -199,10 +222,10 @@ var workingHoursSchema = import_zod.z.object({
|
|
|
199
222
|
}).nullable();
|
|
200
223
|
var SetAvailabilityRulesSchema = import_zod.z.object({
|
|
201
224
|
calendar_id: import_zod.z.string().describe("Calendar to configure"),
|
|
202
|
-
buffer_before_minutes: import_zod.z.number().int().min(0).max(120).
|
|
203
|
-
buffer_after_minutes: import_zod.z.number().int().min(0).max(120).
|
|
204
|
-
working_hours: workingHoursSchema.
|
|
205
|
-
timezone: import_zod.z.string().min(1).max(64).
|
|
225
|
+
buffer_before_minutes: import_zod.z.number().int().min(0).max(120).default(0).describe("Minutes of buffer before each event (0\u2013120)"),
|
|
226
|
+
buffer_after_minutes: import_zod.z.number().int().min(0).max(120).default(0).describe("Minutes of buffer after each event (0\u2013120)"),
|
|
227
|
+
working_hours: workingHoursSchema.default(null).describe("Per-day working hours map in the calendar's timezone; omit keys for off-days. Pass null to remove any working-hours constraint."),
|
|
228
|
+
timezone: import_zod.z.string().min(1).max(64).default("UTC").describe("IANA timezone used to interpret working_hours (e.g. America/New_York)")
|
|
206
229
|
});
|
|
207
230
|
var GetAvailabilityRulesSchema = import_zod.z.object({
|
|
208
231
|
calendar_id: import_zod.z.string().describe("Calendar to read")
|
|
@@ -219,8 +242,8 @@ var RevokeScopedKeySchema = import_zod.z.object({
|
|
|
219
242
|
key_id: import_zod.z.string().describe("ID of the scoped key to revoke")
|
|
220
243
|
});
|
|
221
244
|
var GetAuditLogSchema = import_zod.z.object({
|
|
222
|
-
from: import_zod.z.string().optional().describe("Start of the window (ISO 8601). Silently clamped to the plan retention window if older."),
|
|
223
|
-
to: import_zod.z.string().optional().describe("End of the window (ISO 8601)"),
|
|
245
|
+
from: import_zod.z.string().datetime({ offset: true }).optional().describe("Start of the window (ISO 8601). Silently clamped to the plan retention window if older."),
|
|
246
|
+
to: import_zod.z.string().datetime({ offset: true }).optional().describe("End of the window (ISO 8601)"),
|
|
224
247
|
action: import_zod.z.string().min(1).max(64).optional().describe("Filter by action name (e.g. event.created)"),
|
|
225
248
|
actor_key_prefix: import_zod.z.string().min(1).max(32).optional().describe("Filter by the API key prefix that performed the action"),
|
|
226
249
|
cursor: import_zod.z.string().min(1).max(256).optional().describe("Opaque pagination cursor from a previous response"),
|
|
@@ -230,33 +253,40 @@ var AcceptTermsSchema = import_zod.z.object({
|
|
|
230
253
|
tos_version: import_zod.z.string().min(1).describe("The terms-of-service version to accept; must match the current version")
|
|
231
254
|
});
|
|
232
255
|
var ListWebhooksSchema = import_zod.z.object({
|
|
233
|
-
limit: import_zod.z.number().int().min(1).max(100).
|
|
234
|
-
offset: import_zod.z.number().int().min(0).
|
|
256
|
+
limit: import_zod.z.number().int().min(1).max(100).default(20).describe("Max results to return"),
|
|
257
|
+
offset: import_zod.z.number().int().min(0).default(0).describe("Pagination offset")
|
|
235
258
|
});
|
|
236
259
|
var GetWebhookSchema = import_zod.z.object({
|
|
237
|
-
webhook_id: import_zod.z.string().describe("
|
|
260
|
+
webhook_id: import_zod.z.string().describe("Webhook subscription to fetch")
|
|
238
261
|
});
|
|
239
262
|
var CreateWebhookSchema = import_zod.z.object({
|
|
240
|
-
url: import_zod.z.string().describe("HTTPS
|
|
241
|
-
events: import_zod.z.array(import_zod.z.
|
|
263
|
+
url: import_zod.z.string().url().describe("HTTPS endpoint that will receive event deliveries"),
|
|
264
|
+
events: import_zod.z.array(import_zod.z.enum(WEBHOOK_EVENT_TYPES)).min(1).describe("Event types to subscribe to")
|
|
242
265
|
});
|
|
243
266
|
var UpdateWebhookSchema = import_zod.z.object({
|
|
244
|
-
webhook_id: import_zod.z.string().describe("
|
|
245
|
-
url: import_zod.z.string().optional().describe("New
|
|
246
|
-
events: import_zod.z.array(import_zod.z.
|
|
247
|
-
active: import_zod.z.boolean().optional().describe("
|
|
267
|
+
webhook_id: import_zod.z.string().describe("Webhook subscription to update"),
|
|
268
|
+
url: import_zod.z.string().url().optional().describe("New HTTPS delivery endpoint"),
|
|
269
|
+
events: import_zod.z.array(import_zod.z.enum(WEBHOOK_EVENT_TYPES)).min(1).optional().describe("Replacement set of event types to subscribe to"),
|
|
270
|
+
active: import_zod.z.boolean().optional().describe("Set false to pause deliveries, true to resume")
|
|
248
271
|
});
|
|
249
272
|
var DeleteWebhookSchema = import_zod.z.object({
|
|
250
|
-
webhook_id: import_zod.z.string().describe("
|
|
273
|
+
webhook_id: import_zod.z.string().describe("Webhook subscription to delete")
|
|
274
|
+
});
|
|
275
|
+
var ListWebhookDeliveriesSchema = import_zod.z.object({
|
|
276
|
+
webhook_id: import_zod.z.string().describe("Webhook subscription whose deliveries to list"),
|
|
277
|
+
limit: import_zod.z.number().int().min(1).max(100).default(20).describe("Max results to return"),
|
|
278
|
+
offset: import_zod.z.number().int().min(0).default(0).describe("Pagination offset"),
|
|
279
|
+
status: import_zod.z.enum(WEBHOOK_DELIVERY_STATUSES).optional().describe("Filter to a single delivery status"),
|
|
280
|
+
include_payload: import_zod.z.boolean().optional().describe("Include the full event payload sent on each delivery")
|
|
251
281
|
});
|
|
252
282
|
var ListICalSubscriptionsSchema = import_zod.z.object({
|
|
253
|
-
agent_id: import_zod.z.string().describe("Agent ID
|
|
283
|
+
agent_id: import_zod.z.string().describe("Agent ID whose iCal subscriptions to list"),
|
|
254
284
|
status: import_zod.z.enum(["active", "error", "paused"]).optional().describe("Filter by subscription status"),
|
|
255
|
-
limit: import_zod.z.number().int().min(1).max(200).
|
|
256
|
-
offset: import_zod.z.number().int().min(0).
|
|
285
|
+
limit: import_zod.z.number().int().min(1).max(200).default(50).describe("Max results to return"),
|
|
286
|
+
offset: import_zod.z.number().int().min(0).default(0).describe("Pagination offset")
|
|
257
287
|
});
|
|
258
288
|
var GetICalSubscriptionSchema = import_zod.z.object({
|
|
259
|
-
subscription_id: import_zod.z.string().describe("
|
|
289
|
+
subscription_id: import_zod.z.string().describe("iCal subscription ID to fetch")
|
|
260
290
|
});
|
|
261
291
|
var SubscribeICalSchema = import_zod.z.object({
|
|
262
292
|
agent_id: import_zod.z.string().describe("Agent ID that will own this subscription"),
|
|
@@ -264,23 +294,16 @@ var SubscribeICalSchema = import_zod.z.object({
|
|
|
264
294
|
url: import_zod.z.string().url().describe("HTTPS URL of the iCal feed (.ics) to subscribe to"),
|
|
265
295
|
label: import_zod.z.string().optional().describe("Optional label for this subscription")
|
|
266
296
|
});
|
|
267
|
-
var ListWebhookDeliveriesSchema = import_zod.z.object({
|
|
268
|
-
webhook_id: import_zod.z.string().describe("Webhook subscription whose deliveries to list"),
|
|
269
|
-
limit: import_zod.z.number().int().min(1).max(100).optional().describe("Max results to return (default 20)"),
|
|
270
|
-
offset: import_zod.z.number().int().min(0).optional().describe("Pagination offset (default 0)"),
|
|
271
|
-
status: import_zod.z.enum(["pending", "delivered", "failed"]).optional().describe("Filter to a single delivery status"),
|
|
272
|
-
include_payload: import_zod.z.boolean().optional().describe("Include the full event payload sent on each delivery")
|
|
273
|
-
});
|
|
274
297
|
var UpdateICalSubscriptionSchema = import_zod.z.object({
|
|
275
|
-
subscription_id: import_zod.z.string().describe("
|
|
276
|
-
label: import_zod.z.string().optional().describe("New label"),
|
|
277
|
-
url: import_zod.z.string().optional().describe("New iCal feed
|
|
298
|
+
subscription_id: import_zod.z.string().describe("iCal subscription ID to update"),
|
|
299
|
+
label: import_zod.z.string().min(1).max(255).optional().describe("New label for this subscription"),
|
|
300
|
+
url: import_zod.z.string().url().startsWith("https://", "URL must use HTTPS").optional().describe("New HTTPS URL of the iCal feed (.ics)")
|
|
278
301
|
});
|
|
279
302
|
var DeleteICalSubscriptionSchema = import_zod.z.object({
|
|
280
|
-
subscription_id: import_zod.z.string().describe("
|
|
303
|
+
subscription_id: import_zod.z.string().describe("iCal subscription ID to delete")
|
|
281
304
|
});
|
|
282
305
|
var SyncICalSubscriptionSchema = import_zod.z.object({
|
|
283
|
-
subscription_id: import_zod.z.string().describe("
|
|
306
|
+
subscription_id: import_zod.z.string().describe("iCal subscription ID to sync")
|
|
284
307
|
});
|
|
285
308
|
var GetUsageSchema = import_zod.z.object({});
|
|
286
309
|
|
|
@@ -310,7 +333,7 @@ async function fetchPage(iterator, offset, limit) {
|
|
|
310
333
|
}
|
|
311
334
|
var listCalendars = safeFunc(async (ctx) => {
|
|
312
335
|
const { client, params } = ctx;
|
|
313
|
-
const iter = client.calendars.list({
|
|
336
|
+
const iter = client.calendars.list({ include: params.include, limit: params.limit });
|
|
314
337
|
return fetchPage(iter, params.offset, params.limit);
|
|
315
338
|
});
|
|
316
339
|
var getCalendar = safeFunc(async (ctx) => {
|
|
@@ -339,11 +362,8 @@ var listEvents = safeFunc(async (ctx) => {
|
|
|
339
362
|
const { client, params } = ctx;
|
|
340
363
|
const iter = client.events.list({
|
|
341
364
|
calendarId: params.calendar_id,
|
|
342
|
-
agentId: params.agent_id,
|
|
343
365
|
start_after: params.start_after,
|
|
344
366
|
start_before: params.start_before,
|
|
345
|
-
status: params.status,
|
|
346
|
-
source: params.source,
|
|
347
367
|
limit: params.limit
|
|
348
368
|
});
|
|
349
369
|
return fetchPage(iter, params.offset, params.limit);
|
|
@@ -393,15 +413,34 @@ var deleteAgent = safeFunc(async (ctx) => {
|
|
|
393
413
|
});
|
|
394
414
|
var getAvailability = safeFunc(async (ctx) => {
|
|
395
415
|
const { client, params } = ctx;
|
|
416
|
+
const start = params.start ?? params.start_time;
|
|
417
|
+
const end = params.end ?? params.end_time;
|
|
418
|
+
if (!start || !end) {
|
|
419
|
+
throw new Error("start (or start_time) and end (or end_time) are required");
|
|
420
|
+
}
|
|
396
421
|
return client.availability.forAgent(params.agent_id, {
|
|
397
|
-
start
|
|
398
|
-
end
|
|
422
|
+
start,
|
|
423
|
+
end,
|
|
399
424
|
slot_duration: params.slot_duration,
|
|
400
425
|
include_busy: params.include_busy
|
|
401
426
|
});
|
|
402
427
|
});
|
|
403
428
|
var findMeetingTime = safeFunc(async (ctx) => {
|
|
404
|
-
|
|
429
|
+
const { client, params } = ctx;
|
|
430
|
+
const agents = params.agents ?? params.agent_ids;
|
|
431
|
+
const start = params.start ?? params.start_time;
|
|
432
|
+
const end = params.end ?? params.end_time;
|
|
433
|
+
if (!agents || !start || !end) {
|
|
434
|
+
throw new Error("agents (or agent_ids), start (or start_time), and end (or end_time) are required");
|
|
435
|
+
}
|
|
436
|
+
return client.availability.check({
|
|
437
|
+
agents,
|
|
438
|
+
start,
|
|
439
|
+
end,
|
|
440
|
+
slot_duration: params.slot_duration,
|
|
441
|
+
calendars: params.calendars,
|
|
442
|
+
include_busy: params.include_busy
|
|
443
|
+
});
|
|
405
444
|
});
|
|
406
445
|
var getCalendarContext = safeFunc(async (ctx) => {
|
|
407
446
|
return ctx.client.calendars.getContext(ctx.params.calendar_id);
|
|
@@ -575,35 +614,35 @@ var TOOL_DEFINITIONS = [
|
|
|
575
614
|
// ── Calendars ──────────────────────────────────────────────────
|
|
576
615
|
{
|
|
577
616
|
name: "list_calendars",
|
|
578
|
-
description: "List calendars
|
|
617
|
+
description: "List calendars in the org. Org-level API keys see every calendar (agent-owned and shared); agent-scoped keys see only their own agent's calendars. Use this to discover calendar IDs before creating or listing events.",
|
|
579
618
|
schema: ListCalendarsSchema,
|
|
580
619
|
annotations: { title: "List Calendars", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
581
620
|
execute: createExecutor(listCalendars)
|
|
582
621
|
},
|
|
583
622
|
{
|
|
584
623
|
name: "get_calendar",
|
|
585
|
-
description: "
|
|
624
|
+
description: "Fetch a single calendar by ID, including its name, timezone, agent status, and default reminders. Agent-scoped keys may only read calendars owned by their agent.",
|
|
586
625
|
schema: GetCalendarSchema,
|
|
587
626
|
annotations: { title: "Get Calendar", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
588
627
|
execute: createExecutor(getCalendar)
|
|
589
628
|
},
|
|
590
629
|
{
|
|
591
630
|
name: "create_calendar",
|
|
592
|
-
description:
|
|
631
|
+
description: 'Create a calendar to hold events and track availability. Calendars are required before creating events \u2014 call this first when setting up a new agent. An agent can have multiple calendars (e.g. "Work", "Personal"). Org-level calendars (no agent_id) can be used as shared resources like meeting rooms.',
|
|
593
632
|
schema: CreateCalendarSchema,
|
|
594
633
|
annotations: { title: "Create Calendar", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
595
634
|
execute: createExecutor(createCalendar)
|
|
596
635
|
},
|
|
597
636
|
{
|
|
598
637
|
name: "update_calendar",
|
|
599
|
-
description: "Update a calendar's name, timezone, or metadata.",
|
|
638
|
+
description: "Update a calendar's name, timezone, agent status, default reminders, or metadata. Agent-scoped keys may only update calendars owned by their agent.",
|
|
600
639
|
schema: UpdateCalendarSchema,
|
|
601
640
|
annotations: { title: "Update Calendar", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
602
641
|
execute: createExecutor(updateCalendar)
|
|
603
642
|
},
|
|
604
643
|
{
|
|
605
644
|
name: "delete_calendar",
|
|
606
|
-
description: "
|
|
645
|
+
description: "Delete a calendar (soft delete). Its events are no longer returned and it stops contributing to availability. Agent-scoped keys may only delete calendars owned by their agent.",
|
|
607
646
|
schema: DeleteCalendarSchema,
|
|
608
647
|
annotations: { title: "Delete Calendar", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
609
648
|
execute: createExecutor(deleteCalendar)
|
|
@@ -611,42 +650,42 @@ var TOOL_DEFINITIONS = [
|
|
|
611
650
|
// ── Events ─────────────────────────────────────────────────────
|
|
612
651
|
{
|
|
613
652
|
name: "list_events",
|
|
614
|
-
description: "List events on a calendar
|
|
653
|
+
description: "List all events on a calendar, including internally created events and externally synced events from iCal subscriptions (e.g. Google Calendar, Outlook). Use start_after and start_before to query a specific time window.",
|
|
615
654
|
schema: ListEventsSchema,
|
|
616
655
|
annotations: { title: "List Events", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
617
656
|
execute: createExecutor(listEvents)
|
|
618
657
|
},
|
|
619
658
|
{
|
|
620
659
|
name: "get_event",
|
|
621
|
-
description: "
|
|
660
|
+
description: "Retrieve a single event by ID, including its title, times, status, location, reminders, and metadata. Works for both internally created events and externally synced iCal events. `calendar_id` is optional \u2014 if omitted the calendar is resolved from the event. Provide `calendar_id` to fail fast on cross-calendar typos.",
|
|
622
661
|
schema: GetEventSchema,
|
|
623
662
|
annotations: { title: "Get Event", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
624
663
|
execute: createExecutor(getEvent)
|
|
625
664
|
},
|
|
626
665
|
{
|
|
627
666
|
name: "create_event",
|
|
628
|
-
description:
|
|
667
|
+
description: `Create a booking, appointment, meeting, hold, or any scheduled event on a calendar. The calendar_id comes from create_calendar or list_events. Once created, this event blocks the agent's availability during that time and appears in availability queries. Use status="hold" with hold_expires_at to tentatively reserve a slot that auto-releases on TTL.`,
|
|
629
668
|
schema: CreateEventSchema,
|
|
630
669
|
annotations: { title: "Create Event", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
631
670
|
execute: createExecutor(createEvent)
|
|
632
671
|
},
|
|
633
672
|
{
|
|
634
673
|
name: "update_event",
|
|
635
|
-
description: "
|
|
674
|
+
description: "Reschedule or edit an event \u2014 change its title, description, start/end times, location, status, reminders, or metadata. Use this to move an appointment to a new time or update its details. Provide only the fields you want to change. Holds cannot be edited via this tool (use confirm_event / release_event). External iCal events are read-only. `calendar_id` is optional \u2014 if omitted it is resolved from the event.",
|
|
636
675
|
schema: UpdateEventSchema,
|
|
637
676
|
annotations: { title: "Update Event", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
638
677
|
execute: createExecutor(updateEvent)
|
|
639
678
|
},
|
|
640
679
|
{
|
|
641
680
|
name: "cancel_event",
|
|
642
|
-
description: "Delete or cancel an event from a calendar. The event is marked cancelled and excluded from future availability calculations.",
|
|
681
|
+
description: "Delete or cancel an event from a calendar. Use this to remove, cancel, or delete any scheduled event or appointment. The event is marked cancelled and excluded from future availability calculations. `calendar_id` is optional \u2014 if omitted the calendar is looked up from the event. Provide `calendar_id` to fail fast on cross-calendar typos.",
|
|
643
682
|
schema: CancelEventSchema,
|
|
644
683
|
annotations: { title: "Cancel Event", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
645
684
|
execute: createExecutor(cancelEvent)
|
|
646
685
|
},
|
|
647
686
|
{
|
|
648
687
|
name: "confirm_event",
|
|
649
|
-
description: 'Promote a held event to a confirmed booking. The event must currently have status="hold" and its hold_expires_at must not have passed.',
|
|
688
|
+
description: 'Promote a held event to a confirmed booking. The event must currently have status="hold" and its hold_expires_at must not have passed. After confirmation, event.started and event.ended lifecycle webhooks fire at the scheduled times.',
|
|
650
689
|
schema: ConfirmEventSchema,
|
|
651
690
|
annotations: { title: "Confirm Event", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
652
691
|
execute: createExecutor(confirmEvent)
|
|
@@ -668,28 +707,28 @@ var TOOL_DEFINITIONS = [
|
|
|
668
707
|
},
|
|
669
708
|
{
|
|
670
709
|
name: "list_agents",
|
|
671
|
-
description: "List all agents in your organization
|
|
710
|
+
description: "List all agents in your organization",
|
|
672
711
|
schema: ListAgentsSchema,
|
|
673
712
|
annotations: { title: "List Agents", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
674
713
|
execute: createExecutor(listAgents)
|
|
675
714
|
},
|
|
676
715
|
{
|
|
677
716
|
name: "get_agent",
|
|
678
|
-
description: "Fetch a single agent by ID. An agent represents an AI assistant, human, or shared resource (e.g. a meeting room).",
|
|
717
|
+
description: "Fetch a single agent by ID. An agent represents an AI assistant, human, or shared resource (e.g. a meeting room). Agent-scoped API keys may only read their own agent.",
|
|
679
718
|
schema: GetAgentSchema,
|
|
680
719
|
annotations: { title: "Get Agent", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
681
720
|
execute: createExecutor(getAgent)
|
|
682
721
|
},
|
|
683
722
|
{
|
|
684
723
|
name: "update_agent",
|
|
685
|
-
description: "Update an agent's name, description, metadata, or status (active/paused). Requires an org-level API key.",
|
|
724
|
+
description: "Update an agent's name, description, metadata, or status (active/paused). Requires an org-level API key \u2014 agent-scoped keys cannot mutate agents.",
|
|
686
725
|
schema: UpdateAgentSchema,
|
|
687
726
|
annotations: { title: "Update Agent", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
688
727
|
execute: createExecutor(updateAgent)
|
|
689
728
|
},
|
|
690
729
|
{
|
|
691
730
|
name: "delete_agent",
|
|
692
|
-
description: "Decommission an agent. This marks the agent as decommissioned and revokes all of its scoped API keys. Requires an org-level API key.",
|
|
731
|
+
description: "Decommission an agent. This marks the agent as decommissioned and revokes all of its scoped API keys. Requires an org-level API key \u2014 agent-scoped keys cannot delete agents.",
|
|
693
732
|
schema: DeleteAgentSchema,
|
|
694
733
|
annotations: { title: "Delete Agent", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
695
734
|
execute: createExecutor(deleteAgent)
|
|
@@ -697,14 +736,14 @@ var TOOL_DEFINITIONS = [
|
|
|
697
736
|
// ── Availability ───────────────────────────────────────────────
|
|
698
737
|
{
|
|
699
738
|
name: "get_availability",
|
|
700
|
-
description: "Check when a single agent is free within a time range.
|
|
739
|
+
description: "Check when a single agent is free within a time range. Accepts `start`/`end` (preferred \u2014 matches the underlying availability service) or `start_time`/`end_time` (aliases that match the REST events schema).",
|
|
701
740
|
schema: GetAvailabilitySchema,
|
|
702
741
|
annotations: { title: "Get Availability", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
703
742
|
execute: createExecutor(getAvailability)
|
|
704
743
|
},
|
|
705
744
|
{
|
|
706
745
|
name: "find_meeting_time",
|
|
707
|
-
description: "Find time slots when multiple agents are all free simultaneously.
|
|
746
|
+
description: "Find time slots when multiple agents are all free simultaneously. Accepts `agents`/`start`/`end` (preferred \u2014 matches the availability service) or `agent_ids`/`start_time`/`end_time` (aliases that match the REST/scheduling-proposal naming).",
|
|
708
747
|
schema: FindMeetingTimeSchema,
|
|
709
748
|
annotations: { title: "Find Meeting Time", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
710
749
|
execute: createExecutor(findMeetingTime)
|
|
@@ -712,7 +751,7 @@ var TOOL_DEFINITIONS = [
|
|
|
712
751
|
// ── Calendar context ───────────────────────────────────────────
|
|
713
752
|
{
|
|
714
753
|
name: "get_calendar_context",
|
|
715
|
-
description:
|
|
754
|
+
description: `Get a calendar's temporal context in a single call: the current event (if one is happening now), the next upcoming event, recent past events, a short upcoming window, and the owning agent's status (idle/working/waiting/error). Use this to answer "what is this agent doing right now?" without issuing multiple list_events queries.`,
|
|
716
755
|
schema: GetCalendarContextSchema,
|
|
717
756
|
annotations: { title: "Get Calendar Context", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
718
757
|
execute: createExecutor(getCalendarContext)
|
|
@@ -720,14 +759,14 @@ var TOOL_DEFINITIONS = [
|
|
|
720
759
|
// ── Scheduling proposals ───────────────────────────────────────
|
|
721
760
|
{
|
|
722
761
|
name: "create_proposal",
|
|
723
|
-
description: "Create a scheduling proposal \u2014 send candidate time slots to one or more participant agents so they can accept, decline, or counter-propose. Requires an org-level API key. Pro plan only.",
|
|
762
|
+
description: "Create a scheduling proposal \u2014 send a set of candidate time slots to one or more participant agents so they can accept, decline, or counter-propose. The organizer agent owns the proposal; once every participant responds, the system auto-resolves to the highest-scoring slot (or cancels if all decline). Requires an org-level API key. Pro plan only.",
|
|
724
763
|
schema: CreateProposalSchema,
|
|
725
764
|
annotations: { title: "Create Proposal", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
726
765
|
execute: createExecutor(createProposal)
|
|
727
766
|
},
|
|
728
767
|
{
|
|
729
768
|
name: "list_proposals",
|
|
730
|
-
description: "List scheduling proposals for the org. Filter by status or organizer_agent_id. Requires an org-level API key.",
|
|
769
|
+
description: "List scheduling proposals for the org. Filter by status (pending|confirmed|expired|cancelled) or organizer_agent_id. Requires an org-level API key.",
|
|
731
770
|
schema: ListProposalsSchema,
|
|
732
771
|
annotations: { title: "List Proposals", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
733
772
|
execute: createExecutor(listProposals)
|
|
@@ -741,14 +780,14 @@ var TOOL_DEFINITIONS = [
|
|
|
741
780
|
},
|
|
742
781
|
{
|
|
743
782
|
name: "respond_to_proposal",
|
|
744
|
-
description:
|
|
783
|
+
description: 'Submit a response (accept / decline / counter) on behalf of one participant agent to an open proposal. An "accept" requires the slot id from the proposal; a "counter" can suggest alternative slots. When all participants have responded the proposal auto-resolves \u2014 no separate resolve call needed in the normal flow. Requires an org-level API key. Pro plan only.',
|
|
745
784
|
schema: RespondToProposalSchema,
|
|
746
785
|
annotations: { title: "Respond To Proposal", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
747
786
|
execute: createExecutor(respondToProposal)
|
|
748
787
|
},
|
|
749
788
|
{
|
|
750
789
|
name: "resolve_proposal",
|
|
751
|
-
description:
|
|
790
|
+
description: 'Force-resolve an open proposal using responses collected so far. Picks the highest-scoring slot among those accepted by the most participants and creates a confirmed calendar event. If every response was "decline", the proposal is cancelled instead. Use when you want to close out a proposal without waiting for every participant. Requires an org-level API key. Pro plan only.',
|
|
752
791
|
schema: ResolveProposalSchema,
|
|
753
792
|
annotations: { title: "Resolve Proposal", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
754
793
|
execute: createExecutor(resolveProposal)
|
|
@@ -763,7 +802,7 @@ var TOOL_DEFINITIONS = [
|
|
|
763
802
|
// ── Availability rules ─────────────────────────────────────────
|
|
764
803
|
{
|
|
765
804
|
name: "set_availability_rules",
|
|
766
|
-
description: "Set or replace the availability rules on a calendar \u2014 buffer times before/after events and optional per-day working hours. Upsert: overwrites any existing rules.",
|
|
805
|
+
description: "Set or replace the availability rules on a calendar \u2014 buffer times before/after events and optional per-day working hours. When these rules are set, every availability query on this calendar automatically applies them (busy-block expansion for buffers, masking outside working hours). Upsert: overwrites any existing rules.",
|
|
767
806
|
schema: SetAvailabilityRulesSchema,
|
|
768
807
|
annotations: { title: "Set Availability Rules", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
769
808
|
execute: createExecutor(setAvailabilityRules)
|
|
@@ -777,7 +816,7 @@ var TOOL_DEFINITIONS = [
|
|
|
777
816
|
},
|
|
778
817
|
{
|
|
779
818
|
name: "clear_availability_rules",
|
|
780
|
-
description: "Remove the availability rules from a calendar, reverting to the default (no buffers, no working-hours mask).",
|
|
819
|
+
description: "Remove the availability rules from a calendar, reverting to the default (no buffers, no working-hours mask). Returns the deleted row, or an error if none were set.",
|
|
781
820
|
schema: ClearAvailabilityRulesSchema,
|
|
782
821
|
annotations: { title: "Clear Availability Rules", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
783
822
|
execute: createExecutor(clearAvailabilityRules)
|
|
@@ -785,35 +824,35 @@ var TOOL_DEFINITIONS = [
|
|
|
785
824
|
// ── Webhooks ───────────────────────────────────────────────────
|
|
786
825
|
{
|
|
787
826
|
name: "list_webhooks",
|
|
788
|
-
description: "List
|
|
827
|
+
description: "List the org's webhook subscriptions with their subscribed event types and active state. Signing secrets are never returned. Requires an org-level API key.",
|
|
789
828
|
schema: ListWebhooksSchema,
|
|
790
829
|
annotations: { title: "List Webhooks", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
791
830
|
execute: createExecutor(listWebhooks)
|
|
792
831
|
},
|
|
793
832
|
{
|
|
794
833
|
name: "get_webhook",
|
|
795
|
-
description: "Get a webhook subscription by its
|
|
834
|
+
description: "Get a single webhook subscription by id, including its subscribed event types and active state. The signing secret is never returned. Requires an org-level API key.",
|
|
796
835
|
schema: GetWebhookSchema,
|
|
797
836
|
annotations: { title: "Get Webhook", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
798
837
|
execute: createExecutor(getWebhook)
|
|
799
838
|
},
|
|
800
839
|
{
|
|
801
840
|
name: "create_webhook",
|
|
802
|
-
description: "Create a webhook subscription
|
|
841
|
+
description: "Create a webhook subscription so the org receives HTTP POST notifications when events occur (e.g. event.created, proposal.confirmed). The signing secret is returned ONCE in this response \u2014 store it to verify the HMAC-SHA256 signature on delivered payloads. Requires an org-level API key.",
|
|
803
842
|
schema: CreateWebhookSchema,
|
|
804
843
|
annotations: { title: "Create Webhook", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
805
844
|
execute: createExecutor(createWebhook)
|
|
806
845
|
},
|
|
807
846
|
{
|
|
808
847
|
name: "update_webhook",
|
|
809
|
-
description: "Update a webhook
|
|
848
|
+
description: "Update a webhook subscription \u2014 change its delivery URL, the set of subscribed event types, or pause/resume it via active. At least one field must be supplied. Requires an org-level API key.",
|
|
810
849
|
schema: UpdateWebhookSchema,
|
|
811
850
|
annotations: { title: "Update Webhook", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
812
851
|
execute: createExecutor(updateWebhook)
|
|
813
852
|
},
|
|
814
853
|
{
|
|
815
854
|
name: "delete_webhook",
|
|
816
|
-
description: "
|
|
855
|
+
description: "Permanently delete a webhook subscription. This frees its endpoint slot against the per-plan cap. Requires an org-level API key.",
|
|
817
856
|
schema: DeleteWebhookSchema,
|
|
818
857
|
annotations: { title: "Delete Webhook", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
819
858
|
execute: createExecutor(deleteWebhook)
|
|
@@ -828,42 +867,42 @@ var TOOL_DEFINITIONS = [
|
|
|
828
867
|
// ── iCal Subscriptions ─────────────────────────────────────────
|
|
829
868
|
{
|
|
830
869
|
name: "list_ical_subscriptions",
|
|
831
|
-
description: "List external
|
|
870
|
+
description: "List an agent's external iCal feed subscriptions (e.g. linked Google Calendar / Outlook feeds), including their sync status and last sync time.",
|
|
832
871
|
schema: ListICalSubscriptionsSchema,
|
|
833
872
|
annotations: { title: "List iCal Subscriptions", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
834
873
|
execute: createExecutor(listICalSubscriptions)
|
|
835
874
|
},
|
|
836
875
|
{
|
|
837
876
|
name: "get_ical_subscription",
|
|
838
|
-
description: "Get
|
|
877
|
+
description: "Get a single external iCal feed subscription by id, including its sync status, last sync time, and last error.",
|
|
839
878
|
schema: GetICalSubscriptionSchema,
|
|
840
879
|
annotations: { title: "Get iCal Subscription", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
841
880
|
execute: createExecutor(getICalSubscription)
|
|
842
881
|
},
|
|
843
882
|
{
|
|
844
883
|
name: "subscribe_ical",
|
|
845
|
-
description: "Link an external iCal feed (e.g. a human's Google Calendar) to an agent's calendar so external events appear in availability calculations.
|
|
884
|
+
description: "Link an external iCal feed (e.g. a human's Google Calendar) to an agent's calendar so external events appear in availability calculations. The target calendar must be owned by the specified agent \u2014 create the calendar with that agent_id first (org-level calendars without an agent_id cannot host external iCal subscriptions; create a dedicated per-agent calendar for sync targets).",
|
|
846
885
|
schema: SubscribeICalSchema,
|
|
847
886
|
annotations: { title: "Subscribe iCal", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
|
|
848
887
|
execute: createExecutor(subscribeICal)
|
|
849
888
|
},
|
|
850
889
|
{
|
|
851
890
|
name: "update_ical_subscription",
|
|
852
|
-
description: "Update an iCal subscription
|
|
891
|
+
description: "Update an external iCal feed subscription \u2014 change its label or its feed URL. Changing the URL forces a full re-sync on the next poll.",
|
|
853
892
|
schema: UpdateICalSubscriptionSchema,
|
|
854
893
|
annotations: { title: "Update iCal Subscription", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
855
894
|
execute: createExecutor(updateICalSubscription)
|
|
856
895
|
},
|
|
857
896
|
{
|
|
858
897
|
name: "delete_ical_subscription",
|
|
859
|
-
description: "
|
|
898
|
+
description: "Delete an external iCal feed subscription. Events previously synced from the feed are no longer refreshed.",
|
|
860
899
|
schema: DeleteICalSubscriptionSchema,
|
|
861
900
|
annotations: { title: "Delete iCal Subscription", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
862
901
|
execute: createExecutor(deleteICalSubscription)
|
|
863
902
|
},
|
|
864
903
|
{
|
|
865
904
|
name: "sync_ical_subscription",
|
|
866
|
-
description: "Trigger an immediate sync of an iCal subscription instead of waiting for the next
|
|
905
|
+
description: "Trigger an immediate sync of an external iCal feed subscription instead of waiting for the next scheduled poll. Returns once the sync has been queued.",
|
|
867
906
|
schema: SyncICalSubscriptionSchema,
|
|
868
907
|
annotations: { title: "Sync iCal Subscription", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
869
908
|
execute: createExecutor(syncICalSubscription)
|
|
@@ -871,14 +910,14 @@ var TOOL_DEFINITIONS = [
|
|
|
871
910
|
// ── Scoped keys ────────────────────────────────────────────────
|
|
872
911
|
{
|
|
873
912
|
name: "create_scoped_key",
|
|
874
|
-
description: "Create an agent-scoped API key (chr_ak_*) that can only act on behalf of a single agent. The plaintext key is returned exactly once. Requires an org-level API key.",
|
|
913
|
+
description: "Create an agent-scoped API key (chr_ak_*) that can only act on behalf of a single agent. Use this to self-provision or rotate per-agent credentials. The plaintext key is returned exactly once in the response \u2014 store it immediately, it cannot be retrieved later. Requires an org-level API key.",
|
|
875
914
|
schema: CreateScopedKeySchema,
|
|
876
915
|
annotations: { title: "Create Scoped Key", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
877
916
|
execute: createExecutor(createScopedKey)
|
|
878
917
|
},
|
|
879
918
|
{
|
|
880
919
|
name: "list_scoped_keys",
|
|
881
|
-
description: "List all live (non-revoked) agent-scoped API keys for this org. Returns key metadata only \u2014 never the plaintext secret. Requires an org-level API key.",
|
|
920
|
+
description: "List all live (non-revoked) agent-scoped API keys for this org. Returns key metadata only (id, prefix, agent_id, label, created_at) \u2014 never the plaintext secret. Requires an org-level API key.",
|
|
882
921
|
schema: ListScopedKeysSchema,
|
|
883
922
|
annotations: { title: "List Scoped Keys", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
884
923
|
execute: createExecutor(listScopedKeys)
|
|
@@ -893,7 +932,7 @@ var TOOL_DEFINITIONS = [
|
|
|
893
932
|
// ── Audit log ──────────────────────────────────────────────────
|
|
894
933
|
{
|
|
895
934
|
name: "get_audit_log",
|
|
896
|
-
description: "List audit-log entries for the calling org \u2014 mutating operations and auth-lifecycle events, newest first. Results are clamped to the plan's retention window. Requires an org-level API key.",
|
|
935
|
+
description: "List audit-log entries for the calling org \u2014 mutating operations and auth-lifecycle events, newest first. Results are clamped to the plan's retention window. Requires an org-level API key (chr_sk_*); agent-scoped keys cannot read the org-wide audit log.",
|
|
897
936
|
schema: GetAuditLogSchema,
|
|
898
937
|
annotations: { title: "Get Audit Log", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
899
938
|
execute: createExecutor(getAuditLog)
|
|
@@ -901,7 +940,7 @@ var TOOL_DEFINITIONS = [
|
|
|
901
940
|
// ── Terms ──────────────────────────────────────────────────────
|
|
902
941
|
{
|
|
903
942
|
name: "accept_terms",
|
|
904
|
-
description: "Re-accept the current Chronary terms of service on behalf of the calling org. Use this when responses carry the Chronary-Terms-Upgrade-Required header. Requires an org-level API key.",
|
|
943
|
+
description: "Re-accept the current Chronary terms of service on behalf of the calling org. Use this when responses carry the Chronary-Terms-Upgrade-Required header \u2014 a material ToS bump otherwise leaves MCP-only agents stuck without a console session. Pass the current tos_version (read it from GET /v1/auth/terms/current). Requires an org-level API key (chr_sk_*); agent-scoped keys cannot accept org-wide terms.",
|
|
905
944
|
schema: AcceptTermsSchema,
|
|
906
945
|
annotations: { title: "Accept Terms", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
907
946
|
execute: createExecutor(acceptTerms)
|
|
@@ -909,7 +948,7 @@ var TOOL_DEFINITIONS = [
|
|
|
909
948
|
// ── Usage ──────────────────────────────────────────────────────
|
|
910
949
|
{
|
|
911
950
|
name: "get_usage",
|
|
912
|
-
description: "Get
|
|
951
|
+
description: "Get the calling org's current-period usage and plan limits (agents, calendars, events, API calls, webhooks, availability queries, iCal subscriptions, proposals, scoped keys, holds, cross-calendar queries). Requires an org-level API key (chr_sk_*); agent-scoped keys cannot read org-wide usage.",
|
|
913
952
|
schema: GetUsageSchema,
|
|
914
953
|
annotations: { title: "Get Usage", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
915
954
|
execute: createExecutor(getUsage)
|