@opentabs-dev/opentabs-plugin-netflix 0.0.74

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.
Files changed (93) hide show
  1. package/README.md +159 -0
  2. package/dist/adapter.iife.js +15328 -0
  3. package/dist/adapter.iife.js.map +7 -0
  4. package/dist/index.d.ts +14 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +56 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/netflix-api.d.ts +13 -0
  9. package/dist/netflix-api.d.ts.map +1 -0
  10. package/dist/netflix-api.js +59 -0
  11. package/dist/netflix-api.js.map +1 -0
  12. package/dist/tools/add-to-my-list.d.ts +7 -0
  13. package/dist/tools/add-to-my-list.d.ts.map +1 -0
  14. package/dist/tools/add-to-my-list.js +26 -0
  15. package/dist/tools/add-to-my-list.js.map +1 -0
  16. package/dist/tools/get-current-user.d.ts +15 -0
  17. package/dist/tools/get-current-user.d.ts.map +1 -0
  18. package/dist/tools/get-current-user.js +22 -0
  19. package/dist/tools/get-current-user.js.map +1 -0
  20. package/dist/tools/get-notifications.d.ts +12 -0
  21. package/dist/tools/get-notifications.d.ts.map +1 -0
  22. package/dist/tools/get-notifications.js +33 -0
  23. package/dist/tools/get-notifications.js.map +1 -0
  24. package/dist/tools/get-seasons.d.ts +23 -0
  25. package/dist/tools/get-seasons.d.ts.map +1 -0
  26. package/dist/tools/get-seasons.js +96 -0
  27. package/dist/tools/get-seasons.js.map +1 -0
  28. package/dist/tools/get-title-details.d.ts +27 -0
  29. package/dist/tools/get-title-details.d.ts.map +1 -0
  30. package/dist/tools/get-title-details.js +91 -0
  31. package/dist/tools/get-title-details.js.map +1 -0
  32. package/dist/tools/get-title.d.ts +22 -0
  33. package/dist/tools/get-title.d.ts.map +1 -0
  34. package/dist/tools/get-title.js +40 -0
  35. package/dist/tools/get-title.js.map +1 -0
  36. package/dist/tools/get-watch-history.d.ts +15 -0
  37. package/dist/tools/get-watch-history.d.ts.map +1 -0
  38. package/dist/tools/get-watch-history.js +57 -0
  39. package/dist/tools/get-watch-history.js.map +1 -0
  40. package/dist/tools/list-continue-watching.d.ts +22 -0
  41. package/dist/tools/list-continue-watching.d.ts.map +1 -0
  42. package/dist/tools/list-continue-watching.js +52 -0
  43. package/dist/tools/list-continue-watching.js.map +1 -0
  44. package/dist/tools/list-genre-titles.d.ts +23 -0
  45. package/dist/tools/list-genre-titles.d.ts.map +1 -0
  46. package/dist/tools/list-genre-titles.js +52 -0
  47. package/dist/tools/list-genre-titles.js.map +1 -0
  48. package/dist/tools/list-my-list.d.ts +22 -0
  49. package/dist/tools/list-my-list.d.ts.map +1 -0
  50. package/dist/tools/list-my-list.js +55 -0
  51. package/dist/tools/list-my-list.js.map +1 -0
  52. package/dist/tools/list-profiles.d.ts +11 -0
  53. package/dist/tools/list-profiles.d.ts.map +1 -0
  54. package/dist/tools/list-profiles.js +67 -0
  55. package/dist/tools/list-profiles.js.map +1 -0
  56. package/dist/tools/list-top-10.d.ts +27 -0
  57. package/dist/tools/list-top-10.d.ts.map +1 -0
  58. package/dist/tools/list-top-10.js +65 -0
  59. package/dist/tools/list-top-10.js.map +1 -0
  60. package/dist/tools/list-trending.d.ts +22 -0
  61. package/dist/tools/list-trending.d.ts.map +1 -0
  62. package/dist/tools/list-trending.js +51 -0
  63. package/dist/tools/list-trending.js.map +1 -0
  64. package/dist/tools/navigate-to-genre.d.ts +8 -0
  65. package/dist/tools/navigate-to-genre.d.ts.map +1 -0
  66. package/dist/tools/navigate-to-genre.js +23 -0
  67. package/dist/tools/navigate-to-genre.js.map +1 -0
  68. package/dist/tools/navigate-to-title.d.ts +8 -0
  69. package/dist/tools/navigate-to-title.d.ts.map +1 -0
  70. package/dist/tools/navigate-to-title.js +23 -0
  71. package/dist/tools/navigate-to-title.js.map +1 -0
  72. package/dist/tools/play-title.d.ts +8 -0
  73. package/dist/tools/play-title.d.ts.map +1 -0
  74. package/dist/tools/play-title.js +23 -0
  75. package/dist/tools/play-title.js.map +1 -0
  76. package/dist/tools/rate-title.d.ts +13 -0
  77. package/dist/tools/rate-title.d.ts.map +1 -0
  78. package/dist/tools/rate-title.js +36 -0
  79. package/dist/tools/rate-title.js.map +1 -0
  80. package/dist/tools/remove-from-my-list.d.ts +7 -0
  81. package/dist/tools/remove-from-my-list.d.ts.map +1 -0
  82. package/dist/tools/remove-from-my-list.js +26 -0
  83. package/dist/tools/remove-from-my-list.js.map +1 -0
  84. package/dist/tools/schemas.d.ts +185 -0
  85. package/dist/tools/schemas.d.ts.map +1 -0
  86. package/dist/tools/schemas.js +163 -0
  87. package/dist/tools/schemas.js.map +1 -0
  88. package/dist/tools/search-titles.d.ts +29 -0
  89. package/dist/tools/search-titles.d.ts.map +1 -0
  90. package/dist/tools/search-titles.js +75 -0
  91. package/dist/tools/search-titles.js.map +1 -0
  92. package/dist/tools.json +1648 -0
  93. package/package.json +54 -0
@@ -0,0 +1,1648 @@
1
+ {
2
+ "sdkVersion": "0.0.74",
3
+ "iconSvg": "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m5.398 0 8.348 23.602c2.346.059 4.856.398 4.856.398L10.113 0H5.398zm8.489 0v9.172l4.715 13.33V0h-4.715zM5.398 1.5V24c1.873-.225 2.81-.312 4.715-.398V14.83L5.398 1.5z\" fill=\"#E50914\"/></svg>",
4
+ "iconInactiveSvg": "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m5.398 0 8.348 23.602c2.346.059 4.856.398 4.856.398L10.113 0H5.398zm8.489 0v9.172l4.715 13.33V0h-4.715zM5.398 1.5V24c1.873-.225 2.81-.312 4.715-.398V14.83L5.398 1.5z\" fill=\"#999999\"/></svg>",
5
+ "iconDarkSvg": "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m5.398 0 8.348 23.602c2.346.059 4.856.398 4.856.398L10.113 0H5.398zm8.489 0v9.172l4.715 13.33V0h-4.715zM5.398 1.5V24c1.873-.225 2.81-.312 4.715-.398V14.83L5.398 1.5z\" fill=\"#E50914\"/></svg>",
6
+ "iconDarkInactiveSvg": "<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m5.398 0 8.348 23.602c2.346.059 4.856.398 4.856.398L10.113 0H5.398zm8.489 0v9.172l4.715 13.33V0h-4.715zM5.398 1.5V24c1.873-.225 2.81-.312 4.715-.398V14.83L5.398 1.5z\" fill=\"#999999\"/></svg>",
7
+ "tools": [
8
+ {
9
+ "name": "get_current_user",
10
+ "displayName": "Get Current User",
11
+ "description": "Get the currently logged-in Netflix user profile information including account name, membership status, country, maturity level, and playback permissions.",
12
+ "summary": "Get current Netflix user info",
13
+ "icon": "user",
14
+ "group": "Account",
15
+ "input_schema": {
16
+ "type": "object",
17
+ "properties": {},
18
+ "additionalProperties": false
19
+ },
20
+ "output_schema": {
21
+ "type": "object",
22
+ "properties": {
23
+ "user": {
24
+ "type": "object",
25
+ "properties": {
26
+ "guid": {
27
+ "type": "string",
28
+ "description": "User GUID"
29
+ },
30
+ "name": {
31
+ "type": "string",
32
+ "description": "Account owner name"
33
+ },
34
+ "email": {
35
+ "type": "string",
36
+ "description": "Account email (if available)"
37
+ },
38
+ "member_since": {
39
+ "type": "string",
40
+ "description": "Membership start date (e.g., \"January 2025\")"
41
+ },
42
+ "membership_status": {
43
+ "type": "string",
44
+ "description": "Membership status (e.g., CURRENT_MEMBER)"
45
+ },
46
+ "country": {
47
+ "type": "string",
48
+ "description": "Current country code"
49
+ },
50
+ "num_profiles": {
51
+ "type": "integer",
52
+ "minimum": -9007199254740991,
53
+ "maximum": 9007199254740991,
54
+ "description": "Total number of profiles on the account"
55
+ },
56
+ "maturity_level": {
57
+ "type": "integer",
58
+ "minimum": -9007199254740991,
59
+ "maximum": 9007199254740991,
60
+ "description": "Content maturity level for this profile"
61
+ },
62
+ "can_playback": {
63
+ "type": "boolean",
64
+ "description": "Whether playback is allowed"
65
+ }
66
+ },
67
+ "required": [
68
+ "guid",
69
+ "name",
70
+ "email",
71
+ "member_since",
72
+ "membership_status",
73
+ "country",
74
+ "num_profiles",
75
+ "maturity_level",
76
+ "can_playback"
77
+ ],
78
+ "additionalProperties": false
79
+ }
80
+ },
81
+ "required": [
82
+ "user"
83
+ ],
84
+ "additionalProperties": false
85
+ }
86
+ },
87
+ {
88
+ "name": "search_titles",
89
+ "displayName": "Search Titles",
90
+ "description": "Search Netflix for movies and TV shows by keyword. Returns matching titles with metadata including type, rating, synopsis, and watch status. Use this to find specific content on Netflix.",
91
+ "summary": "Search Netflix movies and shows",
92
+ "icon": "search",
93
+ "group": "Browse",
94
+ "input_schema": {
95
+ "type": "object",
96
+ "properties": {
97
+ "query": {
98
+ "type": "string",
99
+ "description": "Search query (e.g., \"Stranger Things\", \"action movies\")"
100
+ },
101
+ "limit": {
102
+ "description": "Max results to return (default 10, max 40)",
103
+ "type": "integer",
104
+ "minimum": 1,
105
+ "maximum": 40
106
+ }
107
+ },
108
+ "required": [
109
+ "query"
110
+ ],
111
+ "additionalProperties": false
112
+ },
113
+ "output_schema": {
114
+ "type": "object",
115
+ "properties": {
116
+ "titles": {
117
+ "type": "array",
118
+ "items": {
119
+ "type": "object",
120
+ "properties": {
121
+ "video_id": {
122
+ "type": "integer",
123
+ "minimum": -9007199254740991,
124
+ "maximum": 9007199254740991,
125
+ "description": "Netflix video ID"
126
+ },
127
+ "title": {
128
+ "type": "string",
129
+ "description": "Title name"
130
+ },
131
+ "type": {
132
+ "type": "string",
133
+ "description": "Content type: movie, show, or supplemental"
134
+ },
135
+ "year": {
136
+ "type": "integer",
137
+ "minimum": -9007199254740991,
138
+ "maximum": 9007199254740991,
139
+ "description": "Release year or latest year"
140
+ },
141
+ "is_original": {
142
+ "type": "boolean",
143
+ "description": "Whether this is a Netflix Original"
144
+ },
145
+ "maturity_rating": {
146
+ "type": "string",
147
+ "description": "Maturity rating (e.g., TV-MA, PG-13)"
148
+ },
149
+ "maturity_description": {
150
+ "type": "string",
151
+ "description": "Description of the maturity rating"
152
+ },
153
+ "synopsis": {
154
+ "type": "string",
155
+ "description": "Content synopsis or description"
156
+ },
157
+ "genres": {
158
+ "type": "string",
159
+ "description": "Comma-separated genre tags"
160
+ },
161
+ "watch_status": {
162
+ "type": "string",
163
+ "description": "Watch status: NOT_WATCHED, STARTED, or WATCHED"
164
+ },
165
+ "is_in_my_list": {
166
+ "type": "boolean",
167
+ "description": "Whether the title is in the user My List"
168
+ },
169
+ "runtime_minutes": {
170
+ "type": "number",
171
+ "description": "Runtime in minutes (for movies) or 0 for shows"
172
+ },
173
+ "num_seasons": {
174
+ "type": "string",
175
+ "description": "Number of seasons label (for shows) or empty"
176
+ },
177
+ "image_url": {
178
+ "type": "string",
179
+ "description": "Thumbnail image URL"
180
+ }
181
+ },
182
+ "required": [
183
+ "video_id",
184
+ "title",
185
+ "type",
186
+ "year",
187
+ "is_original",
188
+ "maturity_rating",
189
+ "maturity_description",
190
+ "synopsis",
191
+ "genres",
192
+ "watch_status",
193
+ "is_in_my_list",
194
+ "runtime_minutes",
195
+ "num_seasons",
196
+ "image_url"
197
+ ],
198
+ "additionalProperties": false
199
+ },
200
+ "description": "Matching titles"
201
+ }
202
+ },
203
+ "required": [
204
+ "titles"
205
+ ],
206
+ "additionalProperties": false
207
+ }
208
+ },
209
+ {
210
+ "name": "get_title",
211
+ "displayName": "Get Title",
212
+ "description": "Get detailed information about a Netflix movie or TV show by its video ID. Returns title metadata including synopsis, rating, watch status, and whether it is in My List. Use search_titles to find video IDs.",
213
+ "summary": "Get details for a movie or show",
214
+ "icon": "film",
215
+ "group": "Browse",
216
+ "input_schema": {
217
+ "type": "object",
218
+ "properties": {
219
+ "video_id": {
220
+ "type": "integer",
221
+ "minimum": -9007199254740991,
222
+ "maximum": 9007199254740991,
223
+ "description": "Netflix video ID"
224
+ }
225
+ },
226
+ "required": [
227
+ "video_id"
228
+ ],
229
+ "additionalProperties": false
230
+ },
231
+ "output_schema": {
232
+ "type": "object",
233
+ "properties": {
234
+ "title": {
235
+ "type": "object",
236
+ "properties": {
237
+ "video_id": {
238
+ "type": "integer",
239
+ "minimum": -9007199254740991,
240
+ "maximum": 9007199254740991,
241
+ "description": "Netflix video ID"
242
+ },
243
+ "title": {
244
+ "type": "string",
245
+ "description": "Title name"
246
+ },
247
+ "type": {
248
+ "type": "string",
249
+ "description": "Content type: movie, show, or supplemental"
250
+ },
251
+ "year": {
252
+ "type": "integer",
253
+ "minimum": -9007199254740991,
254
+ "maximum": 9007199254740991,
255
+ "description": "Release year or latest year"
256
+ },
257
+ "is_original": {
258
+ "type": "boolean",
259
+ "description": "Whether this is a Netflix Original"
260
+ },
261
+ "maturity_rating": {
262
+ "type": "string",
263
+ "description": "Maturity rating (e.g., TV-MA, PG-13)"
264
+ },
265
+ "maturity_description": {
266
+ "type": "string",
267
+ "description": "Description of the maturity rating"
268
+ },
269
+ "synopsis": {
270
+ "type": "string",
271
+ "description": "Content synopsis or description"
272
+ },
273
+ "genres": {
274
+ "type": "string",
275
+ "description": "Comma-separated genre tags"
276
+ },
277
+ "watch_status": {
278
+ "type": "string",
279
+ "description": "Watch status: NOT_WATCHED, STARTED, or WATCHED"
280
+ },
281
+ "is_in_my_list": {
282
+ "type": "boolean",
283
+ "description": "Whether the title is in the user My List"
284
+ },
285
+ "runtime_minutes": {
286
+ "type": "number",
287
+ "description": "Runtime in minutes (for movies) or 0 for shows"
288
+ },
289
+ "num_seasons": {
290
+ "type": "string",
291
+ "description": "Number of seasons label (for shows) or empty"
292
+ },
293
+ "image_url": {
294
+ "type": "string",
295
+ "description": "Thumbnail image URL"
296
+ }
297
+ },
298
+ "required": [
299
+ "video_id",
300
+ "title",
301
+ "type",
302
+ "year",
303
+ "is_original",
304
+ "maturity_rating",
305
+ "maturity_description",
306
+ "synopsis",
307
+ "genres",
308
+ "watch_status",
309
+ "is_in_my_list",
310
+ "runtime_minutes",
311
+ "num_seasons",
312
+ "image_url"
313
+ ],
314
+ "additionalProperties": false
315
+ }
316
+ },
317
+ "required": [
318
+ "title"
319
+ ],
320
+ "additionalProperties": false
321
+ }
322
+ },
323
+ {
324
+ "name": "get_title_details",
325
+ "displayName": "Get Title Details",
326
+ "description": "Get comprehensive details about a Netflix title including cast, creators, content advisory, quality badges, and user rating. More detailed than get_title — use this when you need cast/crew information or content advisories.",
327
+ "summary": "Get full details including cast and crew",
328
+ "icon": "info",
329
+ "group": "Browse",
330
+ "input_schema": {
331
+ "type": "object",
332
+ "properties": {
333
+ "video_id": {
334
+ "type": "integer",
335
+ "minimum": -9007199254740991,
336
+ "maximum": 9007199254740991,
337
+ "description": "Netflix video ID"
338
+ }
339
+ },
340
+ "required": [
341
+ "video_id"
342
+ ],
343
+ "additionalProperties": false
344
+ },
345
+ "output_schema": {
346
+ "type": "object",
347
+ "properties": {
348
+ "title": {
349
+ "type": "object",
350
+ "properties": {
351
+ "video_id": {
352
+ "type": "integer",
353
+ "minimum": -9007199254740991,
354
+ "maximum": 9007199254740991,
355
+ "description": "Netflix video ID"
356
+ },
357
+ "title": {
358
+ "type": "string",
359
+ "description": "Title name"
360
+ },
361
+ "type": {
362
+ "type": "string",
363
+ "description": "Content type: movie, show, or supplemental"
364
+ },
365
+ "year": {
366
+ "type": "integer",
367
+ "minimum": -9007199254740991,
368
+ "maximum": 9007199254740991,
369
+ "description": "Release year"
370
+ },
371
+ "synopsis": {
372
+ "type": "string",
373
+ "description": "Full synopsis"
374
+ },
375
+ "maturity_rating": {
376
+ "type": "string",
377
+ "description": "Content rating (e.g., TV-MA, PG-13)"
378
+ },
379
+ "maturity_description": {
380
+ "type": "string",
381
+ "description": "Description of the maturity rating"
382
+ },
383
+ "content_reasons": {
384
+ "type": "array",
385
+ "items": {
386
+ "type": "string"
387
+ },
388
+ "description": "Content advisory reasons (e.g., \"violence\", \"language\")"
389
+ },
390
+ "genres": {
391
+ "type": "string",
392
+ "description": "Genre tags"
393
+ },
394
+ "cast": {
395
+ "type": "array",
396
+ "items": {
397
+ "type": "string"
398
+ },
399
+ "description": "Cast member names"
400
+ },
401
+ "creators": {
402
+ "type": "array",
403
+ "items": {
404
+ "type": "string"
405
+ },
406
+ "description": "Creator/director names"
407
+ },
408
+ "is_original": {
409
+ "type": "boolean",
410
+ "description": "Whether this is a Netflix Original"
411
+ },
412
+ "playback_badges": {
413
+ "type": "array",
414
+ "items": {
415
+ "type": "string"
416
+ },
417
+ "description": "Quality badges (e.g., VIDEO_ULTRA_HD, AUDIO_FIVE_DOT_ONE)"
418
+ },
419
+ "watch_status": {
420
+ "type": "string",
421
+ "description": "Watch status"
422
+ },
423
+ "is_in_my_list": {
424
+ "type": "boolean",
425
+ "description": "Whether the title is in My List"
426
+ },
427
+ "thumb_rating": {
428
+ "type": "string",
429
+ "description": "User thumb rating (THUMBS_UP, THUMBS_DOWN, THUMBS_WAY_UP, or THUMBS_UNRATED)"
430
+ },
431
+ "runtime_minutes": {
432
+ "type": "number",
433
+ "description": "Runtime in minutes (for movies)"
434
+ },
435
+ "num_seasons": {
436
+ "type": "string",
437
+ "description": "Number of seasons (for shows)"
438
+ },
439
+ "image_url": {
440
+ "type": "string",
441
+ "description": "Title artwork URL"
442
+ }
443
+ },
444
+ "required": [
445
+ "video_id",
446
+ "title",
447
+ "type",
448
+ "year",
449
+ "synopsis",
450
+ "maturity_rating",
451
+ "maturity_description",
452
+ "content_reasons",
453
+ "genres",
454
+ "cast",
455
+ "creators",
456
+ "is_original",
457
+ "playback_badges",
458
+ "watch_status",
459
+ "is_in_my_list",
460
+ "thumb_rating",
461
+ "runtime_minutes",
462
+ "num_seasons",
463
+ "image_url"
464
+ ],
465
+ "additionalProperties": false
466
+ }
467
+ },
468
+ "required": [
469
+ "title"
470
+ ],
471
+ "additionalProperties": false
472
+ }
473
+ },
474
+ {
475
+ "name": "get_seasons",
476
+ "displayName": "Get Seasons",
477
+ "description": "Get the season and episode list for a Netflix TV show. Returns all seasons with their episodes, including episode titles, runtimes, and watch progress. Only works for TV shows (not movies).",
478
+ "summary": "Get seasons and episodes for a show",
479
+ "icon": "list-video",
480
+ "group": "Browse",
481
+ "input_schema": {
482
+ "type": "object",
483
+ "properties": {
484
+ "video_id": {
485
+ "type": "integer",
486
+ "minimum": -9007199254740991,
487
+ "maximum": 9007199254740991,
488
+ "description": "Netflix video ID of the TV show"
489
+ }
490
+ },
491
+ "required": [
492
+ "video_id"
493
+ ],
494
+ "additionalProperties": false
495
+ },
496
+ "output_schema": {
497
+ "type": "object",
498
+ "properties": {
499
+ "seasons": {
500
+ "type": "array",
501
+ "items": {
502
+ "type": "object",
503
+ "properties": {
504
+ "video_id": {
505
+ "type": "integer",
506
+ "minimum": -9007199254740991,
507
+ "maximum": 9007199254740991,
508
+ "description": "Season video ID"
509
+ },
510
+ "season_number": {
511
+ "type": "integer",
512
+ "minimum": -9007199254740991,
513
+ "maximum": 9007199254740991,
514
+ "description": "Season number"
515
+ },
516
+ "title": {
517
+ "type": "string",
518
+ "description": "Season title (e.g., \"Season 1\")"
519
+ },
520
+ "episode_count": {
521
+ "type": "integer",
522
+ "minimum": -9007199254740991,
523
+ "maximum": 9007199254740991,
524
+ "description": "Number of episodes in the season"
525
+ },
526
+ "episodes": {
527
+ "type": "array",
528
+ "items": {
529
+ "type": "object",
530
+ "properties": {
531
+ "video_id": {
532
+ "type": "integer",
533
+ "minimum": -9007199254740991,
534
+ "maximum": 9007199254740991,
535
+ "description": "Episode video ID"
536
+ },
537
+ "title": {
538
+ "type": "string",
539
+ "description": "Episode title"
540
+ },
541
+ "episode_number": {
542
+ "type": "integer",
543
+ "minimum": -9007199254740991,
544
+ "maximum": 9007199254740991,
545
+ "description": "Episode number within the season"
546
+ },
547
+ "season_number": {
548
+ "type": "integer",
549
+ "minimum": -9007199254740991,
550
+ "maximum": 9007199254740991,
551
+ "description": "Season number"
552
+ },
553
+ "synopsis": {
554
+ "type": "string",
555
+ "description": "Episode synopsis"
556
+ },
557
+ "runtime_minutes": {
558
+ "type": "number",
559
+ "description": "Runtime in minutes"
560
+ },
561
+ "watch_status": {
562
+ "type": "string",
563
+ "description": "Watch status: NOT_WATCHED, STARTED, or WATCHED"
564
+ },
565
+ "bookmark_position_seconds": {
566
+ "type": "number",
567
+ "description": "Bookmark position in seconds (0 if not started)"
568
+ },
569
+ "image_url": {
570
+ "type": "string",
571
+ "description": "Episode thumbnail URL"
572
+ }
573
+ },
574
+ "required": [
575
+ "video_id",
576
+ "title",
577
+ "episode_number",
578
+ "season_number",
579
+ "synopsis",
580
+ "runtime_minutes",
581
+ "watch_status",
582
+ "bookmark_position_seconds",
583
+ "image_url"
584
+ ],
585
+ "additionalProperties": false
586
+ },
587
+ "description": "Episodes in this season"
588
+ }
589
+ },
590
+ "required": [
591
+ "video_id",
592
+ "season_number",
593
+ "title",
594
+ "episode_count",
595
+ "episodes"
596
+ ],
597
+ "additionalProperties": false
598
+ }
599
+ }
600
+ },
601
+ "required": [
602
+ "seasons"
603
+ ],
604
+ "additionalProperties": false
605
+ }
606
+ },
607
+ {
608
+ "name": "list_my_list",
609
+ "displayName": "List My List",
610
+ "description": "Get all titles in the current Netflix profile's \"My List\" (saved titles). Returns movies and shows the user has added to their list.",
611
+ "summary": "Get titles in My List",
612
+ "icon": "bookmark",
613
+ "group": "Library",
614
+ "input_schema": {
615
+ "type": "object",
616
+ "properties": {
617
+ "limit": {
618
+ "description": "Max results to return (default 40, max 75)",
619
+ "type": "integer",
620
+ "minimum": 1,
621
+ "maximum": 75
622
+ }
623
+ },
624
+ "additionalProperties": false
625
+ },
626
+ "output_schema": {
627
+ "type": "object",
628
+ "properties": {
629
+ "titles": {
630
+ "type": "array",
631
+ "items": {
632
+ "type": "object",
633
+ "properties": {
634
+ "video_id": {
635
+ "type": "integer",
636
+ "minimum": -9007199254740991,
637
+ "maximum": 9007199254740991,
638
+ "description": "Netflix video ID"
639
+ },
640
+ "title": {
641
+ "type": "string",
642
+ "description": "Title name"
643
+ },
644
+ "type": {
645
+ "type": "string",
646
+ "description": "Content type: movie, show, or supplemental"
647
+ },
648
+ "year": {
649
+ "type": "integer",
650
+ "minimum": -9007199254740991,
651
+ "maximum": 9007199254740991,
652
+ "description": "Release year or latest year"
653
+ },
654
+ "is_original": {
655
+ "type": "boolean",
656
+ "description": "Whether this is a Netflix Original"
657
+ },
658
+ "maturity_rating": {
659
+ "type": "string",
660
+ "description": "Maturity rating (e.g., TV-MA, PG-13)"
661
+ },
662
+ "maturity_description": {
663
+ "type": "string",
664
+ "description": "Description of the maturity rating"
665
+ },
666
+ "synopsis": {
667
+ "type": "string",
668
+ "description": "Content synopsis or description"
669
+ },
670
+ "genres": {
671
+ "type": "string",
672
+ "description": "Comma-separated genre tags"
673
+ },
674
+ "watch_status": {
675
+ "type": "string",
676
+ "description": "Watch status: NOT_WATCHED, STARTED, or WATCHED"
677
+ },
678
+ "is_in_my_list": {
679
+ "type": "boolean",
680
+ "description": "Whether the title is in the user My List"
681
+ },
682
+ "runtime_minutes": {
683
+ "type": "number",
684
+ "description": "Runtime in minutes (for movies) or 0 for shows"
685
+ },
686
+ "num_seasons": {
687
+ "type": "string",
688
+ "description": "Number of seasons label (for shows) or empty"
689
+ },
690
+ "image_url": {
691
+ "type": "string",
692
+ "description": "Thumbnail image URL"
693
+ }
694
+ },
695
+ "required": [
696
+ "video_id",
697
+ "title",
698
+ "type",
699
+ "year",
700
+ "is_original",
701
+ "maturity_rating",
702
+ "maturity_description",
703
+ "synopsis",
704
+ "genres",
705
+ "watch_status",
706
+ "is_in_my_list",
707
+ "runtime_minutes",
708
+ "num_seasons",
709
+ "image_url"
710
+ ],
711
+ "additionalProperties": false
712
+ },
713
+ "description": "Titles in My List"
714
+ }
715
+ },
716
+ "required": [
717
+ "titles"
718
+ ],
719
+ "additionalProperties": false
720
+ }
721
+ },
722
+ {
723
+ "name": "add_to_my_list",
724
+ "displayName": "Add to My List",
725
+ "description": "Add a movie or TV show to the current Netflix profile's \"My List\". Use search_titles or get_title to find the video ID first.",
726
+ "summary": "Save a title to My List",
727
+ "icon": "bookmark-plus",
728
+ "group": "Library",
729
+ "input_schema": {
730
+ "type": "object",
731
+ "properties": {
732
+ "video_id": {
733
+ "type": "integer",
734
+ "minimum": -9007199254740991,
735
+ "maximum": 9007199254740991,
736
+ "description": "Netflix video ID to add"
737
+ }
738
+ },
739
+ "required": [
740
+ "video_id"
741
+ ],
742
+ "additionalProperties": false
743
+ },
744
+ "output_schema": {
745
+ "type": "object",
746
+ "properties": {
747
+ "success": {
748
+ "type": "boolean",
749
+ "description": "Whether the operation succeeded"
750
+ }
751
+ },
752
+ "required": [
753
+ "success"
754
+ ],
755
+ "additionalProperties": false
756
+ }
757
+ },
758
+ {
759
+ "name": "remove_from_my_list",
760
+ "displayName": "Remove from My List",
761
+ "description": "Remove a movie or TV show from the current Netflix profile's \"My List\". Use list_my_list to see what is currently in the list.",
762
+ "summary": "Remove a title from My List",
763
+ "icon": "bookmark-minus",
764
+ "group": "Library",
765
+ "input_schema": {
766
+ "type": "object",
767
+ "properties": {
768
+ "video_id": {
769
+ "type": "integer",
770
+ "minimum": -9007199254740991,
771
+ "maximum": 9007199254740991,
772
+ "description": "Netflix video ID to remove"
773
+ }
774
+ },
775
+ "required": [
776
+ "video_id"
777
+ ],
778
+ "additionalProperties": false
779
+ },
780
+ "output_schema": {
781
+ "type": "object",
782
+ "properties": {
783
+ "success": {
784
+ "type": "boolean",
785
+ "description": "Whether the operation succeeded"
786
+ }
787
+ },
788
+ "required": [
789
+ "success"
790
+ ],
791
+ "additionalProperties": false
792
+ }
793
+ },
794
+ {
795
+ "name": "list_continue_watching",
796
+ "displayName": "List Continue Watching",
797
+ "description": "Get titles the user has started but not finished watching. Returns movies and shows with their bookmark positions. Useful for resuming playback or seeing what the user was recently watching.",
798
+ "summary": "Get in-progress titles",
799
+ "icon": "play-circle",
800
+ "group": "Library",
801
+ "input_schema": {
802
+ "type": "object",
803
+ "properties": {
804
+ "limit": {
805
+ "description": "Max results to return (default 20, max 40)",
806
+ "type": "integer",
807
+ "minimum": 1,
808
+ "maximum": 40
809
+ }
810
+ },
811
+ "additionalProperties": false
812
+ },
813
+ "output_schema": {
814
+ "type": "object",
815
+ "properties": {
816
+ "titles": {
817
+ "type": "array",
818
+ "items": {
819
+ "type": "object",
820
+ "properties": {
821
+ "video_id": {
822
+ "type": "integer",
823
+ "minimum": -9007199254740991,
824
+ "maximum": 9007199254740991,
825
+ "description": "Netflix video ID"
826
+ },
827
+ "title": {
828
+ "type": "string",
829
+ "description": "Title name"
830
+ },
831
+ "type": {
832
+ "type": "string",
833
+ "description": "Content type: movie, show, or supplemental"
834
+ },
835
+ "year": {
836
+ "type": "integer",
837
+ "minimum": -9007199254740991,
838
+ "maximum": 9007199254740991,
839
+ "description": "Release year or latest year"
840
+ },
841
+ "is_original": {
842
+ "type": "boolean",
843
+ "description": "Whether this is a Netflix Original"
844
+ },
845
+ "maturity_rating": {
846
+ "type": "string",
847
+ "description": "Maturity rating (e.g., TV-MA, PG-13)"
848
+ },
849
+ "maturity_description": {
850
+ "type": "string",
851
+ "description": "Description of the maturity rating"
852
+ },
853
+ "synopsis": {
854
+ "type": "string",
855
+ "description": "Content synopsis or description"
856
+ },
857
+ "genres": {
858
+ "type": "string",
859
+ "description": "Comma-separated genre tags"
860
+ },
861
+ "watch_status": {
862
+ "type": "string",
863
+ "description": "Watch status: NOT_WATCHED, STARTED, or WATCHED"
864
+ },
865
+ "is_in_my_list": {
866
+ "type": "boolean",
867
+ "description": "Whether the title is in the user My List"
868
+ },
869
+ "runtime_minutes": {
870
+ "type": "number",
871
+ "description": "Runtime in minutes (for movies) or 0 for shows"
872
+ },
873
+ "num_seasons": {
874
+ "type": "string",
875
+ "description": "Number of seasons label (for shows) or empty"
876
+ },
877
+ "image_url": {
878
+ "type": "string",
879
+ "description": "Thumbnail image URL"
880
+ }
881
+ },
882
+ "required": [
883
+ "video_id",
884
+ "title",
885
+ "type",
886
+ "year",
887
+ "is_original",
888
+ "maturity_rating",
889
+ "maturity_description",
890
+ "synopsis",
891
+ "genres",
892
+ "watch_status",
893
+ "is_in_my_list",
894
+ "runtime_minutes",
895
+ "num_seasons",
896
+ "image_url"
897
+ ],
898
+ "additionalProperties": false
899
+ },
900
+ "description": "Continue watching titles"
901
+ }
902
+ },
903
+ "required": [
904
+ "titles"
905
+ ],
906
+ "additionalProperties": false
907
+ }
908
+ },
909
+ {
910
+ "name": "get_watch_history",
911
+ "displayName": "Get Watch History",
912
+ "description": "Get the recent viewing history for the current Netflix profile. Returns titles the user has watched or started watching, with watch progress information.",
913
+ "summary": "Get recent viewing history",
914
+ "icon": "history",
915
+ "group": "Library",
916
+ "input_schema": {
917
+ "type": "object",
918
+ "properties": {
919
+ "limit": {
920
+ "description": "Max results to return (default 20, max 50)",
921
+ "type": "integer",
922
+ "minimum": 1,
923
+ "maximum": 50
924
+ }
925
+ },
926
+ "additionalProperties": false
927
+ },
928
+ "output_schema": {
929
+ "type": "object",
930
+ "properties": {
931
+ "entries": {
932
+ "type": "array",
933
+ "items": {
934
+ "type": "object",
935
+ "properties": {
936
+ "video_id": {
937
+ "type": "integer",
938
+ "minimum": -9007199254740991,
939
+ "maximum": 9007199254740991,
940
+ "description": "Netflix video ID"
941
+ },
942
+ "title": {
943
+ "type": "string",
944
+ "description": "Title name"
945
+ },
946
+ "type": {
947
+ "type": "string",
948
+ "description": "Content type: movie or show"
949
+ },
950
+ "watch_status": {
951
+ "type": "string",
952
+ "description": "Watch status: STARTED or WATCHED"
953
+ },
954
+ "bookmark_position_seconds": {
955
+ "type": "number",
956
+ "description": "Bookmark position in seconds"
957
+ },
958
+ "runtime_seconds": {
959
+ "type": "number",
960
+ "description": "Total runtime in seconds"
961
+ },
962
+ "last_watched": {
963
+ "type": "string",
964
+ "description": "ISO 8601 timestamp of last watch (if available)"
965
+ }
966
+ },
967
+ "required": [
968
+ "video_id",
969
+ "title",
970
+ "type",
971
+ "watch_status",
972
+ "bookmark_position_seconds",
973
+ "runtime_seconds",
974
+ "last_watched"
975
+ ],
976
+ "additionalProperties": false
977
+ },
978
+ "description": "Watch history entries"
979
+ }
980
+ },
981
+ "required": [
982
+ "entries"
983
+ ],
984
+ "additionalProperties": false
985
+ }
986
+ },
987
+ {
988
+ "name": "list_trending",
989
+ "displayName": "List Trending",
990
+ "description": "Get currently trending titles on Netflix. Returns popular movies and shows that are trending in the user's region. This reads the \"Trending Now\" row from the Netflix homepage.",
991
+ "summary": "Get trending titles on Netflix",
992
+ "icon": "trending-up",
993
+ "group": "Browse",
994
+ "input_schema": {
995
+ "type": "object",
996
+ "properties": {
997
+ "limit": {
998
+ "description": "Max results to return (default 20, max 40)",
999
+ "type": "integer",
1000
+ "minimum": 1,
1001
+ "maximum": 40
1002
+ }
1003
+ },
1004
+ "additionalProperties": false
1005
+ },
1006
+ "output_schema": {
1007
+ "type": "object",
1008
+ "properties": {
1009
+ "titles": {
1010
+ "type": "array",
1011
+ "items": {
1012
+ "type": "object",
1013
+ "properties": {
1014
+ "video_id": {
1015
+ "type": "integer",
1016
+ "minimum": -9007199254740991,
1017
+ "maximum": 9007199254740991,
1018
+ "description": "Netflix video ID"
1019
+ },
1020
+ "title": {
1021
+ "type": "string",
1022
+ "description": "Title name"
1023
+ },
1024
+ "type": {
1025
+ "type": "string",
1026
+ "description": "Content type: movie, show, or supplemental"
1027
+ },
1028
+ "year": {
1029
+ "type": "integer",
1030
+ "minimum": -9007199254740991,
1031
+ "maximum": 9007199254740991,
1032
+ "description": "Release year or latest year"
1033
+ },
1034
+ "is_original": {
1035
+ "type": "boolean",
1036
+ "description": "Whether this is a Netflix Original"
1037
+ },
1038
+ "maturity_rating": {
1039
+ "type": "string",
1040
+ "description": "Maturity rating (e.g., TV-MA, PG-13)"
1041
+ },
1042
+ "maturity_description": {
1043
+ "type": "string",
1044
+ "description": "Description of the maturity rating"
1045
+ },
1046
+ "synopsis": {
1047
+ "type": "string",
1048
+ "description": "Content synopsis or description"
1049
+ },
1050
+ "genres": {
1051
+ "type": "string",
1052
+ "description": "Comma-separated genre tags"
1053
+ },
1054
+ "watch_status": {
1055
+ "type": "string",
1056
+ "description": "Watch status: NOT_WATCHED, STARTED, or WATCHED"
1057
+ },
1058
+ "is_in_my_list": {
1059
+ "type": "boolean",
1060
+ "description": "Whether the title is in the user My List"
1061
+ },
1062
+ "runtime_minutes": {
1063
+ "type": "number",
1064
+ "description": "Runtime in minutes (for movies) or 0 for shows"
1065
+ },
1066
+ "num_seasons": {
1067
+ "type": "string",
1068
+ "description": "Number of seasons label (for shows) or empty"
1069
+ },
1070
+ "image_url": {
1071
+ "type": "string",
1072
+ "description": "Thumbnail image URL"
1073
+ }
1074
+ },
1075
+ "required": [
1076
+ "video_id",
1077
+ "title",
1078
+ "type",
1079
+ "year",
1080
+ "is_original",
1081
+ "maturity_rating",
1082
+ "maturity_description",
1083
+ "synopsis",
1084
+ "genres",
1085
+ "watch_status",
1086
+ "is_in_my_list",
1087
+ "runtime_minutes",
1088
+ "num_seasons",
1089
+ "image_url"
1090
+ ],
1091
+ "additionalProperties": false
1092
+ },
1093
+ "description": "Trending titles"
1094
+ }
1095
+ },
1096
+ "required": [
1097
+ "titles"
1098
+ ],
1099
+ "additionalProperties": false
1100
+ }
1101
+ },
1102
+ {
1103
+ "name": "list_top_10",
1104
+ "displayName": "List Top 10",
1105
+ "description": "Get the Netflix Top 10 list for the user's region. Returns the most-watched titles currently ranking on Netflix. Optionally filter by \"tv\" or \"movie\".",
1106
+ "summary": "Get Netflix Top 10 titles",
1107
+ "icon": "trophy",
1108
+ "group": "Browse",
1109
+ "input_schema": {
1110
+ "type": "object",
1111
+ "properties": {
1112
+ "type": {
1113
+ "description": "Filter by content type: \"all\" (default), \"tv\", or \"movie\"",
1114
+ "type": "string",
1115
+ "enum": [
1116
+ "all",
1117
+ "tv",
1118
+ "movie"
1119
+ ]
1120
+ }
1121
+ },
1122
+ "additionalProperties": false
1123
+ },
1124
+ "output_schema": {
1125
+ "type": "object",
1126
+ "properties": {
1127
+ "titles": {
1128
+ "type": "array",
1129
+ "items": {
1130
+ "type": "object",
1131
+ "properties": {
1132
+ "video_id": {
1133
+ "type": "integer",
1134
+ "minimum": -9007199254740991,
1135
+ "maximum": 9007199254740991,
1136
+ "description": "Netflix video ID"
1137
+ },
1138
+ "title": {
1139
+ "type": "string",
1140
+ "description": "Title name"
1141
+ },
1142
+ "type": {
1143
+ "type": "string",
1144
+ "description": "Content type: movie, show, or supplemental"
1145
+ },
1146
+ "year": {
1147
+ "type": "integer",
1148
+ "minimum": -9007199254740991,
1149
+ "maximum": 9007199254740991,
1150
+ "description": "Release year or latest year"
1151
+ },
1152
+ "is_original": {
1153
+ "type": "boolean",
1154
+ "description": "Whether this is a Netflix Original"
1155
+ },
1156
+ "maturity_rating": {
1157
+ "type": "string",
1158
+ "description": "Maturity rating (e.g., TV-MA, PG-13)"
1159
+ },
1160
+ "maturity_description": {
1161
+ "type": "string",
1162
+ "description": "Description of the maturity rating"
1163
+ },
1164
+ "synopsis": {
1165
+ "type": "string",
1166
+ "description": "Content synopsis or description"
1167
+ },
1168
+ "genres": {
1169
+ "type": "string",
1170
+ "description": "Comma-separated genre tags"
1171
+ },
1172
+ "watch_status": {
1173
+ "type": "string",
1174
+ "description": "Watch status: NOT_WATCHED, STARTED, or WATCHED"
1175
+ },
1176
+ "is_in_my_list": {
1177
+ "type": "boolean",
1178
+ "description": "Whether the title is in the user My List"
1179
+ },
1180
+ "runtime_minutes": {
1181
+ "type": "number",
1182
+ "description": "Runtime in minutes (for movies) or 0 for shows"
1183
+ },
1184
+ "num_seasons": {
1185
+ "type": "string",
1186
+ "description": "Number of seasons label (for shows) or empty"
1187
+ },
1188
+ "image_url": {
1189
+ "type": "string",
1190
+ "description": "Thumbnail image URL"
1191
+ },
1192
+ "rank": {
1193
+ "type": "integer",
1194
+ "minimum": -9007199254740991,
1195
+ "maximum": 9007199254740991,
1196
+ "description": "Current rank (1-10)"
1197
+ }
1198
+ },
1199
+ "required": [
1200
+ "video_id",
1201
+ "title",
1202
+ "type",
1203
+ "year",
1204
+ "is_original",
1205
+ "maturity_rating",
1206
+ "maturity_description",
1207
+ "synopsis",
1208
+ "genres",
1209
+ "watch_status",
1210
+ "is_in_my_list",
1211
+ "runtime_minutes",
1212
+ "num_seasons",
1213
+ "image_url",
1214
+ "rank"
1215
+ ],
1216
+ "additionalProperties": false
1217
+ }
1218
+ }
1219
+ },
1220
+ "required": [
1221
+ "titles"
1222
+ ],
1223
+ "additionalProperties": false
1224
+ }
1225
+ },
1226
+ {
1227
+ "name": "list_genre_titles",
1228
+ "displayName": "List Genre Titles",
1229
+ "description": "Browse Netflix titles by genre ID. Common genre IDs: 83 (TV Shows), 34399 (Movies), 1365 (Action), 5763 (Drama), 6548 (Comedy), 8933 (Thriller), 7424 (Anime), 2243108 (Korean TV), 26065 (Sci-Fi), 8711 (Horror), 10118 (Comic & Superhero), 13335 (Reality TV), 11559 (Stand-Up Comedy), 6839 (Documentaries). Navigate to netflix.com/browse/genre/<id> to discover more genre IDs.",
1230
+ "summary": "Browse titles in a genre category",
1231
+ "icon": "layout-grid",
1232
+ "group": "Browse",
1233
+ "input_schema": {
1234
+ "type": "object",
1235
+ "properties": {
1236
+ "genre_id": {
1237
+ "type": "integer",
1238
+ "minimum": -9007199254740991,
1239
+ "maximum": 9007199254740991,
1240
+ "description": "Netflix genre ID (e.g., 1365 for Action, 6548 for Comedy)"
1241
+ },
1242
+ "limit": {
1243
+ "description": "Max results to return (default 20, max 40)",
1244
+ "type": "integer",
1245
+ "minimum": 1,
1246
+ "maximum": 40
1247
+ }
1248
+ },
1249
+ "required": [
1250
+ "genre_id"
1251
+ ],
1252
+ "additionalProperties": false
1253
+ },
1254
+ "output_schema": {
1255
+ "type": "object",
1256
+ "properties": {
1257
+ "titles": {
1258
+ "type": "array",
1259
+ "items": {
1260
+ "type": "object",
1261
+ "properties": {
1262
+ "video_id": {
1263
+ "type": "integer",
1264
+ "minimum": -9007199254740991,
1265
+ "maximum": 9007199254740991,
1266
+ "description": "Netflix video ID"
1267
+ },
1268
+ "title": {
1269
+ "type": "string",
1270
+ "description": "Title name"
1271
+ },
1272
+ "type": {
1273
+ "type": "string",
1274
+ "description": "Content type: movie, show, or supplemental"
1275
+ },
1276
+ "year": {
1277
+ "type": "integer",
1278
+ "minimum": -9007199254740991,
1279
+ "maximum": 9007199254740991,
1280
+ "description": "Release year or latest year"
1281
+ },
1282
+ "is_original": {
1283
+ "type": "boolean",
1284
+ "description": "Whether this is a Netflix Original"
1285
+ },
1286
+ "maturity_rating": {
1287
+ "type": "string",
1288
+ "description": "Maturity rating (e.g., TV-MA, PG-13)"
1289
+ },
1290
+ "maturity_description": {
1291
+ "type": "string",
1292
+ "description": "Description of the maturity rating"
1293
+ },
1294
+ "synopsis": {
1295
+ "type": "string",
1296
+ "description": "Content synopsis or description"
1297
+ },
1298
+ "genres": {
1299
+ "type": "string",
1300
+ "description": "Comma-separated genre tags"
1301
+ },
1302
+ "watch_status": {
1303
+ "type": "string",
1304
+ "description": "Watch status: NOT_WATCHED, STARTED, or WATCHED"
1305
+ },
1306
+ "is_in_my_list": {
1307
+ "type": "boolean",
1308
+ "description": "Whether the title is in the user My List"
1309
+ },
1310
+ "runtime_minutes": {
1311
+ "type": "number",
1312
+ "description": "Runtime in minutes (for movies) or 0 for shows"
1313
+ },
1314
+ "num_seasons": {
1315
+ "type": "string",
1316
+ "description": "Number of seasons label (for shows) or empty"
1317
+ },
1318
+ "image_url": {
1319
+ "type": "string",
1320
+ "description": "Thumbnail image URL"
1321
+ }
1322
+ },
1323
+ "required": [
1324
+ "video_id",
1325
+ "title",
1326
+ "type",
1327
+ "year",
1328
+ "is_original",
1329
+ "maturity_rating",
1330
+ "maturity_description",
1331
+ "synopsis",
1332
+ "genres",
1333
+ "watch_status",
1334
+ "is_in_my_list",
1335
+ "runtime_minutes",
1336
+ "num_seasons",
1337
+ "image_url"
1338
+ ],
1339
+ "additionalProperties": false
1340
+ },
1341
+ "description": "Titles in the genre"
1342
+ }
1343
+ },
1344
+ "required": [
1345
+ "titles"
1346
+ ],
1347
+ "additionalProperties": false
1348
+ }
1349
+ },
1350
+ {
1351
+ "name": "rate_title",
1352
+ "displayName": "Rate Title",
1353
+ "description": "Rate a Netflix movie or TV show using the thumbs rating system. Netflix uses three rating levels: thumbs up, thumbs way up (love it), and thumbs down. Pass \"THUMBS_UP\", \"THUMBS_WAY_UP\", \"THUMBS_DOWN\", or \"THUMBS_UNRATED\" to clear a rating.",
1354
+ "summary": "Rate a movie or show",
1355
+ "icon": "thumbs-up",
1356
+ "group": "Library",
1357
+ "input_schema": {
1358
+ "type": "object",
1359
+ "properties": {
1360
+ "video_id": {
1361
+ "type": "integer",
1362
+ "minimum": -9007199254740991,
1363
+ "maximum": 9007199254740991,
1364
+ "description": "Netflix video ID to rate"
1365
+ },
1366
+ "rating": {
1367
+ "type": "string",
1368
+ "enum": [
1369
+ "THUMBS_UP",
1370
+ "THUMBS_WAY_UP",
1371
+ "THUMBS_DOWN",
1372
+ "THUMBS_UNRATED"
1373
+ ],
1374
+ "description": "Rating: THUMBS_UP, THUMBS_WAY_UP, THUMBS_DOWN, or THUMBS_UNRATED to clear"
1375
+ }
1376
+ },
1377
+ "required": [
1378
+ "video_id",
1379
+ "rating"
1380
+ ],
1381
+ "additionalProperties": false
1382
+ },
1383
+ "output_schema": {
1384
+ "type": "object",
1385
+ "properties": {
1386
+ "success": {
1387
+ "type": "boolean",
1388
+ "description": "Whether the operation succeeded"
1389
+ }
1390
+ },
1391
+ "required": [
1392
+ "success"
1393
+ ],
1394
+ "additionalProperties": false
1395
+ }
1396
+ },
1397
+ {
1398
+ "name": "list_profiles",
1399
+ "displayName": "List Profiles",
1400
+ "description": "List all profiles on the Netflix account. Returns each profile with its name, avatar, and whether it is the currently active profile.",
1401
+ "summary": "List all Netflix profiles",
1402
+ "icon": "users",
1403
+ "group": "Account",
1404
+ "input_schema": {
1405
+ "type": "object",
1406
+ "properties": {},
1407
+ "additionalProperties": false
1408
+ },
1409
+ "output_schema": {
1410
+ "type": "object",
1411
+ "properties": {
1412
+ "profiles": {
1413
+ "type": "array",
1414
+ "items": {
1415
+ "type": "object",
1416
+ "properties": {
1417
+ "guid": {
1418
+ "type": "string",
1419
+ "description": "Profile GUID"
1420
+ },
1421
+ "name": {
1422
+ "type": "string",
1423
+ "description": "Profile display name"
1424
+ },
1425
+ "is_kids": {
1426
+ "type": "boolean",
1427
+ "description": "Whether this is a kids profile"
1428
+ },
1429
+ "avatar_url": {
1430
+ "type": "string",
1431
+ "description": "Avatar image URL"
1432
+ },
1433
+ "is_active": {
1434
+ "type": "boolean",
1435
+ "description": "Whether this is the currently active profile"
1436
+ }
1437
+ },
1438
+ "required": [
1439
+ "guid",
1440
+ "name",
1441
+ "is_kids",
1442
+ "avatar_url",
1443
+ "is_active"
1444
+ ],
1445
+ "additionalProperties": false
1446
+ },
1447
+ "description": "Netflix profiles"
1448
+ }
1449
+ },
1450
+ "required": [
1451
+ "profiles"
1452
+ ],
1453
+ "additionalProperties": false
1454
+ }
1455
+ },
1456
+ {
1457
+ "name": "get_notifications",
1458
+ "displayName": "Get Notifications",
1459
+ "description": "Get the Netflix notification list for the current profile. Returns new release notifications, recommendations, and other alerts. Also returns the unread count.",
1460
+ "summary": "Get Netflix notifications",
1461
+ "icon": "bell",
1462
+ "group": "Account",
1463
+ "input_schema": {
1464
+ "type": "object",
1465
+ "properties": {},
1466
+ "additionalProperties": false
1467
+ },
1468
+ "output_schema": {
1469
+ "type": "object",
1470
+ "properties": {
1471
+ "notifications": {
1472
+ "type": "array",
1473
+ "items": {
1474
+ "type": "object",
1475
+ "properties": {
1476
+ "type": {
1477
+ "type": "string",
1478
+ "description": "Notification type"
1479
+ },
1480
+ "title": {
1481
+ "type": "string",
1482
+ "description": "Notification title text"
1483
+ },
1484
+ "message": {
1485
+ "type": "string",
1486
+ "description": "Notification message body"
1487
+ },
1488
+ "image_url": {
1489
+ "type": "string",
1490
+ "description": "Notification image URL"
1491
+ },
1492
+ "video_id": {
1493
+ "type": "integer",
1494
+ "minimum": -9007199254740991,
1495
+ "maximum": 9007199254740991,
1496
+ "description": "Related video ID (0 if none)"
1497
+ }
1498
+ },
1499
+ "required": [
1500
+ "type",
1501
+ "title",
1502
+ "message",
1503
+ "image_url",
1504
+ "video_id"
1505
+ ],
1506
+ "additionalProperties": false
1507
+ },
1508
+ "description": "Notification entries"
1509
+ },
1510
+ "unread_count": {
1511
+ "type": "integer",
1512
+ "minimum": -9007199254740991,
1513
+ "maximum": 9007199254740991,
1514
+ "description": "Number of unread notifications"
1515
+ }
1516
+ },
1517
+ "required": [
1518
+ "notifications",
1519
+ "unread_count"
1520
+ ],
1521
+ "additionalProperties": false
1522
+ }
1523
+ },
1524
+ {
1525
+ "name": "navigate_to_title",
1526
+ "displayName": "Navigate to Title",
1527
+ "description": "Navigate the browser to a Netflix title page. This opens the detail view for a movie or TV show where the user can see more info or start playback. Use search_titles or get_title to find the video ID first.",
1528
+ "summary": "Open a title page in the browser",
1529
+ "icon": "external-link",
1530
+ "group": "Browse",
1531
+ "input_schema": {
1532
+ "type": "object",
1533
+ "properties": {
1534
+ "video_id": {
1535
+ "type": "integer",
1536
+ "minimum": -9007199254740991,
1537
+ "maximum": 9007199254740991,
1538
+ "description": "Netflix video ID to navigate to"
1539
+ }
1540
+ },
1541
+ "required": [
1542
+ "video_id"
1543
+ ],
1544
+ "additionalProperties": false
1545
+ },
1546
+ "output_schema": {
1547
+ "type": "object",
1548
+ "properties": {
1549
+ "success": {
1550
+ "type": "boolean",
1551
+ "description": "Whether navigation was initiated"
1552
+ },
1553
+ "url": {
1554
+ "type": "string",
1555
+ "description": "The URL navigated to"
1556
+ }
1557
+ },
1558
+ "required": [
1559
+ "success",
1560
+ "url"
1561
+ ],
1562
+ "additionalProperties": false
1563
+ }
1564
+ },
1565
+ {
1566
+ "name": "navigate_to_genre",
1567
+ "displayName": "Navigate to Genre",
1568
+ "description": "Navigate the browser to a Netflix genre browse page. Common genre IDs: 83 (TV Shows), 34399 (Movies), 1365 (Action), 5763 (Drama), 6548 (Comedy), 8933 (Thriller), 7424 (Anime), 2243108 (Korean TV), 26065 (Sci-Fi), 8711 (Horror), 10118 (Comic & Superhero), 13335 (Reality TV), 11559 (Stand-Up Comedy), 6839 (Documentaries).",
1569
+ "summary": "Open a genre page in the browser",
1570
+ "icon": "compass",
1571
+ "group": "Browse",
1572
+ "input_schema": {
1573
+ "type": "object",
1574
+ "properties": {
1575
+ "genre_id": {
1576
+ "type": "integer",
1577
+ "minimum": -9007199254740991,
1578
+ "maximum": 9007199254740991,
1579
+ "description": "Netflix genre ID (e.g., 1365 for Action, 6548 for Comedy)"
1580
+ }
1581
+ },
1582
+ "required": [
1583
+ "genre_id"
1584
+ ],
1585
+ "additionalProperties": false
1586
+ },
1587
+ "output_schema": {
1588
+ "type": "object",
1589
+ "properties": {
1590
+ "success": {
1591
+ "type": "boolean",
1592
+ "description": "Whether navigation was initiated"
1593
+ },
1594
+ "url": {
1595
+ "type": "string",
1596
+ "description": "The URL navigated to"
1597
+ }
1598
+ },
1599
+ "required": [
1600
+ "success",
1601
+ "url"
1602
+ ],
1603
+ "additionalProperties": false
1604
+ }
1605
+ },
1606
+ {
1607
+ "name": "play_title",
1608
+ "displayName": "Play Title",
1609
+ "description": "Start playing a Netflix movie or TV show in the browser. Navigates directly to the Netflix player for the given video ID. For TV shows, pass the specific episode video ID to play that episode.",
1610
+ "summary": "Start playing a title",
1611
+ "icon": "play",
1612
+ "group": "Playback",
1613
+ "input_schema": {
1614
+ "type": "object",
1615
+ "properties": {
1616
+ "video_id": {
1617
+ "type": "integer",
1618
+ "minimum": -9007199254740991,
1619
+ "maximum": 9007199254740991,
1620
+ "description": "Netflix video ID to play (movie or episode)"
1621
+ }
1622
+ },
1623
+ "required": [
1624
+ "video_id"
1625
+ ],
1626
+ "additionalProperties": false
1627
+ },
1628
+ "output_schema": {
1629
+ "type": "object",
1630
+ "properties": {
1631
+ "success": {
1632
+ "type": "boolean",
1633
+ "description": "Whether playback navigation was initiated"
1634
+ },
1635
+ "url": {
1636
+ "type": "string",
1637
+ "description": "The player URL navigated to"
1638
+ }
1639
+ },
1640
+ "required": [
1641
+ "success",
1642
+ "url"
1643
+ ],
1644
+ "additionalProperties": false
1645
+ }
1646
+ }
1647
+ ]
1648
+ }