@mind-your-now/myn 0.8.2 → 0.8.4
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/README.md +105 -6
- package/dist/index.js +1 -1
- package/dist/src/tools/debrief.js +2 -2
- package/dist/src/tools/debrief.js.map +1 -1
- package/dist/src/tools/habits.js +2 -2
- package/dist/src/tools/habits.js.map +1 -1
- package/dist/src/tools/household.js +3 -3
- package/dist/src/tools/household.js.map +1 -1
- package/dist/src/tools/lists.js +2 -2
- package/dist/src/tools/lists.js.map +1 -1
- package/dist/src/tools/memory.js +1 -1
- package/dist/src/tools/memory.js.map +1 -1
- package/dist/src/tools/planning.js +1 -1
- package/dist/src/tools/planning.js.map +1 -1
- package/dist/src/tools/projects.js +4 -4
- package/dist/src/tools/projects.js.map +1 -1
- package/dist/src/tools/tasks.js +2 -2
- package/dist/src/tools/tasks.js.map +1 -1
- package/dist/src/tools/timers.js +1 -1
- package/dist/src/tools/timers.js.map +1 -1
- package/dist/src/validation.d.ts.map +1 -1
- package/dist/src/validation.js +3 -2
- package/dist/src/validation.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
- package/skills/myn/SKILL.md +12 -10
- package/skills/myn/references/briefing-api.md +11 -183
- package/skills/myn/references/calendar-api.md +177 -55
- package/skills/myn/references/debrief-api.md +182 -0
- package/skills/myn/references/habits-api.md +37 -55
- package/skills/myn/references/household-api.md +37 -14
- package/skills/myn/references/lists-api.md +80 -46
- package/skills/myn/references/memory-api.md +66 -34
- package/skills/myn/references/planning-api.md +58 -155
- package/skills/myn/references/profile-api.md +54 -61
- package/skills/myn/references/projects-api.md +13 -11
- package/skills/myn/references/search-api.md +20 -48
- package/skills/myn/references/tasks-api.md +47 -40
- package/skills/myn/references/timers-api.md +113 -52
- package/skills/myn/references/ynab-api.md +323 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;6EAC6E;AAC7E,MAAM,UAAU,GAAG,sDAAsD,CAAC;AAE1E,+BAA+B;AAC/B,MAAM,WAAW,GAAG,4BAA4B,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAyB,EAAE,SAAiB;IACvE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,CAAC,gCAAgC;IACxF,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,WAAW,SAAS,qBAAqB,CAAC;IACnE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,WAAW,SAAS,sEAAsE,CAAC;IACpG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,2DAA2D;IAC3D,OAAO,IAAI;SACR,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC"}
|
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mind-your-now/myn",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"description": "OpenClaw plugin for Mind Your Now - AI-powered task and life management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"vitest": "^3.0.0"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@mind-your-now/skills": "0.1.
|
|
58
|
+
"@mind-your-now/skills": "0.1.2",
|
|
59
59
|
"@sinclair/typebox": "^0.34.0"
|
|
60
60
|
},
|
|
61
61
|
"engines": {
|
package/skills/myn/SKILL.md
CHANGED
|
@@ -10,16 +10,18 @@ Use these OpenClaw tool names instead of raw REST calls:
|
|
|
10
10
|
|---------------|---------|-----------------|-----------|
|
|
11
11
|
| `myn_tasks` | list, get, create, update, complete, archive, search | `/api/v2/unified-tasks` | [references/tasks-api.md](references/tasks-api.md) |
|
|
12
12
|
| `myn_debrief` | status, generate, get, apply_correction, complete_session | `/api/v2/debrief/*` | [references/debrief-api.md](references/debrief-api.md) |
|
|
13
|
-
| `myn_calendar` | list_events, create_event, delete_event, meetings | `/api/v2/calendar/*` | [references/calendar-api.md](references/calendar-api.md) |
|
|
14
|
-
| `myn_habits` | streaks, skip, chains, schedule, reminders | `/api/
|
|
15
|
-
| `myn_lists` | get, add, toggle, bulk_add, convert_to_tasks | `/api/v1/households/*/grocery-list` | [references/lists-api.md](references/lists-api.md) |
|
|
16
|
-
| `myn_timers` | create_countdown, create_alarm, list, cancel, snooze, pomodoro | `/api/v2/timers
|
|
13
|
+
| `myn_calendar` | list_calendars, list_events, get_event, create_event, update_event, delete_event, move_event, meetings | `/api/v2/calendar/*` | [references/calendar-api.md](references/calendar-api.md) |
|
|
14
|
+
| `myn_habits` | streaks, skip, chains, schedule, reminders | `/api/v2/unified-tasks/*, /api/habits/*` | [references/habits-api.md](references/habits-api.md) |
|
|
15
|
+
| `myn_lists` | get, add, toggle, bulk_add, update, delete, delete_checked, convert_to_tasks | `/api/v1/households/*/grocery-list` | [references/lists-api.md](references/lists-api.md) |
|
|
16
|
+
| `myn_timers` | create_countdown, create_alarm, list, cancel, snooze, pomodoro | `/api/v2/timers/*` | [references/timers-api.md](references/timers-api.md) |
|
|
17
17
|
| `myn_search` | search | `/api/v2/search` | [references/search-api.md](references/search-api.md) |
|
|
18
|
-
| `myn_memory` | remember, recall, forget, search | `/api/v1/customers/memories` | [references/memory-api.md](references/memory-api.md) |
|
|
19
|
-
| `myn_profile` | get_info, get_goals, update_goals, preferences | `/api/v1/customers
|
|
20
|
-
| `myn_household` | members, invite, chores, chore_schedule, chore_complete | `/api/v1/households/*` | [references/household-api.md](references/household-api.md) |
|
|
21
|
-
| `myn_projects` | list, get, create, move_task | `/api/project
|
|
22
|
-
| `myn_planning` | plan, schedule_all, reschedule | `/
|
|
18
|
+
| `myn_memory` | remember, recall, forget, search | `/api/v1/agent/memories, /api/v1/customers/memories` | [references/memory-api.md](references/memory-api.md) |
|
|
19
|
+
| `myn_profile` | get_info, get_goals, update_goals, preferences | `/api/v1/customers` | [references/profile-api.md](references/profile-api.md) |
|
|
20
|
+
| `myn_household` | members, invite, chores, chore_schedule, chore_complete | `/api/v1/households/*, /api/v2/chores/*` | [references/household-api.md](references/household-api.md) |
|
|
21
|
+
| `myn_projects` | list, get, create, move_task | `/api/project/*` | [references/projects-api.md](references/projects-api.md) |
|
|
22
|
+
| `myn_planning` | plan, schedule_all, reschedule | `/planning/*` | [references/planning-api.md](references/planning-api.md) |
|
|
23
|
+
| `myn_ynab` | budget_overview, category_balance, list_categories, account_balances, set_budget_amount, set_category_goal, goal_progress, budget_months, search_payees, create_transaction, create_transactions_bulk, list_transactions, update_transaction, delete_transaction, split_transaction, scheduled_transactions, create_scheduled_transaction, update_scheduled_transaction, delete_scheduled_transaction, subscriptions, upcoming_bills, spending_insights, payee_analysis, spending_trends, net_worth, debt_tracking, create_category_group, create_category, rename_category, move_category, rename_category_group, connection_status | `/api/v1/ynab/*` | [references/ynab-api.md](references/ynab-api.md) |
|
|
24
|
+
| `myn_a2a_pairing` | redeem_invite, ping, send_message, get_agent_card | `/api/v1/agent/*, /a2a/*` | N/A |
|
|
23
25
|
|
|
24
26
|
## Quick Reference
|
|
25
27
|
|
|
@@ -34,7 +36,7 @@ Use these OpenClaw tool names instead of raw REST calls:
|
|
|
34
36
|
|
|
35
37
|
### Task Creation (Required Fields)
|
|
36
38
|
|
|
37
|
-
Every `myn_tasks create` call needs: `title`, `taskType`, `priority`, `startDate`.
|
|
39
|
+
Every `myn_tasks create` call needs: `title`, `taskType`, `priority`, `startDate`. The `id` field is optional (auto-generated if omitted).
|
|
38
40
|
|
|
39
41
|
### Morning Routine
|
|
40
42
|
|
|
@@ -1,187 +1,15 @@
|
|
|
1
|
-
# Briefing API
|
|
1
|
+
# Briefing API (DEPRECATED)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**This API has been deprecated.** The compass/briefing endpoints have been renamed to **debrief**.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
See [debrief-api.md](debrief-api.md) for the current API documentation.
|
|
6
6
|
|
|
7
|
-
`/api/v2/compass
|
|
7
|
+
All `/api/v2/compass/*` endpoints should be replaced with `/api/v2/debrief/*`:
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Returns the current briefing session state.
|
|
18
|
-
|
|
19
|
-
**Response Fields:**
|
|
20
|
-
|
|
21
|
-
| Field | Type | Description |
|
|
22
|
-
|-------|------|-------------|
|
|
23
|
-
| `hasActiveSession` | boolean | Whether a briefing session is currently active |
|
|
24
|
-
| `sessionId` | UUID | Current session ID (null if no active session) |
|
|
25
|
-
| `lastBriefingId` | UUID | ID of the most recent briefing |
|
|
26
|
-
| `lastBriefingTime` | datetime | Timestamp of the most recent briefing |
|
|
27
|
-
| `pendingCorrections` | number | Count of unprocessed corrections |
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
31
|
-
"$MYN_API_URL/api/v2/compass/status"
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### Generate Briefing
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
POST /api/v2/compass/generate
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Generates a new Compass briefing with prioritized task lists and suggestions.
|
|
41
|
-
|
|
42
|
-
**Body Parameters:**
|
|
43
|
-
|
|
44
|
-
| Field | Type | Description |
|
|
45
|
-
|-------|------|-------------|
|
|
46
|
-
| `context` | string | Optional context to guide the briefing (e.g., "busy morning, meetings after 2pm") |
|
|
47
|
-
| `focusAreas` | string[] | Optional focus areas to emphasize (e.g., `["health", "work deadlines"]`) |
|
|
48
|
-
|
|
49
|
-
**Response Fields:**
|
|
50
|
-
|
|
51
|
-
| Field | Type | Description |
|
|
52
|
-
|-------|------|-------------|
|
|
53
|
-
| `briefingId` | UUID | Unique briefing identifier |
|
|
54
|
-
| `sessionId` | UUID | Session this briefing belongs to |
|
|
55
|
-
| `summary` | string | Natural language summary of the day |
|
|
56
|
-
| `criticalNow` | object[] | Tasks requiring immediate attention |
|
|
57
|
-
| `opportunityNow` | object[] | Tasks worth doing if time allows |
|
|
58
|
-
| `overTheHorizon` | object[] | Tasks to keep in mind for later |
|
|
59
|
-
| `upcomingMeetings` | object[] | Meetings and calendar events today |
|
|
60
|
-
| `habitsDue` | object[] | Habits scheduled for today |
|
|
61
|
-
| `suggestions` | string[] | AI-generated actionable suggestions |
|
|
62
|
-
| `createdAt` | datetime | Briefing generation timestamp |
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
# Generate a basic briefing
|
|
66
|
-
curl -X POST "$MYN_API_URL/api/v2/compass/generate" \
|
|
67
|
-
-H "X-API-KEY: $MYN_API_KEY" \
|
|
68
|
-
-H "Content-Type: application/json" \
|
|
69
|
-
-d '{}'
|
|
70
|
-
|
|
71
|
-
# Generate with context and focus areas
|
|
72
|
-
curl -X POST "$MYN_API_URL/api/v2/compass/generate" \
|
|
73
|
-
-H "X-API-KEY: $MYN_API_KEY" \
|
|
74
|
-
-H "Content-Type: application/json" \
|
|
75
|
-
-d '{
|
|
76
|
-
"context": "Working from home today, low energy",
|
|
77
|
-
"focusAreas": ["health", "project deadlines"]
|
|
78
|
-
}'
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Get Latest Briefing
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
GET /api/v2/compass/latest
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Returns the most recent briefing without generating a new one.
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
91
|
-
"$MYN_API_URL/api/v2/compass/latest"
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Get Specific Briefing
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
GET /api/v2/compass/briefings/{briefingId}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
102
|
-
"$MYN_API_URL/api/v2/compass/briefings/550e8400-e29b-41d4-a716-446655440000"
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Submit Correction
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
POST /api/v2/compass/corrections
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
Submits a correction to update the active briefing session when reality diverges from the plan.
|
|
112
|
-
|
|
113
|
-
**Body Parameters:**
|
|
114
|
-
|
|
115
|
-
| Field | Type | Description |
|
|
116
|
-
|-------|------|-------------|
|
|
117
|
-
| `type` | string | **Required.** One of: `TASK_COMPLETED`, `TASK_MISSED`, `TASK_RESCHEDULED`, `TASK_ADDED`, `PRIORITY_CHANGED`, `OTHER` |
|
|
118
|
-
| `data` | object | Optional data relevant to the correction type (e.g., `{"taskId": "..."}`) |
|
|
119
|
-
| `reason` | string | Optional human-readable reason for the correction |
|
|
120
|
-
|
|
121
|
-
**Response Fields:**
|
|
122
|
-
|
|
123
|
-
| Field | Type | Description |
|
|
124
|
-
|-------|------|-------------|
|
|
125
|
-
| `correctionId` | UUID | Unique correction identifier |
|
|
126
|
-
| `appliedAt` | datetime | When the correction was applied |
|
|
127
|
-
| `briefingUpdated` | boolean | Whether the active briefing was re-ranked |
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
# Mark a task as completed mid-session
|
|
131
|
-
curl -X POST "$MYN_API_URL/api/v2/compass/corrections" \
|
|
132
|
-
-H "X-API-KEY: $MYN_API_KEY" \
|
|
133
|
-
-H "Content-Type: application/json" \
|
|
134
|
-
-d '{
|
|
135
|
-
"type": "TASK_COMPLETED",
|
|
136
|
-
"data": {"taskId": "550e8400-e29b-41d4-a716-446655440000"},
|
|
137
|
-
"reason": "Finished the report early"
|
|
138
|
-
}'
|
|
139
|
-
|
|
140
|
-
# Report a priority change
|
|
141
|
-
curl -X POST "$MYN_API_URL/api/v2/compass/corrections" \
|
|
142
|
-
-H "X-API-KEY: $MYN_API_KEY" \
|
|
143
|
-
-H "Content-Type: application/json" \
|
|
144
|
-
-d '{
|
|
145
|
-
"type": "PRIORITY_CHANGED",
|
|
146
|
-
"data": {"taskId": "660e8400-e29b-41d4-a716-446655440001", "newPriority": "CRITICAL"},
|
|
147
|
-
"reason": "Client moved deadline up"
|
|
148
|
-
}'
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### Complete Session
|
|
152
|
-
|
|
153
|
-
```
|
|
154
|
-
POST /api/v2/compass/complete
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
Ends the active briefing session with an optional summary and decisions record.
|
|
158
|
-
|
|
159
|
-
**Body Parameters:**
|
|
160
|
-
|
|
161
|
-
| Field | Type | Description |
|
|
162
|
-
|-------|------|-------------|
|
|
163
|
-
| `summary` | string | Optional end-of-session summary |
|
|
164
|
-
| `decisions` | string[] | Optional list of key decisions made during the session |
|
|
165
|
-
|
|
166
|
-
**Response Fields:**
|
|
167
|
-
|
|
168
|
-
| Field | Type | Description |
|
|
169
|
-
|-------|------|-------------|
|
|
170
|
-
| `sessionId` | UUID | The completed session ID |
|
|
171
|
-
| `completedAt` | datetime | Session completion timestamp |
|
|
172
|
-
| `nextSessionRecommended` | datetime | Suggested time for next briefing (nullable) |
|
|
173
|
-
| `followUps` | object[] | Auto-generated follow-up items |
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
# Complete the session with a summary
|
|
177
|
-
curl -X POST "$MYN_API_URL/api/v2/compass/complete" \
|
|
178
|
-
-H "X-API-KEY: $MYN_API_KEY" \
|
|
179
|
-
-H "Content-Type: application/json" \
|
|
180
|
-
-d '{
|
|
181
|
-
"summary": "Productive morning, cleared all Critical Now items",
|
|
182
|
-
"decisions": [
|
|
183
|
-
"Postponed quarterly review to Friday",
|
|
184
|
-
"Delegated invoice follow-up to Sarah"
|
|
185
|
-
]
|
|
186
|
-
}'
|
|
187
|
-
```
|
|
9
|
+
| Old Endpoint | New Endpoint |
|
|
10
|
+
|-------------|--------------|
|
|
11
|
+
| `GET /api/v2/compass/status` | `GET /api/v2/debrief/status` |
|
|
12
|
+
| `POST /api/v2/compass/generate` | `POST /api/v2/debrief/generate` |
|
|
13
|
+
| `GET /api/v2/compass/current` | `GET /api/v2/debrief/current` |
|
|
14
|
+
| `POST /api/v2/compass/corrections/apply` | `POST /api/v2/debrief/corrections/apply` |
|
|
15
|
+
| `POST /api/v2/compass/complete` | `POST /api/v2/debrief/complete` |
|
|
@@ -1,50 +1,128 @@
|
|
|
1
1
|
# Calendar API
|
|
2
2
|
|
|
3
|
-
Calendar events and meetings management including
|
|
3
|
+
Calendar events and meetings management including listing calendars, creating, updating, moving, and deleting events.
|
|
4
4
|
|
|
5
5
|
## Base Path
|
|
6
6
|
|
|
7
7
|
`/api/v2/calendar`
|
|
8
8
|
|
|
9
|
+
## Actions
|
|
10
|
+
|
|
11
|
+
The `myn_calendar` tool supports these actions: `list_calendars`, `list_events`, `get_event`, `create_event`, `update_event`, `delete_event`, `move_event`, `meetings`.
|
|
12
|
+
|
|
9
13
|
## Endpoints
|
|
10
14
|
|
|
15
|
+
### List Calendars
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
GET /api/v1/customers/calendars
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Returns all connected calendars with metadata.
|
|
22
|
+
|
|
23
|
+
**Response Fields:**
|
|
24
|
+
|
|
25
|
+
| Field | Type | Description |
|
|
26
|
+
|-------|------|-------------|
|
|
27
|
+
| `calendars` | object[] | Array of calendar objects |
|
|
28
|
+
| `calendars[].id` | string | Calendar identifier |
|
|
29
|
+
| `calendars[].name` | string | Calendar display name |
|
|
30
|
+
| `calendars[].using` | boolean | Whether the calendar is active/in use |
|
|
31
|
+
| `calendars[].timeZone` | string | Calendar timezone |
|
|
32
|
+
| `calendars[].accessRole` | string | User's access role |
|
|
33
|
+
| `calendars[].accountEmail` | string | Associated account email |
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
37
|
+
"$MYN_API_URL/api/v1/customers/calendars"
|
|
38
|
+
```
|
|
39
|
+
|
|
11
40
|
### List Events
|
|
12
41
|
|
|
13
42
|
```
|
|
14
43
|
GET /api/v2/calendar/events
|
|
15
44
|
```
|
|
16
45
|
|
|
46
|
+
Fetches events from all connected calendars within a date range. Descriptions are automatically truncated to 200 chars and attendee lists are stripped to reduce token bloat.
|
|
47
|
+
|
|
17
48
|
**Query Parameters:**
|
|
18
49
|
|
|
19
50
|
| Parameter | Type | Description |
|
|
20
51
|
|-----------|------|-------------|
|
|
21
|
-
| `start` | datetime |
|
|
22
|
-
| `end` | datetime |
|
|
23
|
-
| `calendarId` | string | Filter by specific calendar |
|
|
24
|
-
| `allDay` | boolean | Filter for all-day events only |
|
|
52
|
+
| `start` | datetime | Start of range (ISO 8601). Defaults to today |
|
|
53
|
+
| `end` | datetime | End of range (ISO 8601). Defaults to start + 7 days |
|
|
25
54
|
| `limit` | number | Max results (default: 50) |
|
|
26
55
|
|
|
27
|
-
|
|
28
|
-
# List events for this week
|
|
29
|
-
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
30
|
-
"$MYN_API_URL/api/v2/calendar/events?start=2026-03-01T00:00:00Z&end=2026-03-07T23:59:59Z"
|
|
56
|
+
**Tool Parameters:**
|
|
31
57
|
|
|
32
|
-
|
|
58
|
+
| Parameter | Type | Description |
|
|
59
|
+
|-----------|------|-------------|
|
|
60
|
+
| `startDate` | datetime | Maps to `start` query param |
|
|
61
|
+
| `endDate` | datetime | Maps to `end` query param |
|
|
62
|
+
| `daysAhead` | number | Alternative to `endDate` — computes end date N days from now |
|
|
63
|
+
| `limit` | number | Max results (default: 50) |
|
|
64
|
+
|
|
65
|
+
**Response:**
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"events": [
|
|
70
|
+
{
|
|
71
|
+
"id": "google-event-id-123",
|
|
72
|
+
"title": "Team Standup",
|
|
73
|
+
"startTime": "2026-03-09T09:00:00",
|
|
74
|
+
"endTime": "2026-03-09T09:30:00",
|
|
75
|
+
"location": "Conference Room B",
|
|
76
|
+
"calendarId": "primary",
|
|
77
|
+
"calendarName": "Edward Becker",
|
|
78
|
+
"provider": "google",
|
|
79
|
+
"allDay": false,
|
|
80
|
+
"taskId": "550e8400-e29b-41d4-a716-446655440000",
|
|
81
|
+
"status": "confirmed"
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"total": 1,
|
|
85
|
+
"start": "2026-03-09T00:00:00",
|
|
86
|
+
"end": "2026-03-16T00:00:00"
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Note:** When a calendar event is linked to a MYN task, the response includes a `taskId` field (UUID string) referencing the linked task.
|
|
91
|
+
|
|
92
|
+
### Get Event
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
GET /api/v2/calendar/events/{eventId}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Returns full details for a single event including description and attendees. Results are cached in-memory (10-minute TTL) with hash-based change detection.
|
|
99
|
+
|
|
100
|
+
**Required Parameters:**
|
|
101
|
+
|
|
102
|
+
| Parameter | Type | Description |
|
|
103
|
+
|-----------|------|-------------|
|
|
104
|
+
| `eventId` | string | Calendar event ID |
|
|
105
|
+
|
|
106
|
+
**Response:** Full event object plus `_cached` (boolean, whether unchanged since last fetch) and `_hash` (content hash).
|
|
107
|
+
|
|
108
|
+
```bash
|
|
33
109
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
34
|
-
"$MYN_API_URL/api/v2/calendar/events
|
|
110
|
+
"$MYN_API_URL/api/v2/calendar/events/EVENT_ID"
|
|
35
111
|
```
|
|
36
112
|
|
|
37
113
|
### Create Event
|
|
38
114
|
|
|
39
115
|
```
|
|
40
|
-
POST /api/v2/calendar/events
|
|
116
|
+
POST /api/v2/calendar/standalone-events
|
|
41
117
|
```
|
|
42
118
|
|
|
119
|
+
Creates a new calendar event (not linked to a MYN task).
|
|
120
|
+
|
|
43
121
|
**Required Fields:**
|
|
44
122
|
|
|
45
123
|
| Field | Type | Description |
|
|
46
124
|
|-------|------|-------------|
|
|
47
|
-
| `title` | string | Event title |
|
|
125
|
+
| `title` | string | Event title (1-200 chars) |
|
|
48
126
|
| `startTime` | datetime | Start time (ISO 8601) |
|
|
49
127
|
| `endTime` | datetime | End time (ISO 8601, required for non-all-day events) |
|
|
50
128
|
|
|
@@ -52,17 +130,24 @@ POST /api/v2/calendar/events
|
|
|
52
130
|
|
|
53
131
|
| Field | Type | Description |
|
|
54
132
|
|-------|------|-------------|
|
|
55
|
-
| `isAllDay` | boolean |
|
|
56
|
-
| `description` | string | Event description |
|
|
133
|
+
| `isAllDay` | boolean | All-day event (default: false) |
|
|
134
|
+
| `description` | string | Event description (max 2000 chars) |
|
|
57
135
|
| `location` | string | Event location |
|
|
58
136
|
| `calendarId` | string | Target calendar ID |
|
|
59
|
-
| `
|
|
60
|
-
| `
|
|
61
|
-
| `
|
|
137
|
+
| `calendarName` | string | Calendar name to resolve to ID (e.g. "Family", "Work") |
|
|
138
|
+
| `attendees` | string[] | Email addresses, household member first names, or "family"/"everyone" to invite all household members |
|
|
139
|
+
| `timezone` | string | Timezone (e.g., "America/New_York") |
|
|
140
|
+
| `recurrence` | string | RRULE format (e.g., `FREQ=WEEKLY;BYDAY=MO,WE,FR`) |
|
|
141
|
+
| `reminders` | object[] | Each with `minutes` (number) and `method` (`popup` or `email`) |
|
|
142
|
+
|
|
143
|
+
**Calendar Selection Logic:**
|
|
144
|
+
1. Explicit `calendarId` takes precedence
|
|
145
|
+
2. `calendarName` is resolved by fuzzy match against available calendars
|
|
146
|
+
3. If attendees include household members, auto-detects family/shared calendar
|
|
147
|
+
4. Falls back to "primary"
|
|
62
148
|
|
|
63
149
|
```bash
|
|
64
|
-
|
|
65
|
-
curl -X POST "$MYN_API_URL/api/v2/calendar/events" \
|
|
150
|
+
curl -X POST "$MYN_API_URL/api/v2/calendar/standalone-events" \
|
|
66
151
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
67
152
|
-H "Content-Type: application/json" \
|
|
68
153
|
-d '{
|
|
@@ -73,18 +158,42 @@ curl -X POST "$MYN_API_URL/api/v2/calendar/events" \
|
|
|
73
158
|
"attendees": ["alice@example.com", "bob@example.com"],
|
|
74
159
|
"reminders": [{"minutes": 10, "method": "popup"}]
|
|
75
160
|
}'
|
|
161
|
+
```
|
|
76
162
|
|
|
77
|
-
|
|
78
|
-
|
|
163
|
+
### Update Event
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
PATCH /api/v2/calendar/standalone-events/{eventId}?calendarId={calendarId}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Updates an existing calendar event. Only provided fields are changed.
|
|
170
|
+
|
|
171
|
+
**Required Parameters:**
|
|
172
|
+
|
|
173
|
+
| Parameter | Type | Description |
|
|
174
|
+
|-----------|------|-------------|
|
|
175
|
+
| `eventId` | string | Calendar event ID |
|
|
176
|
+
|
|
177
|
+
**Update Fields (all optional, at least one required):**
|
|
178
|
+
|
|
179
|
+
| Field | Type | Description |
|
|
180
|
+
|-------|------|-------------|
|
|
181
|
+
| `newTitle` | string | New title |
|
|
182
|
+
| `newDescription` | string | New description |
|
|
183
|
+
| `newLocation` | string | New location |
|
|
184
|
+
| `newStartTime` | datetime | New start time (ISO 8601) |
|
|
185
|
+
| `newEndTime` | datetime | New end time (ISO 8601) |
|
|
186
|
+
| `newAttendees` | string[] | Replace attendee list (email addresses or household member names) |
|
|
187
|
+
| `addAttendees` | string[] | Add to existing attendee list |
|
|
188
|
+
| `calendarId` | string | Calendar ID (defaults to "primary") |
|
|
189
|
+
| `calendarName` | string | Calendar name to resolve |
|
|
190
|
+
| `timezone` | string | Timezone for start/end times |
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
curl -X PATCH "$MYN_API_URL/api/v2/calendar/standalone-events/EVENT_ID?calendarId=primary" \
|
|
79
194
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
80
195
|
-H "Content-Type: application/json" \
|
|
81
|
-
-d '{
|
|
82
|
-
"title": "Sprint review",
|
|
83
|
-
"startTime": "2026-03-06T00:00:00Z",
|
|
84
|
-
"isAllDay": true,
|
|
85
|
-
"recurrence": "FREQ=WEEKLY;INTERVAL=2;BYDAY=FR",
|
|
86
|
-
"description": "Bi-weekly sprint review"
|
|
87
|
-
}'
|
|
196
|
+
-d '{"title": "Updated meeting title", "location": "Room C"}'
|
|
88
197
|
```
|
|
89
198
|
|
|
90
199
|
### Delete Event
|
|
@@ -93,47 +202,60 @@ curl -X POST "$MYN_API_URL/api/v2/calendar/events" \
|
|
|
93
202
|
DELETE /api/v2/calendar/events/{eventId}
|
|
94
203
|
```
|
|
95
204
|
|
|
205
|
+
**Uses read-before-write guard** (agent reads event state hash before deleting).
|
|
206
|
+
|
|
96
207
|
```bash
|
|
97
|
-
curl -X DELETE "$MYN_API_URL/api/v2/calendar/events/
|
|
98
|
-
-H "X-API-KEY: $MYN_API_KEY"
|
|
208
|
+
curl -X DELETE "$MYN_API_URL/api/v2/calendar/events/EVENT_ID" \
|
|
209
|
+
-H "X-API-KEY: $MYN_API_KEY" \
|
|
210
|
+
-H "X-MYN-State-Hash: abc123"
|
|
99
211
|
```
|
|
100
212
|
|
|
101
|
-
###
|
|
213
|
+
### Move Event
|
|
102
214
|
|
|
103
215
|
```
|
|
104
|
-
|
|
216
|
+
POST /api/v2/calendar/standalone-events/{eventId}/move?sourceCalendarId={source}&destinationCalendarId={destination}
|
|
105
217
|
```
|
|
106
218
|
|
|
107
|
-
|
|
219
|
+
Moves an event from one calendar to another.
|
|
108
220
|
|
|
109
|
-
**
|
|
221
|
+
**Required Parameters:**
|
|
110
222
|
|
|
111
223
|
| Parameter | Type | Description |
|
|
112
224
|
|-----------|------|-------------|
|
|
113
|
-
| `
|
|
114
|
-
| `
|
|
115
|
-
| `limit` | number | Max results |
|
|
225
|
+
| `eventId` | string | Calendar event ID |
|
|
226
|
+
| `destinationCalendarId` | string | Target calendar ID (or use `destinationCalendarName`) |
|
|
116
227
|
|
|
117
|
-
**
|
|
228
|
+
**Optional Parameters:**
|
|
118
229
|
|
|
119
|
-
|
|
|
120
|
-
|
|
121
|
-
| `
|
|
122
|
-
| `
|
|
123
|
-
| `meetings[].title` | string | Meeting title |
|
|
124
|
-
| `meetings[].startTime` | datetime | Start time |
|
|
125
|
-
| `meetings[].endTime` | datetime | End time |
|
|
126
|
-
| `meetings[].attendees` | string[] | List of attendee emails |
|
|
127
|
-
| `meetings[].location` | string | Meeting location (nullable) |
|
|
128
|
-
| `meetings[].isRecurring` | boolean | Whether the meeting recurs |
|
|
129
|
-
| `total` | number | Total matching meetings |
|
|
230
|
+
| Parameter | Type | Description |
|
|
231
|
+
|-----------|------|-------------|
|
|
232
|
+
| `destinationCalendarName` | string | Target calendar name (resolved by fuzzy match) |
|
|
233
|
+
| `sourceCalendarId` | string | Source calendar ID (defaults to "primary") |
|
|
130
234
|
|
|
131
235
|
```bash
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
"
|
|
236
|
+
curl -X POST "$MYN_API_URL/api/v2/calendar/standalone-events/EVENT_ID/move?sourceCalendarId=primary&destinationCalendarId=DEST_ID" \
|
|
237
|
+
-H "X-API-KEY: $MYN_API_KEY" \
|
|
238
|
+
-H "Content-Type: application/json" \
|
|
239
|
+
-d '{}'
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Meetings
|
|
135
243
|
|
|
136
|
-
|
|
244
|
+
```
|
|
245
|
+
GET /api/v2/calendar/events (filtered to events with attendees)
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Returns upcoming meetings (events that have attendees). This action uses the standard events endpoint with date range filtering, then filters to only events with attendees.
|
|
249
|
+
|
|
250
|
+
**Tool Parameters:**
|
|
251
|
+
|
|
252
|
+
| Parameter | Type | Description |
|
|
253
|
+
|-----------|------|-------------|
|
|
254
|
+
| `includePast` | boolean | Include today's past meetings (default: false) |
|
|
255
|
+
| `daysAhead` | number | Days to look ahead (default: 7) |
|
|
256
|
+
| `limit` | number | Max results |
|
|
257
|
+
|
|
258
|
+
```bash
|
|
137
259
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
138
|
-
"$MYN_API_URL/api/v2/calendar/
|
|
260
|
+
"$MYN_API_URL/api/v2/calendar/events?start=2026-03-09T00:00:00&end=2026-03-16T00:00:00"
|
|
139
261
|
```
|