@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
|
@@ -6,15 +6,16 @@ Grocery and shopping list management scoped to households.
|
|
|
6
6
|
|
|
7
7
|
`/api/v1/households/{householdId}/grocery-list`
|
|
8
8
|
|
|
9
|
+
## Actions
|
|
10
|
+
|
|
11
|
+
The `myn_lists` tool supports these actions: `get`, `add`, `update`, `toggle`, `delete`, `delete_checked`, `bulk_add`, `convert_to_tasks`.
|
|
12
|
+
|
|
9
13
|
## Prerequisites
|
|
10
14
|
|
|
11
|
-
All list endpoints require a `householdId`.
|
|
15
|
+
All list endpoints require a `householdId`. The plugin auto-resolves it via:
|
|
12
16
|
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
16
|
-
"$MYN_API_URL/api/v1/customers/me"
|
|
17
|
-
# Response includes: households[0].id
|
|
17
|
+
```
|
|
18
|
+
GET /api/v1/households/current
|
|
18
19
|
```
|
|
19
20
|
|
|
20
21
|
## Endpoints
|
|
@@ -31,7 +32,7 @@ Returns the full grocery list for the household.
|
|
|
31
32
|
|
|
32
33
|
| Field | Type | Description |
|
|
33
34
|
|-------|------|-------------|
|
|
34
|
-
| `
|
|
35
|
+
| `success` | boolean | Operation success |
|
|
35
36
|
| `items` | object[] | Array of list items |
|
|
36
37
|
| `items[].id` | UUID | Item identifier |
|
|
37
38
|
| `items[].name` | string | Item name |
|
|
@@ -40,19 +41,22 @@ Returns the full grocery list for the household.
|
|
|
40
41
|
| `items[].notes` | string | Additional notes (nullable) |
|
|
41
42
|
| `items[].checked` | boolean | Whether the item has been picked up |
|
|
42
43
|
| `items[].addedAt` | datetime | When the item was added |
|
|
43
|
-
| `items[].addedBy` |
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
44
|
+
| `items[].addedBy` | number | User ID who added the item |
|
|
45
|
+
| `items[].addedByName` | string | Name of the user who added the item (nullable) |
|
|
46
|
+
| `items[].position` | number | Sort position |
|
|
47
|
+
| `items[].householdId` | UUID | Household ID |
|
|
48
|
+
| `items[].createdAt` | datetime | Creation timestamp |
|
|
49
|
+
| `items[].updatedAt` | datetime | Last update timestamp |
|
|
46
50
|
|
|
47
51
|
```bash
|
|
48
52
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
49
|
-
"$MYN_API_URL/api/v1/households/
|
|
53
|
+
"$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list"
|
|
50
54
|
```
|
|
51
55
|
|
|
52
56
|
### Add Item
|
|
53
57
|
|
|
54
58
|
```
|
|
55
|
-
POST /api/v1/households/{householdId}/grocery-list
|
|
59
|
+
POST /api/v1/households/{householdId}/grocery-list
|
|
56
60
|
```
|
|
57
61
|
|
|
58
62
|
**Body Parameters:**
|
|
@@ -64,15 +68,10 @@ POST /api/v1/households/{householdId}/grocery-list/items
|
|
|
64
68
|
| `quantity` | string | Optional quantity (e.g., `2 lbs`, `1 gallon`) |
|
|
65
69
|
| `notes` | string | Optional notes |
|
|
66
70
|
|
|
67
|
-
**Response
|
|
68
|
-
|
|
69
|
-
| Field | Type | Description |
|
|
70
|
-
|-------|------|-------------|
|
|
71
|
-
| `itemId` | UUID | New item identifier |
|
|
72
|
-
| `added` | boolean | Whether the item was successfully added |
|
|
71
|
+
**Response:** `{ success, item: { id, name, category?, quantity?, notes?, checked, addedAt, addedByName? } }`
|
|
73
72
|
|
|
74
73
|
```bash
|
|
75
|
-
curl -X POST "$MYN_API_URL/api/v1/households/
|
|
74
|
+
curl -X POST "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list" \
|
|
76
75
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
77
76
|
-H "Content-Type: application/json" \
|
|
78
77
|
-d '{
|
|
@@ -83,37 +82,83 @@ curl -X POST "$MYN_API_URL/api/v1/households/880e8400-e29b-41d4-a716-44665544000
|
|
|
83
82
|
}'
|
|
84
83
|
```
|
|
85
84
|
|
|
86
|
-
###
|
|
85
|
+
### Update Item
|
|
87
86
|
|
|
88
87
|
```
|
|
89
|
-
PATCH /api/v1/households/{householdId}/grocery-list/
|
|
88
|
+
PATCH /api/v1/households/{householdId}/grocery-list/{itemId}
|
|
90
89
|
```
|
|
91
90
|
|
|
91
|
+
Updates an existing grocery list item. At least one field is required.
|
|
92
|
+
|
|
92
93
|
**Body Parameters:**
|
|
93
94
|
|
|
94
95
|
| Field | Type | Description |
|
|
95
96
|
|-------|------|-------------|
|
|
96
|
-
| `
|
|
97
|
+
| `name` | string | New item name |
|
|
98
|
+
| `category` | string | New category |
|
|
99
|
+
| `quantity` | string | New quantity |
|
|
100
|
+
| `notes` | string | New notes |
|
|
97
101
|
|
|
98
|
-
**Response
|
|
102
|
+
**Response:** `{ success, item: { id, name, category?, quantity?, notes?, checked } }`
|
|
99
103
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
```bash
|
|
105
|
+
curl -X PATCH "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/ITEM_ID" \
|
|
106
|
+
-H "X-API-KEY: $MYN_API_KEY" \
|
|
107
|
+
-H "Content-Type: application/json" \
|
|
108
|
+
-d '{"quantity": "6", "notes": "Updated quantity"}'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Toggle Item Checked
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
PATCH /api/v1/households/{householdId}/grocery-list/{itemId}/toggle
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Toggles the checked state of a grocery list item.
|
|
118
|
+
|
|
119
|
+
**Response:** `{ success, item: { id, name, checked }, checked }`
|
|
104
120
|
|
|
105
121
|
```bash
|
|
106
|
-
|
|
107
|
-
curl -X PATCH "$MYN_API_URL/api/v1/households/880e8400-e29b-41d4-a716-446655440003/grocery-list/items/990e8400-e29b-41d4-a716-446655440004" \
|
|
122
|
+
curl -X PATCH "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/ITEM_ID/toggle" \
|
|
108
123
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
109
124
|
-H "Content-Type: application/json" \
|
|
110
|
-
-d '{
|
|
125
|
+
-d '{}'
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Delete Item
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
DELETE /api/v1/households/{householdId}/grocery-list/{itemId}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Deletes a single grocery list item.
|
|
135
|
+
|
|
136
|
+
**Response:** `{ success, deleted }`
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
curl -X DELETE "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/ITEM_ID" \
|
|
140
|
+
-H "X-API-KEY: $MYN_API_KEY"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Delete Checked Items
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
DELETE /api/v1/households/{householdId}/grocery-list/checked
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Deletes all checked (completed) items from the grocery list.
|
|
150
|
+
|
|
151
|
+
**Response:** `{ success, deletedCount, undoAvailable }`
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
curl -X DELETE "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/checked" \
|
|
155
|
+
-H "X-API-KEY: $MYN_API_KEY"
|
|
111
156
|
```
|
|
112
157
|
|
|
113
158
|
### Bulk Add Items
|
|
114
159
|
|
|
115
160
|
```
|
|
116
|
-
POST /api/v1/households/{householdId}/grocery-list/
|
|
161
|
+
POST /api/v1/households/{householdId}/grocery-list/bulk
|
|
117
162
|
```
|
|
118
163
|
|
|
119
164
|
**Body Parameters:**
|
|
@@ -125,15 +170,10 @@ POST /api/v1/households/{householdId}/grocery-list/items/bulk
|
|
|
125
170
|
| `items[].category` | string | Optional category |
|
|
126
171
|
| `items[].quantity` | string | Optional quantity |
|
|
127
172
|
|
|
128
|
-
**Response
|
|
129
|
-
|
|
130
|
-
| Field | Type | Description |
|
|
131
|
-
|-------|------|-------------|
|
|
132
|
-
| `addedCount` | number | Number of items added |
|
|
133
|
-
| `itemIds` | UUID[] | IDs of the newly created items |
|
|
173
|
+
**Response:** `{ success, items: [{ id, name, category?, quantity?, checked }], count }`
|
|
134
174
|
|
|
135
175
|
```bash
|
|
136
|
-
curl -X POST "$MYN_API_URL/api/v1/households/
|
|
176
|
+
curl -X POST "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/bulk" \
|
|
137
177
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
138
178
|
-H "Content-Type: application/json" \
|
|
139
179
|
-d '{
|
|
@@ -161,16 +201,10 @@ Converts grocery list items into MYN tasks (e.g., for a shopping trip).
|
|
|
161
201
|
| `uncheckedOnly` | boolean | Only convert unchecked items (default: true) |
|
|
162
202
|
| `priority` | string | Priority for created tasks (e.g., `OPPORTUNITY_NOW`) |
|
|
163
203
|
|
|
164
|
-
**Response
|
|
165
|
-
|
|
166
|
-
| Field | Type | Description |
|
|
167
|
-
|-------|------|-------------|
|
|
168
|
-
| `convertedCount` | number | Number of items converted to tasks |
|
|
169
|
-
| `taskIds` | UUID[] | IDs of the created tasks |
|
|
204
|
+
**Response:** `{ success, tasks: [{ id, title }], count }`
|
|
170
205
|
|
|
171
206
|
```bash
|
|
172
|
-
|
|
173
|
-
curl -X POST "$MYN_API_URL/api/v1/households/880e8400-e29b-41d4-a716-446655440003/grocery-list/convert-to-tasks" \
|
|
207
|
+
curl -X POST "$MYN_API_URL/api/v1/households/HOUSEHOLD_ID/grocery-list/convert-to-tasks" \
|
|
174
208
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
175
209
|
-H "Content-Type: application/json" \
|
|
176
210
|
-d '{
|
|
@@ -2,63 +2,79 @@
|
|
|
2
2
|
|
|
3
3
|
Agent memory for storing and retrieving contextual information about users.
|
|
4
4
|
|
|
5
|
-
## Base Path
|
|
6
|
-
|
|
7
|
-
`/api/v1/customers/memories`
|
|
8
|
-
|
|
9
5
|
## Endpoints
|
|
10
6
|
|
|
11
7
|
### Remember (Store Memory)
|
|
12
8
|
|
|
13
9
|
```
|
|
14
|
-
POST /api/v1/
|
|
10
|
+
POST /api/v1/agent/memories
|
|
15
11
|
```
|
|
16
12
|
|
|
17
13
|
**Body:**
|
|
18
14
|
|
|
19
15
|
| Field | Type | Required | Description |
|
|
20
16
|
|-------|------|----------|-------------|
|
|
21
|
-
| `content` | string | Yes | Memory content to store |
|
|
22
|
-
| `
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
| `content` | string | Yes | Memory content to store (max 500 chars) |
|
|
18
|
+
| `type` | string | No | `PREFERENCE`, `PATTERN`, `STYLE`, `MYN_BEHAVIOR`, `PERSONAL`, `RELATIONSHIP` |
|
|
19
|
+
|
|
20
|
+
**Note:** The tool accepts `category` as the input parameter name, but sends it as the `type` field in the request body.
|
|
21
|
+
|
|
22
|
+
**Response:**
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"id": "uuid",
|
|
27
|
+
"type": "PREFERENCE",
|
|
28
|
+
"content": "User prefers morning meetings before 10am",
|
|
29
|
+
"confidence": 0.95,
|
|
30
|
+
"duplicate": false,
|
|
31
|
+
"message": "Memory stored successfully"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
28
34
|
|
|
29
35
|
```bash
|
|
30
|
-
curl -X POST "$MYN_API_URL/api/v1/
|
|
36
|
+
curl -X POST "$MYN_API_URL/api/v1/agent/memories" \
|
|
31
37
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
32
38
|
-H "Content-Type: application/json" \
|
|
33
39
|
-d '{
|
|
34
40
|
"content": "User prefers morning meetings before 10am",
|
|
35
|
-
"
|
|
36
|
-
"tags": ["meetings", "preferences"],
|
|
37
|
-
"importance": "medium"
|
|
41
|
+
"type": "PREFERENCE"
|
|
38
42
|
}'
|
|
39
43
|
```
|
|
40
44
|
|
|
41
45
|
### Recall (Get Memories)
|
|
42
46
|
|
|
43
47
|
```
|
|
44
|
-
GET /api/v1/customers/memories
|
|
45
|
-
GET /api/v1/customers/memories/{memoryId}
|
|
48
|
+
GET /api/v1/customers/memories?limit=50
|
|
46
49
|
```
|
|
47
50
|
|
|
48
|
-
|
|
51
|
+
Returns all memories (up to 50). Optionally filter client-side by `memoryId`.
|
|
49
52
|
|
|
50
|
-
**
|
|
53
|
+
**Query Parameters:**
|
|
51
54
|
|
|
52
|
-
|
|
55
|
+
| Parameter | Type | Description |
|
|
56
|
+
|-----------|------|-------------|
|
|
57
|
+
| `limit` | number | Max results (default: 50) |
|
|
58
|
+
|
|
59
|
+
**Response:** Array of memory objects:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
[
|
|
63
|
+
{
|
|
64
|
+
"memoryId": "uuid",
|
|
65
|
+
"content": "User prefers morning meetings",
|
|
66
|
+
"category": "PREFERENCE",
|
|
67
|
+
"tags": [],
|
|
68
|
+
"importance": "medium",
|
|
69
|
+
"createdAt": "2026-03-01T00:00:00Z",
|
|
70
|
+
"accessedAt": "2026-03-09T10:00:00Z"
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
```
|
|
53
74
|
|
|
54
75
|
```bash
|
|
55
|
-
# Get recent memories
|
|
56
|
-
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
57
|
-
"$MYN_API_URL/api/v1/customers/memories?limit=10"
|
|
58
|
-
|
|
59
|
-
# Get specific memory
|
|
60
76
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
61
|
-
"$MYN_API_URL/api/v1/customers/memories
|
|
77
|
+
"$MYN_API_URL/api/v1/customers/memories?limit=50"
|
|
62
78
|
```
|
|
63
79
|
|
|
64
80
|
### Forget (Delete Memory)
|
|
@@ -68,28 +84,44 @@ DELETE /api/v1/customers/memories/{memoryId}
|
|
|
68
84
|
```
|
|
69
85
|
|
|
70
86
|
```bash
|
|
71
|
-
curl -X DELETE "$MYN_API_URL/api/v1/customers/memories/
|
|
87
|
+
curl -X DELETE "$MYN_API_URL/api/v1/customers/memories/MEMORY_ID" \
|
|
72
88
|
-H "X-API-KEY: $MYN_API_KEY"
|
|
73
89
|
```
|
|
74
90
|
|
|
75
91
|
### Search Memories
|
|
76
92
|
|
|
77
93
|
```
|
|
78
|
-
GET /api/v1/
|
|
94
|
+
GET /api/v1/agent/memories/search
|
|
79
95
|
```
|
|
80
96
|
|
|
97
|
+
Semantic search across agent memories.
|
|
98
|
+
|
|
81
99
|
**Query Parameters:**
|
|
82
100
|
|
|
83
101
|
| Parameter | Type | Description |
|
|
84
102
|
|-----------|------|-------------|
|
|
85
|
-
| `
|
|
86
|
-
| `category` | string | Filter by category |
|
|
87
|
-
| `tag` | string | Filter by tag (repeatable for multiple tags) |
|
|
103
|
+
| `query` | string | **Required.** Search query |
|
|
88
104
|
| `limit` | number | Max results (default: 10) |
|
|
89
105
|
|
|
90
|
-
**Response:**
|
|
106
|
+
**Response:**
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"results": [
|
|
111
|
+
{
|
|
112
|
+
"id": "uuid",
|
|
113
|
+
"type": "PREFERENCE",
|
|
114
|
+
"content": "User prefers morning meetings",
|
|
115
|
+
"confidence": 0.95,
|
|
116
|
+
"createdAt": "2026-03-01T00:00:00Z",
|
|
117
|
+
"topics": ["meetings", "scheduling"]
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"total": 1
|
|
121
|
+
}
|
|
122
|
+
```
|
|
91
123
|
|
|
92
124
|
```bash
|
|
93
125
|
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
94
|
-
"$MYN_API_URL/api/v1/
|
|
126
|
+
"$MYN_API_URL/api/v1/agent/memories/search?query=meeting+preference&limit=5"
|
|
95
127
|
```
|
|
@@ -4,188 +4,91 @@ AI-powered planning, auto-scheduling, and rescheduling.
|
|
|
4
4
|
|
|
5
5
|
## Base Path
|
|
6
6
|
|
|
7
|
-
`/
|
|
7
|
+
`/planning`
|
|
8
|
+
|
|
9
|
+
## Actions
|
|
10
|
+
|
|
11
|
+
The `myn_planning` tool supports these actions: `plan`, `schedule_all`, `reschedule`.
|
|
8
12
|
|
|
9
13
|
## Endpoints
|
|
10
14
|
|
|
11
|
-
###
|
|
15
|
+
### Plan (Trigger AI Planning)
|
|
12
16
|
|
|
13
17
|
```
|
|
14
|
-
|
|
18
|
+
GET /planning/plan
|
|
15
19
|
```
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
**
|
|
20
|
-
|
|
21
|
-
|
|
|
22
|
-
|
|
23
|
-
| `goal` | string |
|
|
24
|
-
| `
|
|
25
|
-
| `
|
|
26
|
-
| `
|
|
27
|
-
| `
|
|
28
|
-
| `
|
|
29
|
-
| `constraints` |
|
|
30
|
-
| `
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
| `constraints.deadline` | datetime | No | Hard deadline |
|
|
34
|
-
| `constraints.priority` | string | No | `CRITICAL`, `OPPORTUNITY_NOW`, `OVER_THE_HORIZON` |
|
|
35
|
-
|
|
36
|
-
*At least one of `goal` or `tasks` is required.
|
|
37
|
-
|
|
38
|
-
**Response:**
|
|
39
|
-
|
|
40
|
-
```json
|
|
41
|
-
{
|
|
42
|
-
"planId": "uuid",
|
|
43
|
-
"goal": "Complete Q1 planning",
|
|
44
|
-
"estimatedDuration": 240,
|
|
45
|
-
"schedule": [
|
|
46
|
-
{
|
|
47
|
-
"step": 1,
|
|
48
|
-
"title": "Review last quarter metrics",
|
|
49
|
-
"description": "Pull Q4 data and analyze trends",
|
|
50
|
-
"estimatedMinutes": 60,
|
|
51
|
-
"suggestedTimeSlot": {
|
|
52
|
-
"start": "2026-03-01T09:00:00Z",
|
|
53
|
-
"end": "2026-03-01T10:00:00Z"
|
|
54
|
-
},
|
|
55
|
-
"dependencies": []
|
|
56
|
-
}
|
|
57
|
-
],
|
|
58
|
-
"conflicts": [
|
|
59
|
-
{
|
|
60
|
-
"taskTitle": "Team standup",
|
|
61
|
-
"reason": "Overlaps with suggested time slot",
|
|
62
|
-
"suggestion": "Move to 10:30 AM"
|
|
63
|
-
}
|
|
64
|
-
],
|
|
65
|
-
"suggestions": ["Consider breaking the budget review into two sessions"],
|
|
66
|
-
"createdAt": "2026-03-01T08:00:00Z"
|
|
67
|
-
}
|
|
68
|
-
```
|
|
21
|
+
Triggers the AI planning engine to plan/schedule tasks for the current user. The backend handles this automatically based on the authenticated user's tasks -- no request body is needed.
|
|
22
|
+
|
|
23
|
+
**Tool Parameters (accepted but not sent to backend):**
|
|
24
|
+
|
|
25
|
+
| Parameter | Type | Description |
|
|
26
|
+
|-----------|------|-------------|
|
|
27
|
+
| `goal` | string | What you want to accomplish |
|
|
28
|
+
| `constraints` | object | Planning constraints |
|
|
29
|
+
| `constraints.availableHours` | number | Available hours |
|
|
30
|
+
| `constraints.preferredTimes` | string[] | Preferred time slots |
|
|
31
|
+
| `constraints.avoidTimes` | string[] | Times to avoid |
|
|
32
|
+
| `constraints.deadline` | datetime | Hard deadline |
|
|
33
|
+
| `constraints.priority` | string | `CRITICAL`, `OPPORTUNITY_NOW`, `OVER_THE_HORIZON` |
|
|
34
|
+
| `tasks` | array | Tasks to plan |
|
|
35
|
+
|
|
36
|
+
**Response:** String result from the planning engine.
|
|
69
37
|
|
|
70
38
|
```bash
|
|
71
|
-
curl -X
|
|
72
|
-
|
|
73
|
-
-H "Content-Type: application/json" \
|
|
74
|
-
-d '{
|
|
75
|
-
"goal": "Complete Q1 planning",
|
|
76
|
-
"constraints": {
|
|
77
|
-
"availableHours": 4,
|
|
78
|
-
"deadline": "2026-03-05T17:00:00Z",
|
|
79
|
-
"priority": "CRITICAL"
|
|
80
|
-
}
|
|
81
|
-
}'
|
|
39
|
+
curl -H "X-API-KEY: $MYN_API_KEY" \
|
|
40
|
+
"$MYN_API_URL/planning/plan"
|
|
82
41
|
```
|
|
83
42
|
|
|
84
|
-
###
|
|
43
|
+
### Schedule All
|
|
85
44
|
|
|
86
45
|
```
|
|
87
|
-
POST /
|
|
46
|
+
POST /planning/scheduleAll
|
|
88
47
|
```
|
|
89
48
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
**
|
|
93
|
-
|
|
94
|
-
| Field | Type | Required | Description |
|
|
95
|
-
|-------|------|----------|-------------|
|
|
96
|
-
| `date` | date | No | Date to schedule (default: today) |
|
|
97
|
-
| `respectExisting` | boolean | No | Keep existing calendar items (default: true) |
|
|
98
|
-
| `bufferMinutes` | number | No | Buffer between tasks (default: 15) |
|
|
99
|
-
|
|
100
|
-
**Response:**
|
|
101
|
-
|
|
102
|
-
```json
|
|
103
|
-
{
|
|
104
|
-
"date": "2026-03-01",
|
|
105
|
-
"scheduled": [
|
|
106
|
-
{
|
|
107
|
-
"taskId": "uuid",
|
|
108
|
-
"title": "Prepare report",
|
|
109
|
-
"scheduledStart": "2026-03-01T09:00:00Z",
|
|
110
|
-
"scheduledEnd": "2026-03-01T11:00:00Z",
|
|
111
|
-
"priority": "CRITICAL"
|
|
112
|
-
}
|
|
113
|
-
],
|
|
114
|
-
"unscheduled": [
|
|
115
|
-
{
|
|
116
|
-
"taskId": "uuid",
|
|
117
|
-
"title": "Research competitors",
|
|
118
|
-
"reason": "Not enough available time"
|
|
119
|
-
}
|
|
120
|
-
],
|
|
121
|
-
"conflicts": [
|
|
122
|
-
{
|
|
123
|
-
"type": "overlap",
|
|
124
|
-
"description": "Two critical tasks competing for morning slot",
|
|
125
|
-
"tasksInvolved": ["uuid1", "uuid2"]
|
|
126
|
-
}
|
|
127
|
-
],
|
|
128
|
-
"stats": {
|
|
129
|
-
"totalScheduled": 5,
|
|
130
|
-
"totalMinutes": 300,
|
|
131
|
-
"byPriority": { "CRITICAL": 2, "OPPORTUNITY_NOW": 3 }
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
```
|
|
49
|
+
Auto-schedules all eligible tasks (today or past start date, not completed, not OVER_THE_HORIZON/PARKING_LOT) for the authenticated user, then triggers planning. No request body needed.
|
|
50
|
+
|
|
51
|
+
**Note (MIN-740):** Changed from GET to POST.
|
|
135
52
|
|
|
136
53
|
```bash
|
|
137
|
-
curl -X POST "$MYN_API_URL/
|
|
54
|
+
curl -X POST "$MYN_API_URL/planning/scheduleAll" \
|
|
138
55
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
139
56
|
-H "Content-Type: application/json" \
|
|
140
|
-
-d '{
|
|
57
|
+
-d '{}'
|
|
141
58
|
```
|
|
142
59
|
|
|
143
|
-
### Reschedule
|
|
60
|
+
### Reschedule (Kick the Can)
|
|
144
61
|
|
|
145
62
|
```
|
|
146
|
-
POST /
|
|
63
|
+
POST /planning/kickTheCan?rebalance={true|false}
|
|
147
64
|
```
|
|
148
65
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
**
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
|
156
|
-
|
|
157
|
-
| `
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
"rescheduled": [
|
|
165
|
-
{
|
|
166
|
-
"taskId": "uuid",
|
|
167
|
-
"title": "Budget review",
|
|
168
|
-
"oldDate": "2026-03-01",
|
|
169
|
-
"newDate": "2026-03-03"
|
|
170
|
-
}
|
|
171
|
-
],
|
|
172
|
-
"failed": [
|
|
173
|
-
{
|
|
174
|
-
"taskId": "uuid",
|
|
175
|
-
"reason": "Task is already completed"
|
|
176
|
-
}
|
|
177
|
-
],
|
|
178
|
-
"suggestions": ["Consider spreading over 2 days to avoid overload"]
|
|
179
|
-
}
|
|
180
|
-
```
|
|
66
|
+
Reschedules overdue/today tasks into the future based on priority. Optionally redistributes all uncompleted tasks evenly.
|
|
67
|
+
|
|
68
|
+
**Note (MIN-740):** Changed from GET to POST.
|
|
69
|
+
|
|
70
|
+
**Query Parameters:**
|
|
71
|
+
|
|
72
|
+
| Parameter | Type | Description |
|
|
73
|
+
|-----------|------|-------------|
|
|
74
|
+
| `rebalance` | boolean | If `true`, redistribute all uncompleted tasks evenly (default: false) |
|
|
75
|
+
|
|
76
|
+
**Tool Parameters:**
|
|
77
|
+
|
|
78
|
+
| Parameter | Type | Description |
|
|
79
|
+
|-----------|------|-------------|
|
|
80
|
+
| `spreadOverDays` | number | If > 1, sets `rebalance=true` (default: 1) |
|
|
181
81
|
|
|
182
82
|
```bash
|
|
183
|
-
|
|
83
|
+
# Basic reschedule — defer overdue tasks
|
|
84
|
+
curl -X POST "$MYN_API_URL/planning/kickTheCan?rebalance=false" \
|
|
85
|
+
-H "X-API-KEY: $MYN_API_KEY" \
|
|
86
|
+
-H "Content-Type: application/json" \
|
|
87
|
+
-d '{}'
|
|
88
|
+
|
|
89
|
+
# Rebalance — spread all uncompleted tasks evenly
|
|
90
|
+
curl -X POST "$MYN_API_URL/planning/kickTheCan?rebalance=true" \
|
|
184
91
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
185
92
|
-H "Content-Type: application/json" \
|
|
186
|
-
-d '{
|
|
187
|
-
"taskIds": ["uuid1", "uuid2"],
|
|
188
|
-
"targetDate": "2026-03-05",
|
|
189
|
-
"reason": "Meeting overran, no time today"
|
|
190
|
-
}'
|
|
93
|
+
-d '{}'
|
|
191
94
|
```
|