sidebud 0.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.
@@ -0,0 +1,274 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "dev.remotevoiceagent.gmail",
4
+ "name": "Gmail",
5
+ "description": "Unread and VIP mail, with inbox clean-up controls. Google API access and tokens stay on your companion computer.",
6
+ "version": "2.4.1",
7
+ "author": {
8
+ "name": "Sidebud"
9
+ },
10
+ "license": "MIT",
11
+ "logo": {
12
+ "kind": "file",
13
+ "path": "logo.png"
14
+ },
15
+ "tile": {
16
+ "size": "small"
17
+ },
18
+ "refreshSeconds": 60,
19
+ "mcp": {
20
+ "transport": "builtin",
21
+ "service": "gmail"
22
+ },
23
+ "auth": {
24
+ "type": "oauth2",
25
+ "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth",
26
+ "tokenUrl": "https://oauth2.googleapis.com/token",
27
+ "scopes": [
28
+ "https://www.googleapis.com/auth/gmail.modify"
29
+ ],
30
+ "clientIdSecret": "GOOGLE_OAUTH_CLIENT_ID",
31
+ "clientSecretSecret": "GOOGLE_OAUTH_CLIENT_SECRET",
32
+ "authorizationParams": {
33
+ "access_type": "offline",
34
+ "prompt": "consent"
35
+ }
36
+ },
37
+ "secrets": [
38
+ {
39
+ "name": "GOOGLE_OAUTH_CLIENT_ID",
40
+ "description": "Desktop OAuth client ID from your Google Cloud project with Gmail API enabled"
41
+ },
42
+ {
43
+ "name": "GOOGLE_OAUTH_CLIENT_SECRET",
44
+ "description": "That OAuth client's secret"
45
+ }
46
+ ],
47
+ "permissions": {
48
+ "tools": [
49
+ {
50
+ "name": "search_threads",
51
+ "access": "read",
52
+ "description": "Search threads with Gmail query syntax"
53
+ },
54
+ {
55
+ "name": "get_thread",
56
+ "access": "read",
57
+ "description": "Read one thread"
58
+ },
59
+ {
60
+ "name": "list_labels",
61
+ "access": "read",
62
+ "description": "List labels"
63
+ },
64
+ {
65
+ "name": "unlabel_thread",
66
+ "access": "write",
67
+ "description": "Remove labels from a thread (archive = remove INBOX, mark read = remove UNREAD)"
68
+ }
69
+ ],
70
+ "network": [
71
+ "gmail.googleapis.com",
72
+ "accounts.google.com",
73
+ "oauth2.googleapis.com"
74
+ ]
75
+ },
76
+ "settings": [
77
+ {
78
+ "id": "scope",
79
+ "label": "Mailbox",
80
+ "type": "select",
81
+ "default": "in:inbox",
82
+ "options": [
83
+ {
84
+ "id": "in:inbox",
85
+ "label": "Inbox"
86
+ },
87
+ {
88
+ "id": "label:important",
89
+ "label": "Important"
90
+ },
91
+ {
92
+ "id": "in:anywhere",
93
+ "label": "All mail"
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ "id": "vipQuery",
99
+ "label": "VIP senders",
100
+ "type": "text",
101
+ "default": "is:starred",
102
+ "description": "A Gmail search for VIP mail, e.g. from:(boss@example.com OR partner@example.com)"
103
+ }
104
+ ],
105
+ "data": [
106
+ {
107
+ "id": "unread",
108
+ "tool": "search_threads",
109
+ "arguments": {
110
+ "query": "is:unread {{setting.scope}}",
111
+ "pageSize": 50,
112
+ "view": "THREAD_VIEW_IDS"
113
+ },
114
+ "refreshSeconds": 60
115
+ },
116
+ {
117
+ "id": "recent",
118
+ "tool": "search_threads",
119
+ "arguments": {
120
+ "query": "is:unread {{setting.scope}}",
121
+ "pageSize": 8,
122
+ "view": "THREAD_VIEW_MINIMAL"
123
+ },
124
+ "refreshSeconds": 60
125
+ },
126
+ {
127
+ "id": "vip",
128
+ "tool": "search_threads",
129
+ "arguments": {
130
+ "query": "is:unread {{setting.vipQuery}}",
131
+ "pageSize": 20,
132
+ "view": "THREAD_VIEW_MINIMAL"
133
+ },
134
+ "refreshSeconds": 60
135
+ },
136
+ {
137
+ "id": "newsletters",
138
+ "tool": "search_threads",
139
+ "arguments": {
140
+ "query": "is:unread category:promotions in:inbox",
141
+ "pageSize": 50,
142
+ "view": "THREAD_VIEW_IDS"
143
+ },
144
+ "refreshSeconds": 60
145
+ }
146
+ ],
147
+ "glance": {
148
+ "stats": [
149
+ {
150
+ "label": "Unread",
151
+ "value": "{{unread/threads|count}}",
152
+ "tone": "warning"
153
+ },
154
+ {
155
+ "label": "VIP",
156
+ "value": "{{vip/threads|count}}",
157
+ "tone": "info"
158
+ }
159
+ ]
160
+ },
161
+ "blocks": [
162
+ {
163
+ "type": "stats",
164
+ "items": [
165
+ {
166
+ "label": "Unread",
167
+ "value": "{{unread/threads|count}}",
168
+ "tone": "warning"
169
+ },
170
+ {
171
+ "label": "VIP unread",
172
+ "value": "{{vip/threads|count}}",
173
+ "tone": "info"
174
+ },
175
+ {
176
+ "label": "Newsletters",
177
+ "value": "{{newsletters/threads|count}}"
178
+ }
179
+ ]
180
+ },
181
+ {
182
+ "type": "list",
183
+ "items": "{{vip/threads}}",
184
+ "item": {
185
+ "title": "{{item/messages/0/subject}}",
186
+ "subtitle": "{{item/messages/0/sender}}",
187
+ "status": "VIP",
188
+ "statusTone": "info"
189
+ },
190
+ "limit": 5,
191
+ "emptyText": "No unread VIP mail."
192
+ },
193
+ {
194
+ "type": "list",
195
+ "items": "{{recent/threads}}",
196
+ "item": {
197
+ "title": "{{item/messages/0/subject}}",
198
+ "subtitle": "{{item/messages/0/sender}}"
199
+ },
200
+ "limit": 8,
201
+ "emptyText": "Inbox zero."
202
+ }
203
+ ],
204
+ "controls": [
205
+ {
206
+ "id": "clean",
207
+ "kind": "prompt",
208
+ "label": "Clean up my inbox",
209
+ "prompt": "Clean up my inbox: archive the newsletters and tell me what needs a reply.",
210
+ "default": true
211
+ },
212
+ {
213
+ "id": "summarize",
214
+ "kind": "prompt",
215
+ "label": "Summarize unread",
216
+ "prompt": "Summarize my unread email.",
217
+ "default": true
218
+ },
219
+ {
220
+ "id": "vip",
221
+ "kind": "prompt",
222
+ "label": "Unread from VIPs",
223
+ "prompt": "Read me my unread emails from VIPs.",
224
+ "default": false
225
+ },
226
+ {
227
+ "id": "archive-newsletters",
228
+ "kind": "tool",
229
+ "label": "Archive newsletters",
230
+ "tool": "unlabel_thread",
231
+ "forEach": "{{newsletters/threads}}",
232
+ "arguments": {
233
+ "threadId": "{{item/id}}",
234
+ "labelIds": [
235
+ "INBOX"
236
+ ]
237
+ },
238
+ "effect": "consequential",
239
+ "confirm": "Archive {{newsletters/threads|count}} unread newsletter threads?",
240
+ "default": false
241
+ },
242
+ {
243
+ "id": "mark-all-read",
244
+ "kind": "tool",
245
+ "label": "Mark all read",
246
+ "tool": "unlabel_thread",
247
+ "forEach": "{{unread/threads}}",
248
+ "arguments": {
249
+ "threadId": "{{item/id}}",
250
+ "labelIds": [
251
+ "UNREAD"
252
+ ]
253
+ },
254
+ "effect": "consequential",
255
+ "confirm": "Mark {{unread/threads|count}} threads as read?",
256
+ "default": false
257
+ }
258
+ ],
259
+ "notify": [
260
+ {
261
+ "id": "vip",
262
+ "category": "mail",
263
+ "items": "{{vip/threads}}",
264
+ "key": "{{item/id}}",
265
+ "rules": [
266
+ {
267
+ "new": true,
268
+ "priority": "update",
269
+ "text": "New mail from {{item/messages/0/sender}}: {{item/messages/0/subject}}"
270
+ }
271
+ ]
272
+ }
273
+ ]
274
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "$schema": "../../../../docs/schemas/pack-v2.schema.json",
3
+ "schemaVersion": 2,
4
+ "id": "app.sidebud.obsidian",
5
+ "name": "Obsidian",
6
+ "description": "Read and search your open Obsidian vault through MCP Connector by istefox. Obsidian and its plugin must be running.",
7
+ "version": "1.0.1",
8
+ "author": {
9
+ "name": "Sidebud"
10
+ },
11
+ "license": "MIT",
12
+ "logo": {
13
+ "kind": "emoji",
14
+ "value": "📓"
15
+ },
16
+ "controls": [
17
+ {
18
+ "id": "summarize",
19
+ "kind": "prompt",
20
+ "label": "Summarize",
21
+ "prompt": "Summarize the information available through my Obsidian integration.",
22
+ "default": true
23
+ }
24
+ ],
25
+ "mcp": {
26
+ "transport": "http",
27
+ "url": "{{setting.endpoint}}",
28
+ "headers": {
29
+ "Authorization": "Bearer {{secret.OBSIDIAN_TOKEN}}"
30
+ }
31
+ },
32
+ "secrets": [
33
+ {
34
+ "name": "OBSIDIAN_TOKEN",
35
+ "description": "A dedicated Sidebud token from MCP Connector → Access control. Allow only the declared read tools."
36
+ }
37
+ ],
38
+ "settings": [
39
+ {
40
+ "id": "endpoint",
41
+ "label": "MCP endpoint",
42
+ "type": "text",
43
+ "required": true,
44
+ "format": "http-url",
45
+ "description": "Copy the local HTTP endpoint from MCP Connector settings. No API key in this field."
46
+ }
47
+ ],
48
+ "permissions": {
49
+ "tools": [
50
+ {
51
+ "name": "get_recent_files",
52
+ "access": "read"
53
+ },
54
+ {
55
+ "name": "get_vault_file",
56
+ "access": "read"
57
+ },
58
+ {
59
+ "name": "search_vault_simple",
60
+ "access": "read"
61
+ }
62
+ ]
63
+ },
64
+ "data": [
65
+ {
66
+ "id": "recent",
67
+ "tool": "get_recent_files",
68
+ "arguments": {
69
+ "limit": 8
70
+ },
71
+ "refreshSeconds": 120
72
+ }
73
+ ],
74
+ "glance": {
75
+ "line": "{{recent/totalFiles|default:0}} notes"
76
+ },
77
+ "blocks": [
78
+ {
79
+ "type": "list",
80
+ "items": "{{recent/files}}",
81
+ "item": {
82
+ "title": "{{item/path}}"
83
+ },
84
+ "limit": 8,
85
+ "emptyText": "No recent notes"
86
+ }
87
+ ]
88
+ }
Binary file