screenpipe-mcp 0.8.3 → 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/dist/index.js +26 -15
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/src/index.ts +26 -16
package/dist/index.js
CHANGED
|
@@ -123,12 +123,12 @@ const BASE_TOOLS = [
|
|
|
123
123
|
start_time: {
|
|
124
124
|
type: "string",
|
|
125
125
|
format: "date-time",
|
|
126
|
-
description: "ISO 8601 UTC
|
|
126
|
+
description: "Start time: ISO 8601 UTC (e.g., 2024-01-15T10:00:00Z) or relative (e.g., '16h ago', '2d ago', 'now')",
|
|
127
127
|
},
|
|
128
128
|
end_time: {
|
|
129
129
|
type: "string",
|
|
130
130
|
format: "date-time",
|
|
131
|
-
description: "ISO 8601 UTC
|
|
131
|
+
description: "End time: ISO 8601 UTC (e.g., 2024-01-15T18:00:00Z) or relative (e.g., 'now', '1h ago')",
|
|
132
132
|
},
|
|
133
133
|
app_name: {
|
|
134
134
|
type: "string",
|
|
@@ -159,6 +159,10 @@ const BASE_TOOLS = [
|
|
|
159
159
|
type: "string",
|
|
160
160
|
description: "Filter audio by speaker name (case-insensitive partial match)",
|
|
161
161
|
},
|
|
162
|
+
max_content_length: {
|
|
163
|
+
type: "integer",
|
|
164
|
+
description: "Truncate each result's text/transcription to this many characters using middle-truncation (keeps first half + last half). Useful for limiting token usage with small-context models.",
|
|
165
|
+
},
|
|
162
166
|
},
|
|
163
167
|
},
|
|
164
168
|
},
|
|
@@ -166,7 +170,7 @@ const BASE_TOOLS = [
|
|
|
166
170
|
name: "export-video",
|
|
167
171
|
description: "Export a video of screen recordings for a specific time range. " +
|
|
168
172
|
"Creates an MP4 video from the recorded frames between the start and end times.\n\n" +
|
|
169
|
-
"IMPORTANT: Use ISO 8601 UTC timestamps (e.g., 2024-01-15T10:00:00Z)\n\n" +
|
|
173
|
+
"IMPORTANT: Use ISO 8601 UTC timestamps (e.g., 2024-01-15T10:00:00Z) or relative times (e.g., '16h ago', 'now')\n\n" +
|
|
170
174
|
"EXAMPLES:\n" +
|
|
171
175
|
"- Last 30 minutes: Calculate timestamps from current time\n" +
|
|
172
176
|
"- Specific meeting: Use the meeting's start and end times in UTC",
|
|
@@ -180,12 +184,12 @@ const BASE_TOOLS = [
|
|
|
180
184
|
start_time: {
|
|
181
185
|
type: "string",
|
|
182
186
|
format: "date-time",
|
|
183
|
-
description: "Start time
|
|
187
|
+
description: "Start time: ISO 8601 UTC (e.g., '2024-01-15T10:00:00Z') or relative (e.g., '16h ago', 'now')",
|
|
184
188
|
},
|
|
185
189
|
end_time: {
|
|
186
190
|
type: "string",
|
|
187
191
|
format: "date-time",
|
|
188
|
-
description: "End time
|
|
192
|
+
description: "End time: ISO 8601 UTC (e.g., '2024-01-15T10:30:00Z') or relative (e.g., 'now', '1h ago')",
|
|
189
193
|
},
|
|
190
194
|
fps: {
|
|
191
195
|
type: "number",
|
|
@@ -211,12 +215,12 @@ const BASE_TOOLS = [
|
|
|
211
215
|
start_time: {
|
|
212
216
|
type: "string",
|
|
213
217
|
format: "date-time",
|
|
214
|
-
description: "ISO 8601 UTC
|
|
218
|
+
description: "Start filter: ISO 8601 UTC (e.g., 2024-01-15T10:00:00Z) or relative (e.g., '16h ago', 'now')",
|
|
215
219
|
},
|
|
216
220
|
end_time: {
|
|
217
221
|
type: "string",
|
|
218
222
|
format: "date-time",
|
|
219
|
-
description: "ISO 8601 UTC
|
|
223
|
+
description: "End filter: ISO 8601 UTC (e.g., 2024-01-15T18:00:00Z) or relative (e.g., 'now', '1h ago')",
|
|
220
224
|
},
|
|
221
225
|
limit: {
|
|
222
226
|
type: "integer",
|
|
@@ -234,7 +238,9 @@ const BASE_TOOLS = [
|
|
|
234
238
|
{
|
|
235
239
|
name: "activity-summary",
|
|
236
240
|
description: "Get a lightweight compressed activity overview for a time range (~200-500 tokens). " +
|
|
237
|
-
"Returns app usage (name, frame count, minutes), recent accessibility texts, and audio speaker summary. " +
|
|
241
|
+
"Returns app usage (name, frame count, active minutes, first/last seen), recent accessibility texts, and audio speaker summary. " +
|
|
242
|
+
"Minutes are based on active session time (consecutive frames with gaps < 5min count as active). " +
|
|
243
|
+
"first_seen/last_seen show the wall-clock span per app. " +
|
|
238
244
|
"Use this FIRST for broad questions like 'what was I doing?' before drilling into search-content or search-elements. " +
|
|
239
245
|
"Much cheaper than search-content for getting an overview.",
|
|
240
246
|
annotations: {
|
|
@@ -247,12 +253,12 @@ const BASE_TOOLS = [
|
|
|
247
253
|
start_time: {
|
|
248
254
|
type: "string",
|
|
249
255
|
format: "date-time",
|
|
250
|
-
description: "Start of time range
|
|
256
|
+
description: "Start of time range: ISO 8601 UTC (e.g., 2024-01-15T10:00:00Z) or relative (e.g., '16h ago', 'now')",
|
|
251
257
|
},
|
|
252
258
|
end_time: {
|
|
253
259
|
type: "string",
|
|
254
260
|
format: "date-time",
|
|
255
|
-
description: "End of time range
|
|
261
|
+
description: "End of time range: ISO 8601 UTC (e.g., 2024-01-15T18:00:00Z) or relative (e.g., 'now', '1h ago')",
|
|
256
262
|
},
|
|
257
263
|
app_name: {
|
|
258
264
|
type: "string",
|
|
@@ -296,12 +302,12 @@ const BASE_TOOLS = [
|
|
|
296
302
|
start_time: {
|
|
297
303
|
type: "string",
|
|
298
304
|
format: "date-time",
|
|
299
|
-
description: "ISO 8601 UTC
|
|
305
|
+
description: "Start time: ISO 8601 UTC or relative (e.g., '16h ago', 'now')",
|
|
300
306
|
},
|
|
301
307
|
end_time: {
|
|
302
308
|
type: "string",
|
|
303
309
|
format: "date-time",
|
|
304
|
-
description: "ISO 8601 UTC
|
|
310
|
+
description: "End time: ISO 8601 UTC or relative (e.g., 'now', '1h ago')",
|
|
305
311
|
},
|
|
306
312
|
app_name: {
|
|
307
313
|
type: "string",
|
|
@@ -427,8 +433,8 @@ Screenpipe captures four types of data:
|
|
|
427
433
|
| q | Search query | (none - returns all) |
|
|
428
434
|
| content_type | all/ocr/audio/input/accessibility | all |
|
|
429
435
|
| limit | Max results | 10 |
|
|
430
|
-
| start_time | ISO 8601 UTC | (no filter) |
|
|
431
|
-
| end_time | ISO 8601 UTC | (no filter) |
|
|
436
|
+
| start_time | ISO 8601 UTC or relative (e.g. '16h ago') | (no filter) |
|
|
437
|
+
| end_time | ISO 8601 UTC or relative (e.g. 'now') | (no filter) |
|
|
432
438
|
| app_name | Filter by app | (no filter) |
|
|
433
439
|
| include_frames | Include screenshots | false |
|
|
434
440
|
|
|
@@ -928,7 +934,12 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
|
928
934
|
}
|
|
929
935
|
const data = await response.json();
|
|
930
936
|
// Format apps
|
|
931
|
-
const appsLines = (data.apps || []).map((a) =>
|
|
937
|
+
const appsLines = (data.apps || []).map((a) => {
|
|
938
|
+
const timeSpan = a.first_seen && a.last_seen
|
|
939
|
+
? `, ${a.first_seen.slice(11, 16)}–${a.last_seen.slice(11, 16)} UTC`
|
|
940
|
+
: "";
|
|
941
|
+
return ` ${a.name}: ${a.minutes} min (${a.frame_count} frames${timeSpan})`;
|
|
942
|
+
});
|
|
932
943
|
// Format audio
|
|
933
944
|
const speakerLines = (data.audio_summary?.speakers || []).map((s) => ` ${s.name}: ${s.segment_count} segments`);
|
|
934
945
|
// Format recent texts
|
package/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "screenpipe",
|
|
4
4
|
"display_name": "Screenpipe",
|
|
5
|
-
"version": "0.8.
|
|
5
|
+
"version": "0.8.4",
|
|
6
6
|
"description": "Search your screen recordings and audio transcriptions with AI",
|
|
7
7
|
"long_description": "Screenpipe is a 24/7 screen and audio recorder that lets you search everything you've seen or heard. This extension connects Claude to your local screenpipe instance, enabling AI-powered search through your digital memory.",
|
|
8
8
|
"author": {
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -106,12 +106,12 @@ const BASE_TOOLS: Tool[] = [
|
|
|
106
106
|
start_time: {
|
|
107
107
|
type: "string",
|
|
108
108
|
format: "date-time",
|
|
109
|
-
description: "ISO 8601 UTC
|
|
109
|
+
description: "Start time: ISO 8601 UTC (e.g., 2024-01-15T10:00:00Z) or relative (e.g., '16h ago', '2d ago', 'now')",
|
|
110
110
|
},
|
|
111
111
|
end_time: {
|
|
112
112
|
type: "string",
|
|
113
113
|
format: "date-time",
|
|
114
|
-
description: "ISO 8601 UTC
|
|
114
|
+
description: "End time: ISO 8601 UTC (e.g., 2024-01-15T18:00:00Z) or relative (e.g., 'now', '1h ago')",
|
|
115
115
|
},
|
|
116
116
|
app_name: {
|
|
117
117
|
type: "string",
|
|
@@ -142,6 +142,10 @@ const BASE_TOOLS: Tool[] = [
|
|
|
142
142
|
type: "string",
|
|
143
143
|
description: "Filter audio by speaker name (case-insensitive partial match)",
|
|
144
144
|
},
|
|
145
|
+
max_content_length: {
|
|
146
|
+
type: "integer",
|
|
147
|
+
description: "Truncate each result's text/transcription to this many characters using middle-truncation (keeps first half + last half). Useful for limiting token usage with small-context models.",
|
|
148
|
+
},
|
|
145
149
|
},
|
|
146
150
|
},
|
|
147
151
|
},
|
|
@@ -150,7 +154,7 @@ const BASE_TOOLS: Tool[] = [
|
|
|
150
154
|
description:
|
|
151
155
|
"Export a video of screen recordings for a specific time range. " +
|
|
152
156
|
"Creates an MP4 video from the recorded frames between the start and end times.\n\n" +
|
|
153
|
-
"IMPORTANT: Use ISO 8601 UTC timestamps (e.g., 2024-01-15T10:00:00Z)\n\n" +
|
|
157
|
+
"IMPORTANT: Use ISO 8601 UTC timestamps (e.g., 2024-01-15T10:00:00Z) or relative times (e.g., '16h ago', 'now')\n\n" +
|
|
154
158
|
"EXAMPLES:\n" +
|
|
155
159
|
"- Last 30 minutes: Calculate timestamps from current time\n" +
|
|
156
160
|
"- Specific meeting: Use the meeting's start and end times in UTC",
|
|
@@ -165,13 +169,13 @@ const BASE_TOOLS: Tool[] = [
|
|
|
165
169
|
type: "string",
|
|
166
170
|
format: "date-time",
|
|
167
171
|
description:
|
|
168
|
-
"Start time
|
|
172
|
+
"Start time: ISO 8601 UTC (e.g., '2024-01-15T10:00:00Z') or relative (e.g., '16h ago', 'now')",
|
|
169
173
|
},
|
|
170
174
|
end_time: {
|
|
171
175
|
type: "string",
|
|
172
176
|
format: "date-time",
|
|
173
177
|
description:
|
|
174
|
-
"End time
|
|
178
|
+
"End time: ISO 8601 UTC (e.g., '2024-01-15T10:30:00Z') or relative (e.g., 'now', '1h ago')",
|
|
175
179
|
},
|
|
176
180
|
fps: {
|
|
177
181
|
type: "number",
|
|
@@ -199,12 +203,12 @@ const BASE_TOOLS: Tool[] = [
|
|
|
199
203
|
start_time: {
|
|
200
204
|
type: "string",
|
|
201
205
|
format: "date-time",
|
|
202
|
-
description: "ISO 8601 UTC
|
|
206
|
+
description: "Start filter: ISO 8601 UTC (e.g., 2024-01-15T10:00:00Z) or relative (e.g., '16h ago', 'now')",
|
|
203
207
|
},
|
|
204
208
|
end_time: {
|
|
205
209
|
type: "string",
|
|
206
210
|
format: "date-time",
|
|
207
|
-
description: "ISO 8601 UTC
|
|
211
|
+
description: "End filter: ISO 8601 UTC (e.g., 2024-01-15T18:00:00Z) or relative (e.g., 'now', '1h ago')",
|
|
208
212
|
},
|
|
209
213
|
limit: {
|
|
210
214
|
type: "integer",
|
|
@@ -223,7 +227,9 @@ const BASE_TOOLS: Tool[] = [
|
|
|
223
227
|
name: "activity-summary",
|
|
224
228
|
description:
|
|
225
229
|
"Get a lightweight compressed activity overview for a time range (~200-500 tokens). " +
|
|
226
|
-
"Returns app usage (name, frame count, minutes), recent accessibility texts, and audio speaker summary. " +
|
|
230
|
+
"Returns app usage (name, frame count, active minutes, first/last seen), recent accessibility texts, and audio speaker summary. " +
|
|
231
|
+
"Minutes are based on active session time (consecutive frames with gaps < 5min count as active). " +
|
|
232
|
+
"first_seen/last_seen show the wall-clock span per app. " +
|
|
227
233
|
"Use this FIRST for broad questions like 'what was I doing?' before drilling into search-content or search-elements. " +
|
|
228
234
|
"Much cheaper than search-content for getting an overview.",
|
|
229
235
|
annotations: {
|
|
@@ -236,12 +242,12 @@ const BASE_TOOLS: Tool[] = [
|
|
|
236
242
|
start_time: {
|
|
237
243
|
type: "string",
|
|
238
244
|
format: "date-time",
|
|
239
|
-
description: "Start of time range
|
|
245
|
+
description: "Start of time range: ISO 8601 UTC (e.g., 2024-01-15T10:00:00Z) or relative (e.g., '16h ago', 'now')",
|
|
240
246
|
},
|
|
241
247
|
end_time: {
|
|
242
248
|
type: "string",
|
|
243
249
|
format: "date-time",
|
|
244
|
-
description: "End of time range
|
|
250
|
+
description: "End of time range: ISO 8601 UTC (e.g., 2024-01-15T18:00:00Z) or relative (e.g., 'now', '1h ago')",
|
|
245
251
|
},
|
|
246
252
|
app_name: {
|
|
247
253
|
type: "string",
|
|
@@ -286,12 +292,12 @@ const BASE_TOOLS: Tool[] = [
|
|
|
286
292
|
start_time: {
|
|
287
293
|
type: "string",
|
|
288
294
|
format: "date-time",
|
|
289
|
-
description: "ISO 8601 UTC
|
|
295
|
+
description: "Start time: ISO 8601 UTC or relative (e.g., '16h ago', 'now')",
|
|
290
296
|
},
|
|
291
297
|
end_time: {
|
|
292
298
|
type: "string",
|
|
293
299
|
format: "date-time",
|
|
294
|
-
description: "ISO 8601 UTC
|
|
300
|
+
description: "End time: ISO 8601 UTC or relative (e.g., 'now', '1h ago')",
|
|
295
301
|
},
|
|
296
302
|
app_name: {
|
|
297
303
|
type: "string",
|
|
@@ -424,8 +430,8 @@ Screenpipe captures four types of data:
|
|
|
424
430
|
| q | Search query | (none - returns all) |
|
|
425
431
|
| content_type | all/ocr/audio/input/accessibility | all |
|
|
426
432
|
| limit | Max results | 10 |
|
|
427
|
-
| start_time | ISO 8601 UTC | (no filter) |
|
|
428
|
-
| end_time | ISO 8601 UTC | (no filter) |
|
|
433
|
+
| start_time | ISO 8601 UTC or relative (e.g. '16h ago') | (no filter) |
|
|
434
|
+
| end_time | ISO 8601 UTC or relative (e.g. 'now') | (no filter) |
|
|
429
435
|
| app_name | Filter by app | (no filter) |
|
|
430
436
|
| include_frames | Include screenshots | false |
|
|
431
437
|
|
|
@@ -993,8 +999,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
993
999
|
|
|
994
1000
|
// Format apps
|
|
995
1001
|
const appsLines = (data.apps || []).map(
|
|
996
|
-
(a: { name: string; frame_count: number; minutes: number }) =>
|
|
997
|
-
|
|
1002
|
+
(a: { name: string; frame_count: number; minutes: number; first_seen?: string; last_seen?: string }) => {
|
|
1003
|
+
const timeSpan = a.first_seen && a.last_seen
|
|
1004
|
+
? `, ${a.first_seen.slice(11, 16)}–${a.last_seen.slice(11, 16)} UTC`
|
|
1005
|
+
: "";
|
|
1006
|
+
return ` ${a.name}: ${a.minutes} min (${a.frame_count} frames${timeSpan})`;
|
|
1007
|
+
}
|
|
998
1008
|
);
|
|
999
1009
|
|
|
1000
1010
|
// Format audio
|