youtube-knowledge-mcp 2.1.0 → 2.2.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.
Files changed (344) hide show
  1. package/README.md +105 -34
  2. package/dist/brain-schemas.d.ts +10 -10
  3. package/dist/brain-schemas.d.ts.map +1 -1
  4. package/dist/brain-schemas.js +0 -4
  5. package/dist/brain-schemas.js.map +1 -1
  6. package/dist/http/app.d.ts +16 -0
  7. package/dist/http/app.d.ts.map +1 -0
  8. package/dist/http/app.js +176 -0
  9. package/dist/http/app.js.map +1 -0
  10. package/dist/http/auth.d.ts +38 -0
  11. package/dist/http/auth.d.ts.map +1 -0
  12. package/dist/http/auth.js +79 -0
  13. package/dist/http/auth.js.map +1 -0
  14. package/dist/http/config.d.ts +41 -0
  15. package/dist/http/config.d.ts.map +1 -0
  16. package/dist/http/config.js +65 -0
  17. package/dist/http/config.js.map +1 -0
  18. package/dist/http/rate-limiter.d.ts +24 -0
  19. package/dist/http/rate-limiter.d.ts.map +1 -0
  20. package/dist/http/rate-limiter.js +55 -0
  21. package/dist/http/rate-limiter.js.map +1 -0
  22. package/dist/http/sessions.d.ts +34 -0
  23. package/dist/http/sessions.d.ts.map +1 -0
  24. package/dist/http/sessions.js +62 -0
  25. package/dist/http/sessions.js.map +1 -0
  26. package/dist/http.d.ts +6 -48
  27. package/dist/http.d.ts.map +1 -1
  28. package/dist/http.js +35 -252
  29. package/dist/http.js.map +1 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +11 -517
  32. package/dist/index.js.map +1 -1
  33. package/dist/prompts-brain.d.ts +4 -0
  34. package/dist/prompts-brain.d.ts.map +1 -0
  35. package/dist/prompts-brain.js +48 -0
  36. package/dist/prompts-brain.js.map +1 -0
  37. package/dist/prompts-research.d.ts +4 -0
  38. package/dist/prompts-research.d.ts.map +1 -0
  39. package/dist/prompts-research.js +74 -0
  40. package/dist/prompts-research.js.map +1 -0
  41. package/dist/prompts-shared.d.ts +13 -0
  42. package/dist/prompts-shared.d.ts.map +1 -0
  43. package/dist/prompts-shared.js +7 -0
  44. package/dist/prompts-shared.js.map +1 -0
  45. package/dist/prompts.d.ts.map +1 -1
  46. package/dist/prompts.js +5 -100
  47. package/dist/prompts.js.map +1 -1
  48. package/dist/registry/brain-tools.d.ts +4 -0
  49. package/dist/registry/brain-tools.d.ts.map +1 -0
  50. package/dist/registry/brain-tools.js +104 -0
  51. package/dist/registry/brain-tools.js.map +1 -0
  52. package/dist/registry/channel-tools.d.ts +4 -0
  53. package/dist/registry/channel-tools.d.ts.map +1 -0
  54. package/dist/registry/channel-tools.js +53 -0
  55. package/dist/registry/channel-tools.js.map +1 -0
  56. package/dist/registry/health-tools.d.ts +4 -0
  57. package/dist/registry/health-tools.d.ts.map +1 -0
  58. package/dist/registry/health-tools.js +21 -0
  59. package/dist/registry/health-tools.js.map +1 -0
  60. package/dist/registry/index.d.ts +8 -0
  61. package/dist/registry/index.d.ts.map +1 -0
  62. package/dist/registry/index.js +27 -0
  63. package/dist/registry/index.js.map +1 -0
  64. package/dist/registry/library-tools.d.ts +4 -0
  65. package/dist/registry/library-tools.d.ts.map +1 -0
  66. package/dist/registry/library-tools.js +116 -0
  67. package/dist/registry/library-tools.js.map +1 -0
  68. package/dist/registry/media-tools.d.ts +4 -0
  69. package/dist/registry/media-tools.d.ts.map +1 -0
  70. package/dist/registry/media-tools.js +100 -0
  71. package/dist/registry/media-tools.js.map +1 -0
  72. package/dist/registry/thumbnail-tools.d.ts +7 -0
  73. package/dist/registry/thumbnail-tools.d.ts.map +1 -0
  74. package/dist/registry/thumbnail-tools.js +72 -0
  75. package/dist/registry/thumbnail-tools.js.map +1 -0
  76. package/dist/registry/transcript-tools.d.ts +4 -0
  77. package/dist/registry/transcript-tools.d.ts.map +1 -0
  78. package/dist/registry/transcript-tools.js +68 -0
  79. package/dist/registry/transcript-tools.js.map +1 -0
  80. package/dist/registry/types.d.ts +41 -0
  81. package/dist/registry/types.d.ts.map +1 -0
  82. package/dist/registry/types.js +17 -0
  83. package/dist/registry/types.js.map +1 -0
  84. package/dist/registry/video-tools.d.ts +4 -0
  85. package/dist/registry/video-tools.d.ts.map +1 -0
  86. package/dist/registry/video-tools.js +101 -0
  87. package/dist/registry/video-tools.js.map +1 -0
  88. package/dist/resources.d.ts.map +1 -1
  89. package/dist/resources.js +13 -10
  90. package/dist/resources.js.map +1 -1
  91. package/dist/schemas.d.ts +11 -2
  92. package/dist/schemas.d.ts.map +1 -1
  93. package/dist/schemas.js +5 -0
  94. package/dist/schemas.js.map +1 -1
  95. package/dist/thumbnail-resource.d.ts +8 -0
  96. package/dist/thumbnail-resource.d.ts.map +1 -0
  97. package/dist/thumbnail-resource.js +38 -0
  98. package/dist/thumbnail-resource.js.map +1 -0
  99. package/dist/thumbnail-schemas.d.ts +512 -0
  100. package/dist/thumbnail-schemas.d.ts.map +1 -0
  101. package/dist/thumbnail-schemas.js +95 -0
  102. package/dist/thumbnail-schemas.js.map +1 -0
  103. package/dist/tools/batch.js +1 -1
  104. package/dist/tools/batch.js.map +1 -1
  105. package/dist/tools/build-brain.js +1 -1
  106. package/dist/tools/build-brain.js.map +1 -1
  107. package/dist/tools/check-health.d.ts +2 -0
  108. package/dist/tools/check-health.d.ts.map +1 -1
  109. package/dist/tools/check-health.js +9 -0
  110. package/dist/tools/check-health.js.map +1 -1
  111. package/dist/tools/clips.d.ts +9 -41
  112. package/dist/tools/clips.d.ts.map +1 -1
  113. package/dist/tools/clips.js +52 -128
  114. package/dist/tools/clips.js.map +1 -1
  115. package/dist/tools/fetch-channel-thumbnails.d.ts +179 -0
  116. package/dist/tools/fetch-channel-thumbnails.d.ts.map +1 -0
  117. package/dist/tools/fetch-channel-thumbnails.js +123 -0
  118. package/dist/tools/fetch-channel-thumbnails.js.map +1 -0
  119. package/dist/tools/fetch-videos.d.ts +3 -0
  120. package/dist/tools/fetch-videos.d.ts.map +1 -1
  121. package/dist/tools/fetch-videos.js +3 -0
  122. package/dist/tools/fetch-videos.js.map +1 -1
  123. package/dist/tools/frames-subtitles.d.ts +44 -0
  124. package/dist/tools/frames-subtitles.d.ts.map +1 -0
  125. package/dist/tools/frames-subtitles.js +104 -0
  126. package/dist/tools/frames-subtitles.js.map +1 -0
  127. package/dist/tools/get-channel-info.d.ts +2 -0
  128. package/dist/tools/get-channel-info.d.ts.map +1 -1
  129. package/dist/tools/get-channel-info.js +8 -1
  130. package/dist/tools/get-channel-info.js.map +1 -1
  131. package/dist/tools/get-playlist-info.d.ts.map +1 -1
  132. package/dist/tools/get-playlist-info.js +1 -0
  133. package/dist/tools/get-playlist-info.js.map +1 -1
  134. package/dist/tools/get-thumbnail.d.ts +38 -0
  135. package/dist/tools/get-thumbnail.d.ts.map +1 -0
  136. package/dist/tools/get-thumbnail.js +152 -0
  137. package/dist/tools/get-thumbnail.js.map +1 -0
  138. package/dist/tools/get-transcript.d.ts.map +1 -1
  139. package/dist/tools/get-transcript.js +2 -14
  140. package/dist/tools/get-transcript.js.map +1 -1
  141. package/dist/tools/library.d.ts.map +1 -1
  142. package/dist/tools/library.js +13 -3
  143. package/dist/tools/library.js.map +1 -1
  144. package/dist/tools/list-channel-thumbnails.d.ts +235 -0
  145. package/dist/tools/list-channel-thumbnails.d.ts.map +1 -0
  146. package/dist/tools/list-channel-thumbnails.js +79 -0
  147. package/dist/tools/list-channel-thumbnails.js.map +1 -0
  148. package/dist/tools/save-to-library.d.ts.map +1 -1
  149. package/dist/tools/save-to-library.js +5 -1
  150. package/dist/tools/save-to-library.js.map +1 -1
  151. package/dist/tools/search-channels.d.ts +6 -0
  152. package/dist/tools/search-channels.d.ts.map +1 -1
  153. package/dist/tools/search-transcript.d.ts.map +1 -1
  154. package/dist/tools/search-transcript.js +6 -13
  155. package/dist/tools/search-transcript.js.map +1 -1
  156. package/dist/tools/search-videos.d.ts +3 -0
  157. package/dist/tools/search-videos.d.ts.map +1 -1
  158. package/dist/utils/batches.d.ts +15 -0
  159. package/dist/utils/batches.d.ts.map +1 -0
  160. package/dist/utils/batches.js +31 -0
  161. package/dist/utils/batches.js.map +1 -0
  162. package/dist/utils/brain-build.d.ts.map +1 -1
  163. package/dist/utils/brain-build.js +1 -12
  164. package/dist/utils/brain-build.js.map +1 -1
  165. package/dist/utils/brain-index.d.ts.map +1 -1
  166. package/dist/utils/brain-index.js +3 -2
  167. package/dist/utils/brain-index.js.map +1 -1
  168. package/dist/utils/brain-lock.d.ts +2 -18
  169. package/dist/utils/brain-lock.d.ts.map +1 -1
  170. package/dist/utils/brain-lock.js +4 -80
  171. package/dist/utils/brain-lock.js.map +1 -1
  172. package/dist/utils/brain-lookup.d.ts +8 -0
  173. package/dist/utils/brain-lookup.d.ts.map +1 -1
  174. package/dist/utils/brain-lookup.js +5 -31
  175. package/dist/utils/brain-lookup.js.map +1 -1
  176. package/dist/utils/brain-storage.d.ts.map +1 -1
  177. package/dist/utils/brain-storage.js +5 -5
  178. package/dist/utils/brain-storage.js.map +1 -1
  179. package/dist/utils/caption-probe.d.ts +7 -0
  180. package/dist/utils/caption-probe.d.ts.map +1 -0
  181. package/dist/utils/caption-probe.js +36 -0
  182. package/dist/utils/caption-probe.js.map +1 -0
  183. package/dist/utils/channel-images.d.ts +16 -0
  184. package/dist/utils/channel-images.d.ts.map +1 -0
  185. package/dist/utils/channel-images.js +35 -0
  186. package/dist/utils/channel-images.js.map +1 -0
  187. package/dist/utils/channel-lookup.d.ts +5 -0
  188. package/dist/utils/channel-lookup.d.ts.map +1 -0
  189. package/dist/utils/channel-lookup.js +37 -0
  190. package/dist/utils/channel-lookup.js.map +1 -0
  191. package/dist/utils/chapters.d.ts +11 -0
  192. package/dist/utils/chapters.d.ts.map +1 -0
  193. package/dist/utils/chapters.js +24 -0
  194. package/dist/utils/chapters.js.map +1 -0
  195. package/dist/utils/clips.d.ts.map +1 -1
  196. package/dist/utils/clips.js +18 -26
  197. package/dist/utils/clips.js.map +1 -1
  198. package/dist/utils/env.d.ts +26 -0
  199. package/dist/utils/env.d.ts.map +1 -0
  200. package/dist/utils/env.js +72 -0
  201. package/dist/utils/env.js.map +1 -0
  202. package/dist/utils/errors.d.ts +1 -1
  203. package/dist/utils/errors.d.ts.map +1 -1
  204. package/dist/utils/errors.js +20 -2
  205. package/dist/utils/errors.js.map +1 -1
  206. package/dist/utils/file-lock.d.ts +34 -0
  207. package/dist/utils/file-lock.d.ts.map +1 -0
  208. package/dist/utils/file-lock.js +91 -0
  209. package/dist/utils/file-lock.js.map +1 -0
  210. package/dist/utils/flat-listing.d.ts +89 -0
  211. package/dist/utils/flat-listing.d.ts.map +1 -0
  212. package/dist/utils/flat-listing.js +68 -0
  213. package/dist/utils/flat-listing.js.map +1 -0
  214. package/dist/utils/format.d.ts +1 -3
  215. package/dist/utils/format.d.ts.map +1 -1
  216. package/dist/utils/format.js +1 -5
  217. package/dist/utils/format.js.map +1 -1
  218. package/dist/utils/guard.d.ts +21 -0
  219. package/dist/utils/guard.d.ts.map +1 -0
  220. package/dist/utils/guard.js +105 -0
  221. package/dist/utils/guard.js.map +1 -0
  222. package/dist/utils/image-dimensions.d.ts +19 -0
  223. package/dist/utils/image-dimensions.d.ts.map +1 -0
  224. package/dist/utils/image-dimensions.js +93 -0
  225. package/dist/utils/image-dimensions.js.map +1 -0
  226. package/dist/utils/image-fetch.d.ts +31 -0
  227. package/dist/utils/image-fetch.d.ts.map +1 -0
  228. package/dist/utils/image-fetch.js +141 -0
  229. package/dist/utils/image-fetch.js.map +1 -0
  230. package/dist/utils/json-file.d.ts +14 -5
  231. package/dist/utils/json-file.d.ts.map +1 -1
  232. package/dist/utils/json-file.js +24 -9
  233. package/dist/utils/json-file.js.map +1 -1
  234. package/dist/utils/paths.d.ts +10 -0
  235. package/dist/utils/paths.d.ts.map +1 -1
  236. package/dist/utils/paths.js +14 -0
  237. package/dist/utils/paths.js.map +1 -1
  238. package/dist/utils/pattern.d.ts +30 -0
  239. package/dist/utils/pattern.d.ts.map +1 -0
  240. package/dist/utils/pattern.js +130 -0
  241. package/dist/utils/pattern.js.map +1 -0
  242. package/dist/utils/search-index.d.ts.map +1 -1
  243. package/dist/utils/search-index.js +9 -4
  244. package/dist/utils/search-index.js.map +1 -1
  245. package/dist/utils/storage.d.ts.map +1 -1
  246. package/dist/utils/storage.js +14 -8
  247. package/dist/utils/storage.js.map +1 -1
  248. package/dist/utils/subtitles.d.ts +7 -0
  249. package/dist/utils/subtitles.d.ts.map +1 -0
  250. package/dist/utils/subtitles.js +30 -0
  251. package/dist/utils/subtitles.js.map +1 -0
  252. package/dist/utils/thumbnail-entry.d.ts +19 -0
  253. package/dist/utils/thumbnail-entry.d.ts.map +1 -0
  254. package/dist/utils/thumbnail-entry.js +119 -0
  255. package/dist/utils/thumbnail-entry.js.map +1 -0
  256. package/dist/utils/thumbnail-fetch.d.ts +37 -0
  257. package/dist/utils/thumbnail-fetch.d.ts.map +1 -0
  258. package/dist/utils/thumbnail-fetch.js +89 -0
  259. package/dist/utils/thumbnail-fetch.js.map +1 -0
  260. package/dist/utils/thumbnail-ladder.d.ts +44 -0
  261. package/dist/utils/thumbnail-ladder.d.ts.map +1 -0
  262. package/dist/utils/thumbnail-ladder.js +68 -0
  263. package/dist/utils/thumbnail-ladder.js.map +1 -0
  264. package/dist/utils/thumbnail-listing.d.ts +16 -0
  265. package/dist/utils/thumbnail-listing.d.ts.map +1 -0
  266. package/dist/utils/thumbnail-listing.js +26 -0
  267. package/dist/utils/thumbnail-listing.js.map +1 -0
  268. package/dist/utils/thumbnail-paths.d.ts +20 -0
  269. package/dist/utils/thumbnail-paths.d.ts.map +1 -0
  270. package/dist/utils/thumbnail-paths.js +35 -0
  271. package/dist/utils/thumbnail-paths.js.map +1 -0
  272. package/dist/utils/thumbnail-store.d.ts +19 -0
  273. package/dist/utils/thumbnail-store.d.ts.map +1 -0
  274. package/dist/utils/thumbnail-store.js +125 -0
  275. package/dist/utils/thumbnail-store.js.map +1 -0
  276. package/dist/utils/transcript-cache.d.ts +20 -0
  277. package/dist/utils/transcript-cache.d.ts.map +1 -0
  278. package/dist/utils/transcript-cache.js +127 -0
  279. package/dist/utils/transcript-cache.js.map +1 -0
  280. package/dist/utils/transcript-search.d.ts +20 -0
  281. package/dist/utils/transcript-search.d.ts.map +1 -0
  282. package/dist/utils/transcript-search.js +35 -0
  283. package/dist/utils/transcript-search.js.map +1 -0
  284. package/dist/utils/transcript.d.ts +10 -31
  285. package/dist/utils/transcript.d.ts.map +1 -1
  286. package/dist/utils/transcript.js +2 -64
  287. package/dist/utils/transcript.js.map +1 -1
  288. package/dist/utils/validate-youtube.d.ts +35 -0
  289. package/dist/utils/validate-youtube.d.ts.map +1 -0
  290. package/dist/utils/validate-youtube.js +87 -0
  291. package/dist/utils/validate-youtube.js.map +1 -0
  292. package/dist/utils/validate.d.ts +11 -4
  293. package/dist/utils/validate.d.ts.map +1 -1
  294. package/dist/utils/validate.js +43 -36
  295. package/dist/utils/validate.js.map +1 -1
  296. package/dist/utils/version.d.ts +2 -0
  297. package/dist/utils/version.d.ts.map +1 -0
  298. package/dist/utils/version.js +19 -0
  299. package/dist/utils/version.js.map +1 -0
  300. package/dist/utils/youtube-channel.d.ts +44 -0
  301. package/dist/utils/youtube-channel.d.ts.map +1 -0
  302. package/dist/utils/youtube-channel.js +61 -0
  303. package/dist/utils/youtube-channel.js.map +1 -0
  304. package/dist/utils/youtube-download.d.ts +27 -0
  305. package/dist/utils/youtube-download.d.ts.map +1 -0
  306. package/dist/utils/youtube-download.js +118 -0
  307. package/dist/utils/youtube-download.js.map +1 -0
  308. package/dist/utils/youtube-schemas.d.ts +394 -0
  309. package/dist/utils/youtube-schemas.d.ts.map +1 -0
  310. package/dist/utils/youtube-schemas.js +118 -0
  311. package/dist/utils/youtube-schemas.js.map +1 -0
  312. package/dist/utils/youtube-search.d.ts +14 -0
  313. package/dist/utils/youtube-search.d.ts.map +1 -0
  314. package/dist/utils/youtube-search.js +39 -0
  315. package/dist/utils/youtube-search.js.map +1 -0
  316. package/dist/utils/youtube-url.d.ts +25 -0
  317. package/dist/utils/youtube-url.d.ts.map +1 -0
  318. package/dist/utils/youtube-url.js +75 -0
  319. package/dist/utils/youtube-url.js.map +1 -0
  320. package/dist/utils/youtube-video.d.ts +47 -0
  321. package/dist/utils/youtube-video.d.ts.map +1 -0
  322. package/dist/utils/youtube-video.js +98 -0
  323. package/dist/utils/youtube-video.js.map +1 -0
  324. package/dist/utils/youtube.d.ts +10 -122
  325. package/dist/utils/youtube.d.ts.map +1 -1
  326. package/dist/utils/youtube.js +11 -486
  327. package/dist/utils/youtube.js.map +1 -1
  328. package/dist/utils/ytdlp-env.d.ts +33 -0
  329. package/dist/utils/ytdlp-env.d.ts.map +1 -0
  330. package/dist/utils/ytdlp-env.js +121 -0
  331. package/dist/utils/ytdlp-env.js.map +1 -0
  332. package/dist/utils/ytdlp-limiter.d.ts +24 -0
  333. package/dist/utils/ytdlp-limiter.d.ts.map +1 -0
  334. package/dist/utils/ytdlp-limiter.js +69 -0
  335. package/dist/utils/ytdlp-limiter.js.map +1 -0
  336. package/dist/utils/ytdlp-parse.d.ts +13 -0
  337. package/dist/utils/ytdlp-parse.d.ts.map +1 -0
  338. package/dist/utils/ytdlp-parse.js +48 -0
  339. package/dist/utils/ytdlp-parse.js.map +1 -0
  340. package/dist/utils/ytdlp.d.ts +13 -18
  341. package/dist/utils/ytdlp.d.ts.map +1 -1
  342. package/dist/utils/ytdlp.js +21 -110
  343. package/dist/utils/ytdlp.js.map +1 -1
  344. package/package.json +2 -1
@@ -0,0 +1,116 @@
1
+ import { defineTool } from './types.js';
2
+ import { getLibraryItemSchema, getLibraryItemOutputSchema, getLibraryItemHandler, searchLibrarySchema, searchLibraryOutputSchema, searchLibraryHandler, updateLibraryTagsSchema, updateLibraryTagsOutputSchema, updateLibraryTagsHandler, deleteLibraryItemSchema, deleteLibraryItemOutputSchema, deleteLibraryItemHandler, rebuildLibraryIndexSchema, rebuildLibraryIndexOutputSchema, rebuildLibraryIndexHandler, } from '../tools/library.js';
3
+ import { listLibrarySchema, listLibraryOutputSchema, listLibraryHandler, } from '../tools/list-library.js';
4
+ import { saveToLibrarySchema, saveToLibraryOutputSchema, saveToLibraryHandler, } from '../tools/save-to-library.js';
5
+ /** The local knowledge library. Local only: these write under the home directory. */
6
+ export const libraryTools = [
7
+ defineTool({
8
+ name: 'save_to_library',
9
+ mode: 'stdio',
10
+ title: 'Save to YouTube Knowledge Library',
11
+ description: 'Save a summary or skill note to the local YouTube knowledge library. Overwrites existing content of the same type for the same video. Returns the saved file path.',
12
+ inputSchema: saveToLibrarySchema,
13
+ outputSchema: saveToLibraryOutputSchema,
14
+ annotations: {
15
+ readOnlyHint: false,
16
+ // Overwrites an existing note of the same type in place, which is a
17
+ // destructive update: the previous content is not recoverable.
18
+ destructiveHint: true,
19
+ idempotentHint: true,
20
+ openWorldHint: false,
21
+ },
22
+ handler: saveToLibraryHandler,
23
+ }),
24
+ defineTool({
25
+ name: 'list_library',
26
+ mode: 'stdio',
27
+ title: 'List YouTube Knowledge Library',
28
+ description: 'List all saved items in the local YouTube knowledge library. Returns titles, channels, content types, tags, and save dates. Optionally filter by tag. Sorted by most recently saved.',
29
+ inputSchema: listLibrarySchema,
30
+ outputSchema: listLibraryOutputSchema,
31
+ annotations: {
32
+ readOnlyHint: true,
33
+ destructiveHint: false,
34
+ idempotentHint: true,
35
+ openWorldHint: false,
36
+ },
37
+ handler: listLibraryHandler,
38
+ }),
39
+ defineTool({
40
+ name: 'get_library_item',
41
+ mode: 'stdio',
42
+ title: 'Read a Saved Library Item',
43
+ description: 'Read back a summary or skill note previously saved with save_to_library. Returns the markdown content plus the saved metadata.',
44
+ inputSchema: getLibraryItemSchema,
45
+ outputSchema: getLibraryItemOutputSchema,
46
+ annotations: {
47
+ readOnlyHint: true,
48
+ destructiveHint: false,
49
+ idempotentHint: true,
50
+ openWorldHint: false,
51
+ },
52
+ handler: getLibraryItemHandler,
53
+ }),
54
+ defineTool({
55
+ name: 'search_library',
56
+ mode: 'stdio',
57
+ title: 'Search the Knowledge Library',
58
+ description: 'Full-text search across every saved summary and skill note, ranked by relevance. Returns matching excerpts with the video IDs needed to read the full note.',
59
+ inputSchema: searchLibrarySchema,
60
+ outputSchema: searchLibraryOutputSchema,
61
+ annotations: {
62
+ readOnlyHint: true,
63
+ destructiveHint: false,
64
+ idempotentHint: true,
65
+ openWorldHint: false,
66
+ },
67
+ handler: searchLibraryHandler,
68
+ }),
69
+ defineTool({
70
+ name: 'update_library_tags',
71
+ mode: 'stdio',
72
+ title: 'Update Library Tags',
73
+ description: 'Add, remove or replace the tags on a saved library item. Tags are how list_library filters, so this is the way to reorganize a growing library. The replace parameter discards all existing tags.',
74
+ inputSchema: updateLibraryTagsSchema,
75
+ outputSchema: updateLibraryTagsOutputSchema,
76
+ annotations: {
77
+ readOnlyHint: false,
78
+ // The replace parameter discards every existing tag.
79
+ destructiveHint: true,
80
+ idempotentHint: true,
81
+ openWorldHint: false,
82
+ },
83
+ handler: updateLibraryTagsHandler,
84
+ }),
85
+ defineTool({
86
+ name: 'delete_library_item',
87
+ mode: 'stdio',
88
+ title: 'Delete a Library Item',
89
+ description: 'Permanently delete a saved summary or skill note, or the entire library entry for a video. This removes files from disk and cannot be undone.',
90
+ inputSchema: deleteLibraryItemSchema,
91
+ outputSchema: deleteLibraryItemOutputSchema,
92
+ annotations: {
93
+ readOnlyHint: false,
94
+ destructiveHint: true,
95
+ idempotentHint: true,
96
+ openWorldHint: false,
97
+ },
98
+ handler: deleteLibraryItemHandler,
99
+ }),
100
+ defineTool({
101
+ name: 'rebuild_library_index',
102
+ mode: 'stdio',
103
+ title: 'Rebuild the Library Search Index',
104
+ description: 'Rebuild the full-text search index from the notes on disk. Use this if search_library results look stale or incomplete, for example after editing files by hand.',
105
+ inputSchema: rebuildLibraryIndexSchema,
106
+ outputSchema: rebuildLibraryIndexOutputSchema,
107
+ annotations: {
108
+ readOnlyHint: false,
109
+ destructiveHint: false,
110
+ idempotentHint: true,
111
+ openWorldHint: false,
112
+ },
113
+ handler: rebuildLibraryIndexHandler,
114
+ }),
115
+ ];
116
+ //# sourceMappingURL=library-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"library-tools.js","sourceRoot":"","sources":["../../src/registry/library-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ToolDefinition } from './types.js';
2
+ /** Clips, stills, subtitles and downloads. Local only: these write files. */
3
+ export declare const mediaTools: ToolDefinition[];
4
+ //# sourceMappingURL=media-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-tools.d.ts","sourceRoot":"","sources":["../../src/registry/media-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AA0B7D,6EAA6E;AAC7E,eAAO,MAAM,UAAU,EAAE,cAAc,EAmGtC,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { defineTool } from './types.js';
2
+ import { extractClipSchema, extractClipOutputSchema, extractClipHandler, extractAudioClipSchema, extractAudioClipOutputSchema, extractAudioClipHandler, extractClipsSchema, extractClipsOutputSchema, extractClipsHandler, } from '../tools/clips.js';
3
+ import { downloadVideoSchema, downloadVideoOutputSchema, downloadVideoHandler, } from '../tools/download-video.js';
4
+ import { extractFrameSchema, extractFrameOutputSchema, extractFrameHandler, exportSubtitlesSchema, exportSubtitlesOutputSchema, exportSubtitlesHandler, } from '../tools/frames-subtitles.js';
5
+ /** Clips, stills, subtitles and downloads. Local only: these write files. */
6
+ export const mediaTools = [
7
+ defineTool({
8
+ name: 'extract_clip',
9
+ mode: 'stdio',
10
+ title: 'Extract a Video Clip',
11
+ description: 'Cut a time range out of a YouTube video without downloading the whole thing. Give start and end, or a chapter name. Pair with search_transcript to find the moment first. Requires ffmpeg.',
12
+ inputSchema: extractClipSchema,
13
+ outputSchema: extractClipOutputSchema,
14
+ annotations: {
15
+ readOnlyHint: false,
16
+ destructiveHint: false,
17
+ idempotentHint: true,
18
+ openWorldHint: true,
19
+ },
20
+ handler: extractClipHandler,
21
+ }),
22
+ defineTool({
23
+ name: 'extract_audio_clip',
24
+ mode: 'stdio',
25
+ title: 'Extract an Audio Clip',
26
+ description: 'Cut a time range out of a video as audio only, in an editor-friendly format (mp3, m4a, wav, flac, opus). Use for podcast pulls and voice-over sourcing. Requires ffmpeg.',
27
+ inputSchema: extractAudioClipSchema,
28
+ outputSchema: extractAudioClipOutputSchema,
29
+ annotations: {
30
+ readOnlyHint: false,
31
+ destructiveHint: false,
32
+ idempotentHint: true,
33
+ openWorldHint: true,
34
+ },
35
+ handler: extractAudioClipHandler,
36
+ }),
37
+ defineTool({
38
+ name: 'extract_clips',
39
+ mode: 'stdio',
40
+ title: 'Extract Several Clips',
41
+ description: 'Cut several time ranges out of one video in a single call. A range that fails is reported individually rather than losing the clips that succeeded. Requires ffmpeg.',
42
+ inputSchema: extractClipsSchema,
43
+ outputSchema: extractClipsOutputSchema,
44
+ annotations: {
45
+ readOnlyHint: false,
46
+ destructiveHint: false,
47
+ idempotentHint: true,
48
+ openWorldHint: true,
49
+ },
50
+ handler: extractClipsHandler,
51
+ }),
52
+ defineTool({
53
+ name: 'extract_frame',
54
+ mode: 'stdio',
55
+ title: 'Capture a Frame',
56
+ description: 'Capture a single still image from a video at a given timestamp, without downloading the file. Use for thumbnails and reference frames. Requires ffmpeg.',
57
+ inputSchema: extractFrameSchema,
58
+ outputSchema: extractFrameOutputSchema,
59
+ annotations: {
60
+ readOnlyHint: false,
61
+ destructiveHint: false,
62
+ idempotentHint: true,
63
+ openWorldHint: true,
64
+ },
65
+ handler: extractFrameHandler,
66
+ }),
67
+ defineTool({
68
+ name: 'export_subtitles',
69
+ mode: 'stdio',
70
+ title: 'Export Subtitles',
71
+ description: 'Write a video transcript to disk as SRT, WebVTT or plain text, ready to import into a video editor such as Premiere, Resolve or CapCut.',
72
+ inputSchema: exportSubtitlesSchema,
73
+ outputSchema: exportSubtitlesOutputSchema,
74
+ annotations: {
75
+ readOnlyHint: false,
76
+ destructiveHint: false,
77
+ idempotentHint: true,
78
+ openWorldHint: true,
79
+ },
80
+ handler: exportSubtitlesHandler,
81
+ }),
82
+ defineTool({
83
+ name: 'download_video',
84
+ mode: 'stdio',
85
+ title: 'Download YouTube Video',
86
+ description: 'Download a YouTube video to local disk. Use the quality parameter for automatic format selection with smart fallbacks, or formatId for a specific format from list_formats. Returns the downloaded file path, title, and format details.',
87
+ inputSchema: downloadVideoSchema,
88
+ outputSchema: downloadVideoOutputSchema,
89
+ annotations: {
90
+ readOnlyHint: false,
91
+ destructiveHint: false,
92
+ // Writes to a deterministic path and overwrites, exactly like the
93
+ // extract_* tools; repeating the call leaves the same state.
94
+ idempotentHint: true,
95
+ openWorldHint: true,
96
+ },
97
+ handler: downloadVideoHandler,
98
+ }),
99
+ ];
100
+ //# sourceMappingURL=media-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-tools.js","sourceRoot":"","sources":["../../src/registry/media-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type ToolDefinition } from './types.js';
2
+ /**
3
+ * Thumbnails. Looking at one is remote-safe; saving a channel's worth is local
4
+ * only, for the same reason as the brains.
5
+ */
6
+ export declare const thumbnailTools: ToolDefinition[];
7
+ //# sourceMappingURL=thumbnail-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thumbnail-tools.d.ts","sourceRoot":"","sources":["../../src/registry/thumbnail-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAoB7D;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,cAAc,EAkE1C,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { defineTool } from './types.js';
2
+ import { fetchChannelThumbnailsSchema, fetchChannelThumbnailsOutputSchema, fetchChannelThumbnailsHandler, } from '../tools/fetch-channel-thumbnails.js';
3
+ import { listChannelThumbnailsSchema, listChannelThumbnailsOutputSchema, listChannelThumbnailsHandler, deleteChannelThumbnailsSchema, deleteChannelThumbnailsOutputSchema, deleteChannelThumbnailsHandler, } from '../tools/list-channel-thumbnails.js';
4
+ import { getThumbnailSchema, getThumbnailOutputSchema, getThumbnailHandler, } from '../tools/get-thumbnail.js';
5
+ /**
6
+ * Thumbnails. Looking at one is remote-safe; saving a channel's worth is local
7
+ * only, for the same reason as the brains.
8
+ */
9
+ export const thumbnailTools = [
10
+ defineTool({
11
+ name: 'get_thumbnail',
12
+ mode: 'all',
13
+ title: 'Look at a Thumbnail',
14
+ description: "Return a video's thumbnail, or a channel's avatar or banner, as an image you can look at, with its real pixel size. Tries the largest image YouTube serves and falls back to smaller ones. Locally, an image saved by fetch_channel_thumbnails is served from disk.",
15
+ inputSchema: getThumbnailSchema,
16
+ outputSchema: getThumbnailOutputSchema,
17
+ annotations: {
18
+ readOnlyHint: true,
19
+ destructiveHint: false,
20
+ idempotentHint: true,
21
+ openWorldHint: true,
22
+ },
23
+ handler: (args) => getThumbnailHandler(args, { store: false }),
24
+ stdioHandler: (args) => getThumbnailHandler(args, { store: true }),
25
+ }),
26
+ defineTool({
27
+ name: 'fetch_channel_thumbnails',
28
+ mode: 'stdio',
29
+ title: "Save a Channel's Thumbnails",
30
+ description: "Save every video thumbnail of a channel, plus its avatar and banner, under ~/.youtube-knowledge/thumbnails. One listing per tab, then the images from YouTube's image hosts directly, largest available first; each saved image is recorded with the size actually decoded from it. Safe to interrupt and call again: images already on disk are kept, missing ones fetched. Choose tabs to include shorts and streams.",
31
+ inputSchema: fetchChannelThumbnailsSchema,
32
+ outputSchema: fetchChannelThumbnailsOutputSchema,
33
+ annotations: {
34
+ readOnlyHint: false,
35
+ destructiveHint: false,
36
+ idempotentHint: true,
37
+ openWorldHint: true,
38
+ },
39
+ handler: fetchChannelThumbnailsHandler,
40
+ }),
41
+ defineTool({
42
+ name: 'list_channel_thumbnails',
43
+ mode: 'stdio',
44
+ title: "List a Channel's Saved Thumbnails",
45
+ description: 'List the thumbnails saved for a channel: each file path, its decoded size and which image variant it is, plus the avatar and banner. Works offline from the saved manifest.',
46
+ inputSchema: listChannelThumbnailsSchema,
47
+ outputSchema: listChannelThumbnailsOutputSchema,
48
+ annotations: {
49
+ readOnlyHint: true,
50
+ destructiveHint: false,
51
+ idempotentHint: true,
52
+ openWorldHint: false,
53
+ },
54
+ handler: listChannelThumbnailsHandler,
55
+ }),
56
+ defineTool({
57
+ name: 'delete_channel_thumbnails',
58
+ mode: 'stdio',
59
+ title: "Delete a Channel's Saved Thumbnails",
60
+ description: 'Permanently delete every thumbnail saved for a channel, with its manifest. Use this to start over, for example to fetch again at a different quality.',
61
+ inputSchema: deleteChannelThumbnailsSchema,
62
+ outputSchema: deleteChannelThumbnailsOutputSchema,
63
+ annotations: {
64
+ readOnlyHint: false,
65
+ destructiveHint: true,
66
+ idempotentHint: true,
67
+ openWorldHint: false,
68
+ },
69
+ handler: deleteChannelThumbnailsHandler,
70
+ }),
71
+ ];
72
+ //# sourceMappingURL=thumbnail-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thumbnail-tools.js","sourceRoot":"","sources":["../../src/registry/thumbnail-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,YAAY,CAAC;AAC7D,OAAO,EACL,4BAA4B,EAC5B,kCAAkC,EAClC,6BAA6B,GAC9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,4BAA4B,EAC5B,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,GAC/B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAqB;IAC9C,UAAU,CAAC;QACT,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,qQAAqQ;QACvQ,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,wBAAwB;QACtC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9D,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KACnE,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,6BAA6B;QACpC,WAAW,EACT,yZAAyZ;QAC3Z,WAAW,EAAE,4BAA4B;QACzC,YAAY,EAAE,kCAAkC;QAChD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;QACD,OAAO,EAAE,6BAA6B;KACvC,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,mCAAmC;QAC1C,WAAW,EACT,6KAA6K;QAC/K,WAAW,EAAE,2BAA2B;QACxC,YAAY,EAAE,iCAAiC;QAC/C,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,4BAA4B;KACtC,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,2BAA2B;QACjC,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EACT,uJAAuJ;QACzJ,WAAW,EAAE,6BAA6B;QAC1C,YAAY,EAAE,mCAAmC;QACjD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;QACD,OAAO,EAAE,8BAA8B;KACxC,CAAC;CACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ToolDefinition } from './types.js';
2
+ /** Reading and searching transcripts, singly and in batches. Remote-safe. */
3
+ export declare const transcriptTools: ToolDefinition[];
4
+ //# sourceMappingURL=transcript-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-tools.d.ts","sourceRoot":"","sources":["../../src/registry/transcript-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAoB7D,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,cAAc,EAiE3C,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { defineTool } from './types.js';
2
+ import { getTranscriptsSchema, getTranscriptsOutputSchema, getTranscriptsHandler, digestPlaylistSchema, digestPlaylistOutputSchema, digestPlaylistHandler, } from '../tools/batch.js';
3
+ import { getTranscriptSchema, getTranscriptOutputSchema, getTranscriptHandler, } from '../tools/get-transcript.js';
4
+ import { searchTranscriptSchema, searchTranscriptOutputSchema, searchTranscriptHandler, } from '../tools/search-transcript.js';
5
+ /** Reading and searching transcripts, singly and in batches. Remote-safe. */
6
+ export const transcriptTools = [
7
+ defineTool({
8
+ name: 'get_transcript',
9
+ mode: 'all',
10
+ title: 'Get YouTube Video Transcript',
11
+ description: 'Extract the full transcript from a YouTube video. Supports auto-generated and manual captions. Returns plain text with word count and detected language. Results are cached locally.',
12
+ inputSchema: getTranscriptSchema,
13
+ outputSchema: getTranscriptOutputSchema,
14
+ annotations: {
15
+ readOnlyHint: true,
16
+ destructiveHint: false,
17
+ idempotentHint: true,
18
+ openWorldHint: true,
19
+ },
20
+ handler: getTranscriptHandler,
21
+ }),
22
+ defineTool({
23
+ name: 'search_transcript',
24
+ mode: 'all',
25
+ title: 'Search Inside a Transcript',
26
+ description: 'Find a phrase or pattern inside a video transcript and return each match with its timestamp and a link that opens the video at that moment. Use this instead of reading a whole transcript when you need to locate or cite a specific moment.',
27
+ inputSchema: searchTranscriptSchema,
28
+ outputSchema: searchTranscriptOutputSchema,
29
+ annotations: {
30
+ readOnlyHint: true,
31
+ destructiveHint: false,
32
+ idempotentHint: true,
33
+ openWorldHint: true,
34
+ },
35
+ handler: searchTranscriptHandler,
36
+ }),
37
+ defineTool({
38
+ name: 'get_transcripts',
39
+ mode: 'all',
40
+ title: 'Get Transcripts for Several Videos',
41
+ description: 'Fetch transcripts for up to 25 videos in one call, each capped so the batch cannot flood the context. Videos that have no captions are reported individually rather than failing the whole call.',
42
+ inputSchema: getTranscriptsSchema,
43
+ outputSchema: getTranscriptsOutputSchema,
44
+ annotations: {
45
+ readOnlyHint: true,
46
+ destructiveHint: false,
47
+ idempotentHint: true,
48
+ openWorldHint: true,
49
+ },
50
+ handler: getTranscriptsHandler,
51
+ }),
52
+ defineTool({
53
+ name: 'digest_playlist',
54
+ mode: 'all',
55
+ title: 'Digest a Playlist or Channel',
56
+ description: 'Summarize a playlist or channel in one call: per-video metadata, chapter markers, and optionally transcript word counts. Use this to survey a body of content before deciding what to read in full.',
57
+ inputSchema: digestPlaylistSchema,
58
+ outputSchema: digestPlaylistOutputSchema,
59
+ annotations: {
60
+ readOnlyHint: true,
61
+ destructiveHint: false,
62
+ idempotentHint: true,
63
+ openWorldHint: true,
64
+ },
65
+ handler: digestPlaylistHandler,
66
+ }),
67
+ ];
68
+ //# sourceMappingURL=transcript-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-tools.js","sourceRoot":"","sources":["../../src/registry/transcript-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,YAAY,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,UAAU,CAAC;QACT,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,sLAAsL;QACxL,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,yBAAyB;QACvC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;QACD,OAAO,EAAE,oBAAoB;KAC9B,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,+OAA+O;QACjP,WAAW,EAAE,sBAAsB;QACnC,YAAY,EAAE,4BAA4B;QAC1C,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;QACD,OAAO,EAAE,uBAAuB;KACjC,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,oCAAoC;QAC3C,WAAW,EACT,kMAAkM;QACpM,WAAW,EAAE,oBAAoB;QACjC,YAAY,EAAE,0BAA0B;QACxC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;QACD,OAAO,EAAE,qBAAqB;KAC/B,CAAC;IACF,UAAU,CAAC;QACT,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,qMAAqM;QACvM,WAAW,EAAE,oBAAoB;QACjC,YAAY,EAAE,0BAA0B;QACxC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;QACD,OAAO,EAAE,qBAAqB;KAC/B,CAAC;CACH,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { ZodRawShape } from 'zod';
2
+ import type { McpServer, ToolCallback } from '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import type { ToolAnnotations } from '@modelcontextprotocol/sdk/types.js';
4
+ /**
5
+ * A tool as one declarative record.
6
+ *
7
+ * `createServer` used to be twenty-seven near-identical `registerTool` calls
8
+ * spread over seven hundred lines, and the only thing that varied between them
9
+ * was data. Declaring each tool as data keeps the registration in one loop,
10
+ * lets a test enumerate every tool without booting a server, and makes the
11
+ * transport gate — local-only tools never registered over HTTP — a field
12
+ * rather than an `if` block a new tool can land on the wrong side of.
13
+ */
14
+ export type ToolMode = 'all' | 'stdio';
15
+ export interface ToolDefinition {
16
+ name: string;
17
+ mode: ToolMode;
18
+ register: (server: McpServer, transport: 'stdio' | 'http') => void;
19
+ }
20
+ export interface ToolSpec<In extends ZodRawShape, Out extends ZodRawShape> {
21
+ name: string;
22
+ mode: ToolMode;
23
+ title: string;
24
+ description: string;
25
+ inputSchema: In;
26
+ outputSchema: Out;
27
+ /** Every hint is required: a client decides what to ask before running on them. */
28
+ annotations: Required<Pick<ToolAnnotations, 'readOnlyHint' | 'destructiveHint' | 'idempotentHint' | 'openWorldHint'>>;
29
+ handler: ToolCallback<In>;
30
+ /**
31
+ * A handler to use on stdio instead of `handler`, for the rare tool whose
32
+ * remote and local behaviour differ (a local one may read the user's disk).
33
+ */
34
+ stdioHandler?: ToolCallback<In>;
35
+ }
36
+ /**
37
+ * Capture the schema/handler pairing generically, then hand back a record the
38
+ * registry can hold in one array without any of them needing a cast.
39
+ */
40
+ export declare function defineTool<In extends ZodRawShape, Out extends ZodRawShape>(spec: ToolSpec<In, Out>): ToolDefinition;
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAG1E;;;;;;;;;GASG;AAEH,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEvC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,WAAW;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,EAAE,CAAC;IAChB,YAAY,EAAE,GAAG,CAAC;IAClB,mFAAmF;IACnF,WAAW,EAAE,QAAQ,CACnB,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,eAAe,CAAC,CAC/F,CAAC;IACF,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,WAAW,EACxE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,GACtB,cAAc,CAchB"}
@@ -0,0 +1,17 @@
1
+ import { guarded } from '../utils/guard.js';
2
+ /**
3
+ * Capture the schema/handler pairing generically, then hand back a record the
4
+ * registry can hold in one array without any of them needing a cast.
5
+ */
6
+ export function defineTool(spec) {
7
+ const { name, mode, title, description, inputSchema, outputSchema, annotations } = spec;
8
+ return {
9
+ name,
10
+ mode,
11
+ register: (server, transport) => {
12
+ const handler = transport === 'stdio' ? (spec.stdioHandler ?? spec.handler) : spec.handler;
13
+ server.registerTool(name, { title, description, inputSchema, outputSchema, annotations }, guarded(handler));
14
+ },
15
+ };
16
+ }
17
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAwC5C;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,IAAuB;IAEvB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACxF,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3F,MAAM,CAAC,YAAY,CACjB,IAAI,EACJ,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,EAC9D,OAAO,CAAC,OAAO,CAAC,CACjB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ToolDefinition } from './types.js';
2
+ /** Finding videos and reading what YouTube knows about one. Remote-safe: nothing here touches the filesystem. */
3
+ export declare const videoTools: ToolDefinition[];
4
+ //# sourceMappingURL=video-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-tools.d.ts","sourceRoot":"","sources":["../../src/registry/video-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAgC7D,iHAAiH;AACjH,eAAO,MAAM,UAAU,EAAE,cAAc,EAiGtC,CAAC"}
@@ -0,0 +1,101 @@
1
+ import { defineTool } from './types.js';
2
+ import { listFormatsSchema, listFormatsOutputSchema, listFormatsHandler, } from '../tools/download-video.js';
3
+ import { fetchVideosSchema, fetchVideosOutputSchema, fetchVideosHandler, } from '../tools/fetch-videos.js';
4
+ import { getChaptersSchema, getChaptersOutputSchema, getChaptersHandler, } from '../tools/get-chapters.js';
5
+ import { getCommentsSchema, getCommentsOutputSchema, getCommentsHandler, } from '../tools/get-comments.js';
6
+ import { getVideoInfoSchema, getVideoInfoOutputSchema, getVideoInfoHandler, } from '../tools/get-video-info.js';
7
+ import { searchVideosSchema, searchVideosOutputSchema, searchVideosHandler, } from '../tools/search-videos.js';
8
+ /** Finding videos and reading what YouTube knows about one. Remote-safe: nothing here touches the filesystem. */
9
+ export const videoTools = [
10
+ defineTool({
11
+ name: 'search_videos',
12
+ mode: 'all',
13
+ title: 'Search YouTube Videos',
14
+ description: 'Search YouTube for videos by keyword or phrase. Returns video IDs, titles, durations, channels, view counts, and URLs. Results sorted by relevance.',
15
+ inputSchema: searchVideosSchema,
16
+ outputSchema: searchVideosOutputSchema,
17
+ annotations: {
18
+ readOnlyHint: true,
19
+ destructiveHint: false,
20
+ idempotentHint: true,
21
+ openWorldHint: true,
22
+ },
23
+ handler: searchVideosHandler,
24
+ }),
25
+ defineTool({
26
+ name: 'fetch_videos',
27
+ mode: 'all',
28
+ title: 'Fetch YouTube Videos',
29
+ description: 'List videos from a YouTube playlist or channel. Returns video IDs, titles, durations, upload dates, and URLs. Sorted by playlist or channel order.',
30
+ inputSchema: fetchVideosSchema,
31
+ outputSchema: fetchVideosOutputSchema,
32
+ annotations: {
33
+ readOnlyHint: true,
34
+ destructiveHint: false,
35
+ idempotentHint: true,
36
+ openWorldHint: true,
37
+ },
38
+ handler: fetchVideosHandler,
39
+ }),
40
+ defineTool({
41
+ name: 'get_video_info',
42
+ mode: 'all',
43
+ title: 'Get YouTube Video Info',
44
+ description: 'Get detailed metadata for a single YouTube video. Returns title, channel, duration, upload date, view count, like count, comment count, description, tags, and thumbnail URL.',
45
+ inputSchema: getVideoInfoSchema,
46
+ outputSchema: getVideoInfoOutputSchema,
47
+ annotations: {
48
+ readOnlyHint: true,
49
+ destructiveHint: false,
50
+ idempotentHint: true,
51
+ openWorldHint: true,
52
+ },
53
+ handler: getVideoInfoHandler,
54
+ }),
55
+ defineTool({
56
+ name: 'get_chapters',
57
+ mode: 'all',
58
+ title: 'Get YouTube Video Chapters',
59
+ description: 'Extract chapter markers and timestamps from a YouTube video. Returns chapter titles with start and end times. Not all videos have chapters. Returns empty list if none found.',
60
+ inputSchema: getChaptersSchema,
61
+ outputSchema: getChaptersOutputSchema,
62
+ annotations: {
63
+ readOnlyHint: true,
64
+ destructiveHint: false,
65
+ idempotentHint: true,
66
+ openWorldHint: true,
67
+ },
68
+ handler: getChaptersHandler,
69
+ }),
70
+ defineTool({
71
+ name: 'get_comments',
72
+ mode: 'all',
73
+ title: 'Get YouTube Video Comments',
74
+ description: 'Get top comments from a YouTube video sorted by popularity. Returns author, text, like count, and pinned status. Only top-level comments, no replies.',
75
+ inputSchema: getCommentsSchema,
76
+ outputSchema: getCommentsOutputSchema,
77
+ annotations: {
78
+ readOnlyHint: true,
79
+ destructiveHint: false,
80
+ idempotentHint: true,
81
+ openWorldHint: true,
82
+ },
83
+ handler: getCommentsHandler,
84
+ }),
85
+ defineTool({
86
+ name: 'list_formats',
87
+ mode: 'all',
88
+ title: 'List YouTube Video Formats',
89
+ description: 'List all available download formats for a YouTube video. Returns format IDs, extensions, resolutions, FPS, codecs, and file sizes. Grouped by video+audio, video-only, and audio-only.',
90
+ inputSchema: listFormatsSchema,
91
+ outputSchema: listFormatsOutputSchema,
92
+ annotations: {
93
+ readOnlyHint: true,
94
+ destructiveHint: false,
95
+ idempotentHint: true,
96
+ openWorldHint: true,
97
+ },
98
+ handler: listFormatsHandler,
99
+ }),
100
+ ];
101
+ //# sourceMappingURL=video-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-tools.js","sourceRoot":"","sources":["../../src/registry/video-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE;;;;;;GAMG;AAEH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgJjF"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE;;;;;;GAMG;AAEH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAkJjF"}