@mind-your-now/myn 0.8.1 → 0.8.3
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.d.ts +1 -0
- package/dist/src/tools/debrief.d.ts.map +1 -1
- package/dist/src/tools/debrief.js +10 -1
- package/dist/src/tools/debrief.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
|
@@ -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
|
```
|
|
@@ -6,12 +6,16 @@ User information, goals, and preferences.
|
|
|
6
6
|
|
|
7
7
|
`/api/v1/customers`
|
|
8
8
|
|
|
9
|
+
## Actions
|
|
10
|
+
|
|
11
|
+
The `myn_profile` tool supports these actions: `get_info`, `get_goals`, `update_goals`, `preferences`.
|
|
12
|
+
|
|
9
13
|
## Endpoints
|
|
10
14
|
|
|
11
15
|
### Get User Info
|
|
12
16
|
|
|
13
17
|
```
|
|
14
|
-
GET /api/v1/customers
|
|
18
|
+
GET /api/v1/customers
|
|
15
19
|
```
|
|
16
20
|
|
|
17
21
|
**Response:**
|
|
@@ -40,7 +44,7 @@ GET /api/v1/customers/me
|
|
|
40
44
|
```
|
|
41
45
|
|
|
42
46
|
```bash
|
|
43
|
-
curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/v1/customers
|
|
47
|
+
curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/v1/customers"
|
|
44
48
|
```
|
|
45
49
|
|
|
46
50
|
### Get Goals
|
|
@@ -49,100 +53,89 @@ curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/v1/customers/me"
|
|
|
49
53
|
GET /api/v1/customers/goals
|
|
50
54
|
```
|
|
51
55
|
|
|
52
|
-
**Response:** `{
|
|
56
|
+
**Response:** `{ goalsAndAmbitions: string | null, stateHash: string }`
|
|
53
57
|
|
|
54
|
-
|
|
55
|
-
- `status`: `active`, `completed`, `paused`, `abandoned`
|
|
56
|
-
- `progress`: 0–100
|
|
58
|
+
Goals are stored as a single markdown text field. The response includes a `stateHash` for use in the read-before-write protocol (MIN-740).
|
|
57
59
|
|
|
58
60
|
```bash
|
|
59
61
|
curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/v1/customers/goals"
|
|
60
62
|
```
|
|
61
63
|
|
|
62
|
-
###
|
|
64
|
+
### Update Goals
|
|
63
65
|
|
|
64
66
|
```
|
|
65
|
-
|
|
67
|
+
PUT /api/v1/customers/goals
|
|
66
68
|
```
|
|
67
69
|
|
|
68
|
-
**
|
|
70
|
+
**Uses read-before-write guard** (MIN-740). Reads goals first to get `stateHash`, retries on 409.
|
|
71
|
+
|
|
72
|
+
The tool formats structured goal objects into markdown before sending:
|
|
73
|
+
|
|
74
|
+
**Tool Parameters (goals array):**
|
|
75
|
+
|
|
76
|
+
| Field | Type | Description |
|
|
77
|
+
|-------|------|-------------|
|
|
78
|
+
| `title` | string | **Required.** Goal title |
|
|
79
|
+
| `description` | string | Goal description |
|
|
80
|
+
| `targetDate` | date | Target date (YYYY-MM-DD) |
|
|
81
|
+
| `priority` | string | `low`, `medium`, `high` |
|
|
82
|
+
| `status` | string | `active`, `completed`, `paused`, `abandoned` |
|
|
83
|
+
|
|
84
|
+
**Request Body (sent to backend):**
|
|
69
85
|
|
|
70
86
|
```json
|
|
71
87
|
{
|
|
72
|
-
"
|
|
73
|
-
{
|
|
74
|
-
"title": "Run a marathon",
|
|
75
|
-
"description": "Complete a full marathon by end of year",
|
|
76
|
-
"targetDate": "2026-12-31",
|
|
77
|
-
"priority": "high"
|
|
78
|
-
}
|
|
79
|
-
]
|
|
88
|
+
"goalsAndAmbitions": "- **Run a marathon** [active] (high priority)\n Complete a full marathon by end of year\n Target: 2026-12-31"
|
|
80
89
|
}
|
|
81
90
|
```
|
|
82
91
|
|
|
83
|
-
**Response:** `{
|
|
92
|
+
**Response:** `{ status: "success", message: "Goals and ambitions updated successfully" }`
|
|
84
93
|
|
|
85
94
|
```bash
|
|
86
|
-
curl -
|
|
95
|
+
HASH=$(curl -s -H "X-API-KEY: $MYN_API_KEY" \
|
|
96
|
+
"$MYN_API_URL/api/v1/customers/goals" | jq -r .stateHash)
|
|
97
|
+
|
|
98
|
+
curl -X PUT "$MYN_API_URL/api/v1/customers/goals" \
|
|
87
99
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
100
|
+
-H "X-MYN-State-Hash: $HASH" \
|
|
88
101
|
-H "Content-Type: application/json" \
|
|
89
|
-
-d '{"
|
|
102
|
+
-d '{"goalsAndAmbitions": "- **Read 24 books this year** [active] (medium priority)"}'
|
|
90
103
|
```
|
|
91
104
|
|
|
92
|
-
###
|
|
105
|
+
### Preferences
|
|
93
106
|
|
|
94
|
-
|
|
95
|
-
PUT /api/v1/customers/goals/{goalId}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**Body:** `{ title?, description?, targetDate?, priority?, status? }`
|
|
107
|
+
Preferences are managed via dedicated endpoints, not a generic preferences store.
|
|
99
108
|
|
|
100
|
-
**
|
|
109
|
+
**Valid preference keys:**
|
|
101
110
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
```
|
|
111
|
+
| Key | Endpoint |
|
|
112
|
+
|-----|----------|
|
|
113
|
+
| `notification-preferences` | `GET/PUT /api/v1/customers/notification-preferences` |
|
|
114
|
+
| `coaching-intensity` | `GET/PUT /api/v1/customers/coaching-intensity` |
|
|
115
|
+
| `theme-preference` | `GET/PUT /api/v1/customers/theme-preference` |
|
|
108
116
|
|
|
109
|
-
|
|
117
|
+
**Tool Behavior:**
|
|
110
118
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
```
|
|
119
|
+
- With `preferenceKey` + `preferenceValue`: PUTs the value to the corresponding endpoint
|
|
120
|
+
- With `preferenceKey` only: GETs from the corresponding endpoint
|
|
121
|
+
- Without `preferenceKey`: GETs all preferences by fetching each endpoint
|
|
115
122
|
|
|
116
|
-
**
|
|
123
|
+
**Tool Parameters:**
|
|
117
124
|
|
|
118
125
|
| Parameter | Type | Description |
|
|
119
126
|
|-----------|------|-------------|
|
|
120
|
-
| `
|
|
121
|
-
|
|
122
|
-
**Response (all):** `{ preferences: { key: value, ... }, categories[] }`
|
|
123
|
-
**Response (specific):** `{ key, value, category, updatedAt }`
|
|
127
|
+
| `preferenceKey` | string | One of: `notification-preferences`, `coaching-intensity`, `theme-preference` |
|
|
128
|
+
| `preferenceValue` | any | Value to set (triggers PUT) |
|
|
124
129
|
|
|
125
130
|
```bash
|
|
126
131
|
# Get all preferences
|
|
127
|
-
curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/v1/customers/preferences"
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/v1/customers/preferences?category=ai"
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Set Preference
|
|
132
|
+
curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/v1/customers/notification-preferences"
|
|
133
|
+
curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/v1/customers/coaching-intensity"
|
|
134
|
+
curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/v1/customers/theme-preference"
|
|
134
135
|
|
|
135
|
-
|
|
136
|
-
PUT /api/v1/customers/
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
**Body:** `{ key, value, category? }`
|
|
140
|
-
|
|
141
|
-
**Response:** `{ key, updated }`
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
curl -X PUT "$MYN_API_URL/api/v1/customers/preferences" \
|
|
136
|
+
# Update theme
|
|
137
|
+
curl -X PUT "$MYN_API_URL/api/v1/customers/theme-preference" \
|
|
145
138
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
146
139
|
-H "Content-Type: application/json" \
|
|
147
|
-
-d '{"
|
|
140
|
+
-d '{"theme": "dark"}'
|
|
148
141
|
```
|
|
@@ -6,12 +6,16 @@ Project and category management for organizing tasks.
|
|
|
6
6
|
|
|
7
7
|
`/api/project`
|
|
8
8
|
|
|
9
|
+
## Actions
|
|
10
|
+
|
|
11
|
+
The `myn_projects` tool supports these actions: `list`, `get`, `create`, `move_task`.
|
|
12
|
+
|
|
9
13
|
## Endpoints
|
|
10
14
|
|
|
11
15
|
### List Projects
|
|
12
16
|
|
|
13
17
|
```
|
|
14
|
-
GET /api/project
|
|
18
|
+
GET /api/project/defaults
|
|
15
19
|
```
|
|
16
20
|
|
|
17
21
|
**Query Parameters:**
|
|
@@ -45,7 +49,7 @@ GET /api/project
|
|
|
45
49
|
```
|
|
46
50
|
|
|
47
51
|
```bash
|
|
48
|
-
curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/project?includeStats=true"
|
|
52
|
+
curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/project/defaults?includeStats=true"
|
|
49
53
|
```
|
|
50
54
|
|
|
51
55
|
### Get Project
|
|
@@ -87,14 +91,14 @@ curl -H "X-API-KEY: $MYN_API_KEY" "$MYN_API_URL/api/project/PROJECT_ID"
|
|
|
87
91
|
### Create Project
|
|
88
92
|
|
|
89
93
|
```
|
|
90
|
-
POST /api/project
|
|
94
|
+
POST /api/project/create
|
|
91
95
|
```
|
|
92
96
|
|
|
93
97
|
**Body:**
|
|
94
98
|
|
|
95
99
|
| Field | Type | Required | Description |
|
|
96
100
|
|-------|------|----------|-------------|
|
|
97
|
-
| `name` | string | Yes | Project name (1
|
|
101
|
+
| `name` | string | Yes | Project name (1-100 chars) |
|
|
98
102
|
| `description` | string | No | Description (max 500 chars) |
|
|
99
103
|
| `color` | string | No | Hex color (`#3B82F6`) |
|
|
100
104
|
| `icon` | string | No | Icon identifier |
|
|
@@ -103,7 +107,7 @@ POST /api/project
|
|
|
103
107
|
**Response:** `{ id, name, created }`
|
|
104
108
|
|
|
105
109
|
```bash
|
|
106
|
-
curl -X POST "$MYN_API_URL/api/project" \
|
|
110
|
+
curl -X POST "$MYN_API_URL/api/project/create" \
|
|
107
111
|
-H "X-API-KEY: $MYN_API_KEY" \
|
|
108
112
|
-H "Content-Type: application/json" \
|
|
109
113
|
-d '{"name": "Home Renovation", "color": "#10B981", "icon": "home"}'
|
|
@@ -112,16 +116,14 @@ curl -X POST "$MYN_API_URL/api/project" \
|
|
|
112
116
|
### Move Task to Project
|
|
113
117
|
|
|
114
118
|
```
|
|
115
|
-
PUT /api/
|
|
119
|
+
PUT /api/project/{targetProjectId}/moveTaskToProject/{taskId}
|
|
116
120
|
```
|
|
117
121
|
|
|
118
|
-
|
|
122
|
+
Moves a task to a different project. No request body needed.
|
|
119
123
|
|
|
120
124
|
**Response:** `{ taskId, previousProjectId?, newProjectId, moved }`
|
|
121
125
|
|
|
122
126
|
```bash
|
|
123
|
-
curl -X PUT "$MYN_API_URL/api/
|
|
124
|
-
-H "X-API-KEY: $MYN_API_KEY"
|
|
125
|
-
-H "Content-Type: application/json" \
|
|
126
|
-
-d '{"projectId": "TARGET_PROJECT_ID"}'
|
|
127
|
+
curl -X PUT "$MYN_API_URL/api/project/TARGET_PROJECT_ID/moveTaskToProject/TASK_ID" \
|
|
128
|
+
-H "X-API-KEY: $MYN_API_KEY"
|
|
127
129
|
```
|