{"_id":"@flashdata-dev/youtube-metadata","_rev":"6-ef83f2db5c9c113fe93090245a7d284a","name":"@flashdata-dev/youtube-metadata","dist-tags":{"latest":"0.2.1"},"versions":{"0.0.0-stage":{"name":"@flashdata-dev/youtube-metadata","version":"0.0.0-stage","_id":"@flashdata-dev/youtube-metadata@0.0.0-stage","stub":true,"maintainers":[{"name":"flashdata-dev","email":"rocosenyy@gmail.com"}],"dist":{"shasum":"556e8b71f381bf0ad80780545923d836a3ffebc5","tarball":"https://registry.npmjs.org/@flashdata-dev/youtube-metadata/-/youtube-metadata-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-NXNk98KTcSTaqWiFLm2LE6QYMBf30E5aXQxz9LVTm4gwlZwUk4aV7N0BjXWOIbkuvv6VF9j1861/Nu8rw4e4xA==","signatures":[{"sig":"MEUCIBP+6Q1daHzMTx5bToDSdYYxu9CmosJMAkXB1631wx4oAiEAo4PTqffer1wFS2SU9kqTG9CE95txJq96E5fuGSmScFk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":353},"_npmUser":{"name":"flashdata-dev","email":"rocosenyy@gmail.com"},"description":"Temporary package placeholder for staged publishing","directories":{}},"0.1.0":{"name":"@flashdata-dev/youtube-metadata","version":"0.1.0","keywords":["youtube-metadata","youtube-video-chapters","cli","mcp","model-context-protocol","flashdata"],"author":{"name":"FlashData","email":"support@flashdata.dev"},"license":"MIT","_id":"@flashdata-dev/youtube-metadata@0.1.0","maintainers":[{"name":"flashdata-dev","email":"rocosenyy@gmail.com"}],"homepage":"https://flashdata.dev/docs/sources/youtube_metadata?utm_source=npm&utm_medium=integration&utm_campaign=intent_gtm_2026q4&utm_content=youtube_metadata-task","bugs":{"url":"https://github.com/flashdata-dev/flashdata-mcp/issues"},"bin":{"flashdata-youtube-metadata":"bin/run.js"},"dist":{"shasum":"1e0b0626b8db5beef1b57bc984af179048a7363d","tarball":"https://registry.npmjs.org/@flashdata-dev/youtube-metadata/-/youtube-metadata-0.1.0.tgz","fileCount":24,"integrity":"sha512-6LY4ZMqobzF1dBVostNHi+HjSbtyYjFf56UltC6hJDdNy2USlMYDXjtECFqay085OYcYDfuUvkqrYNGCmrXd1w==","signatures":[{"sig":"MEYCIQD0K+TPH0B798LtZxKz/Z8Zb/YgJ01bcJmmH1vrzKnbSgIhAN8APJHJBTylp+3JihSyi4n5XTCKw0/vXcXb5yE4P9Sh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDFu5uYn6WpWwlDT+aGKJLi2NB48paIrPk98Due6pNkwAIgDld5UKelB139T7VbmppdTN1OgpRQ3ixr82oq4VJU9y4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72872},"type":"commonjs","_from":"file:/Users/rocosen/Documents/GitHub/flashdata-mcp/dist/npm-reviewed/flashdata-dev-youtube-metadata-0.1.0.tgz","engines":{"node":">=22.18.0"},"exports":{"./package.json":"./package.json"},"_npmUser":{"name":"flashdata-dev","email":"rocosenyy@gmail.com"},"_resolved":"/Users/rocosen/Documents/GitHub/flashdata-mcp/dist/npm-reviewed/flashdata-dev-youtube-metadata-0.1.0.tgz","_integrity":"sha512-6LY4ZMqobzF1dBVostNHi+HjSbtyYjFf56UltC6hJDdNy2USlMYDXjtECFqay085OYcYDfuUvkqrYNGCmrXd1w==","repository":{"url":"git+https://github.com/flashdata-dev/flashdata-mcp.git","type":"git","directory":"npm/docs/youtube-metadata"},"_npmVersion":"11.12.1","description":"Read YouTube video details, descriptions, statistics and available chapters. Inspect formats or prepare timestamped chapter navigation. CLI and MCP via the paid FlashData API.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ajv":"8.20.0","axios":"1.20.0","@modelcontextprotocol/sdk":"1.31.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/youtube-metadata_0.1.0_1791986815966_0.11640690422745714","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@flashdata-dev/youtube-metadata","version":"0.1.1","keywords":["youtube-metadata","youtube-video-chapters","cli","mcp","model-context-protocol","flashdata"],"author":{"name":"FlashData","email":"support@flashdata.dev"},"license":"MIT","_id":"@flashdata-dev/youtube-metadata@0.1.1","maintainers":[{"name":"flashdata-dev","email":"rocosenyy@gmail.com"}],"homepage":"https://flashdata.dev/docs/sources/youtube_metadata?utm_source=npm&utm_medium=integration&utm_campaign=intent_gtm_2026q4&utm_content=youtube_metadata-task","bugs":{"url":"https://github.com/rocosen/flashdata-mcp/issues"},"bin":{"flashdata-youtube-metadata":"bin/run.js"},"dist":{"shasum":"2720113bbbd925169c369bb26fdc8d67e27ed4cd","tarball":"https://registry.npmjs.org/@flashdata-dev/youtube-metadata/-/youtube-metadata-0.1.1.tgz","fileCount":24,"integrity":"sha512-ywyub2GAE90KzKZzci2FBduw/dZMMeI3mhQSyDA3HOuF4NaYHRvyomyEVymQqyf5MiG9L9oecea57OO6oQ1OlA==","signatures":[{"sig":"MEUCIQC8Zk9kPWNS16z3H75WheXBTcop8F5jitn4g7e5aCYOSwIgQJWdgfOuQRMaMJofdU9ezFtmY+jfR1dkC0DV5h32Yfg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCOLMAL7I9ecT0IT5g0rC+YmWeeZgmDbjL+MVFaweE7LQIgKB0jb3b9qe1CFMD8VFIdT83f4lHgL8S7kAwM2Vck7qI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73718},"type":"commonjs","_from":"file:/Users/rocosen/Documents/FlashData/channels/python-examples-20261019/npm-artifacts-0.1.1-verified/flashdata-dev-youtube-metadata-0.1.1.tgz","engines":{"node":">=22.18.0"},"exports":{"./package.json":"./package.json"},"_npmUser":{"name":"flashdata-dev","email":"rocosenyy@gmail.com"},"_resolved":"/Users/rocosen/Documents/FlashData/channels/python-examples-20261019/npm-artifacts-0.1.1-verified/flashdata-dev-youtube-metadata-0.1.1.tgz","_integrity":"sha512-ywyub2GAE90KzKZzci2FBduw/dZMMeI3mhQSyDA3HOuF4NaYHRvyomyEVymQqyf5MiG9L9oecea57OO6oQ1OlA==","repository":{"url":"git+https://github.com/rocosen/flashdata-mcp.git","type":"git","directory":"npm/docs/youtube-metadata"},"_npmVersion":"11.19.0","description":"Read YouTube video details, descriptions, statistics and available chapters. Inspect formats or prepare timestamped chapter navigation. CLI and MCP via the paid FlashData API.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ajv":"8.20.0","axios":"1.20.0","@modelcontextprotocol/sdk":"1.31.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/youtube-metadata_0.1.1_1792397130534_0.24370470785708487","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@flashdata-dev/youtube-metadata","version":"0.1.2","keywords":["youtube-metadata","youtube-video-chapters","cli","mcp","model-context-protocol","flashdata"],"author":{"name":"FlashData","email":"support@flashdata.dev"},"license":"MIT","_id":"@flashdata-dev/youtube-metadata@0.1.2","maintainers":[{"name":"flashdata-dev","email":"rocosenyy@gmail.com"}],"homepage":"https://flashdata.dev/docs/sources/youtube_metadata?utm_source=npm&utm_medium=integration&utm_campaign=intent_gtm_2026q4&utm_content=youtube_metadata-task","bugs":{"url":"https://github.com/rocosen/flashdata-mcp/issues"},"bin":{"flashdata-youtube-metadata":"bin/run.js"},"dist":{"shasum":"520ce81721e06d425046691518a53c17941e65d4","tarball":"https://registry.npmjs.org/@flashdata-dev/youtube-metadata/-/youtube-metadata-0.1.2.tgz","fileCount":25,"integrity":"sha512-LDqSh+mpaPYx+mal7qtdTSE+X9j+cl1UXJDPK76dsS6iSOrIs0OZHsdvryy/MVl1W7tK2yujg+xDsI9M+POIjA==","signatures":[{"sig":"MEQCIFnrFEBKkWA9oraMfSobQ0IgaSXuTG82LeF3gZkKj85RAiAAgJssnWUu+0XQ5dabUi1e50vPArKHavUHxZcWLiginw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDcR0ulDZuRIqlmWWwgbPMLyK+OMwSrS3EcoBAFw+SPZAIhAKeTx/ZNkLjU+iUOMVcyeGnuJCiRhJLfPL9wkINLvoUG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72974},"type":"commonjs","_from":"file:/Users/rocosen/Documents/FlashData/channels/npm-copy-20261104/artifacts/flashdata-dev-youtube-metadata-0.1.2.tgz","engines":{"node":">=22.18.0"},"exports":{"./package.json":"./package.json"},"_npmUser":{"name":"flashdata-dev","email":"rocosenyy@gmail.com"},"_resolved":"/Users/rocosen/Documents/FlashData/channels/npm-copy-20261104/artifacts/flashdata-dev-youtube-metadata-0.1.2.tgz","_integrity":"sha512-LDqSh+mpaPYx+mal7qtdTSE+X9j+cl1UXJDPK76dsS6iSOrIs0OZHsdvryy/MVl1W7tK2yujg+xDsI9M+POIjA==","repository":{"url":"git+https://github.com/rocosen/flashdata-mcp.git","type":"git","directory":"npm/docs/youtube-metadata"},"_npmVersion":"11.12.1","description":"Get YouTube video details, descriptions, statistics and available chapters or formats as JSON. CLI and MCP via FlashData.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ajv":"8.20.0","axios":"1.20.0","@modelcontextprotocol/sdk":"1.32.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/youtube-metadata_0.1.2_1793766832128_0.3688826353127702","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@flashdata-dev/youtube-metadata","version":"0.2.0","keywords":["youtube-metadata","youtube-video-chapters","cli","mcp","model-context-protocol","flashdata"],"author":{"name":"FlashData","email":"support@flashdata.dev"},"license":"MIT","_id":"@flashdata-dev/youtube-metadata@0.2.0","maintainers":[{"name":"flashdata-dev","email":"rocosenyy@gmail.com"}],"homepage":"https://flashdata.dev/docs/sources/youtube_metadata?utm_source=npm&utm_medium=integration&utm_campaign=intent_gtm_2026q4&utm_content=youtube_metadata-task","bugs":{"url":"https://github.com/flashdatadev/flashdata-mcp/issues"},"bin":{"flashdata-youtube-metadata":"bin/run.js"},"dist":{"shasum":"d2465175e0929d060340c928c01cdcb1496fe8d7","tarball":"https://registry.npmjs.org/@flashdata-dev/youtube-metadata/-/youtube-metadata-0.2.0.tgz","fileCount":27,"integrity":"sha512-Dn5+P5lL0gAgzfzXQzDXSL+JO/wqeyC4u0qzxrC/Y+qHwRmKoa9AWyJuh7jxqShp69wjobVzjB+B8SgcvMH+KA==","signatures":[{"sig":"MEUCIAhwWqKLJowyTmuF6attRPm7g/siGZG9mVtSOr37hTFmAiEA5iUiKEHZFxwc2k/YzpNzo4wi32Ua7Wnxw5qxA11y+Eo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCT4cyoOwUpKzR08wpBdAgQvgAFDTEXZPpetjY4TeoGVAIgXKB7B53yTupWp6DZJ4gZSm3t/BA/zoooJ85M4vifbYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93425},"type":"commonjs","_from":"file:/Users/rocosen/Documents/GitHub/datanity/outputs/registry-publish-20261105/npm/flashdata-dev-youtube-metadata-0.2.0.tgz","engines":{"node":">=22.18.0"},"exports":{"./package.json":"./package.json"},"_npmUser":{"name":"flashdata-dev","email":"rocosenyy@gmail.com"},"_resolved":"/Users/rocosen/Documents/GitHub/datanity/outputs/registry-publish-20261105/npm/flashdata-dev-youtube-metadata-0.2.0.tgz","_integrity":"sha512-Dn5+P5lL0gAgzfzXQzDXSL+JO/wqeyC4u0qzxrC/Y+qHwRmKoa9AWyJuh7jxqShp69wjobVzjB+B8SgcvMH+KA==","repository":{"url":"git+https://github.com/flashdatadev/flashdata-mcp.git","type":"git","directory":"npm/docs/youtube-metadata"},"_npmVersion":"11.12.1","description":"Read YouTube video details, descriptions, statistics and available chapters. Inspect formats or prepare timestamped chapter navigation. CLI and MCP via the paid FlashData API.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ajv":"8.20.0","axios":"1.20.0","@modelcontextprotocol/sdk":"1.32.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/youtube-metadata_0.2.0_1793896224890_0.06551211686369274","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"_id":"@flashdata-dev/youtube-metadata@0.2.1","bin":{"flashdata-youtube-metadata":"bin/run.js"},"bugs":{"url":"https://github.com/flashdatadev/flashdata-mcp/issues"},"dist":{"shasum":"661206e5c05af6bae98153b7686d1f158325e974","tarball":"https://registry.npmjs.org/@flashdata-dev/youtube-metadata/-/youtube-metadata-0.2.1.tgz","fileCount":27,"integrity":"sha512-z8RUN+BFpt815NmYb50U/DAW6aVxf1bTaacANyCFV+VYIrqxD489qK2Oiiv5FssrXYt68qGleGySHMuUDjYQPg==","signatures":[{"sig":"MEUCIEE7qnMLuQ1Ns1WGWg8l8xuZyIvzDfDLwm0QkGEaUMTAAiEA3bzIsFkEe/9XGOFwx31fyCaxy7WTRMQZQsVlcPQTdBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEje/R6d5mI+s4A/VYJ4gblbZwuKUUs4BJTnOBmJ+XgBAiEAvSf85NOWJUskHDVsKHNTNSP7P1+yEMiOGSELYfe08fM="}],"unpackedSize":92142},"name":"@flashdata-dev/youtube-metadata","type":"commonjs","_from":"file:/Users/rocosen/Documents/FlashData/channels/github-npm-attribution-20261109/release/tasks/flashdata-dev-youtube-metadata-0.2.1.tgz","author":{"name":"FlashData","email":"support@flashdata.dev"},"engines":{"node":">=22.18.0"},"exports":{"./package.json":"./package.json"},"license":"MIT","version":"0.2.1","_npmUser":{"name":"flashdata-dev","email":"rocosenyy@gmail.com"},"homepage":"https://flashdata.dev/docs/sources/youtube_metadata?utm_source=npm&utm_medium=integration&utm_campaign=intent_gtm_2026q4&utm_content=youtube_metadata-task","keywords":["youtube-metadata","youtube-video-chapters","cli","mcp","model-context-protocol","flashdata"],"_resolved":"/Users/rocosen/Documents/FlashData/channels/github-npm-attribution-20261109/release/tasks/flashdata-dev-youtube-metadata-0.2.1.tgz","_integrity":"sha512-z8RUN+BFpt815NmYb50U/DAW6aVxf1bTaacANyCFV+VYIrqxD489qK2Oiiv5FssrXYt68qGleGySHMuUDjYQPg==","repository":{"url":"git+https://github.com/flashdatadev/flashdata-mcp.git","type":"git","directory":"npm/docs/youtube-metadata"},"_npmVersion":"11.12.1","description":"Read YouTube video details, descriptions, statistics and available chapters. Inspect formats or prepare timestamped chapter navigation. CLI and MCP via the paid FlashData API.","directories":{},"maintainers":[{"name":"flashdata-dev","email":"rocosenyy@gmail.com"}],"_nodeVersion":"25.9.0","dependencies":{"ajv":"8.20.0","axios":"1.20.0","@modelcontextprotocol/sdk":"1.32.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/youtube-metadata_0.2.1_1794203432697_0.8936550064989358"}}},"time":{"created":"2026-10-14T14:04:17.143Z","modified":"2026-11-09T05:50:33.001Z","0.0.0-stage":"2026-10-14T14:04:17.143Z","0.1.0":"2026-10-14T14:06:56.081Z","0.1.1":"2026-10-19T08:05:30.632Z","0.1.2":"2026-11-04T04:33:52.210Z","0.2.0":"2026-11-05T16:30:25.054Z","0.2.1":"2026-11-09T05:50:32.786Z"},"bugs":{"url":"https://github.com/flashdatadev/flashdata-mcp/issues"},"author":{"name":"FlashData","email":"support@flashdata.dev"},"license":"MIT","homepage":"https://flashdata.dev/docs/sources/youtube_metadata?utm_source=npm&utm_medium=integration&utm_campaign=intent_gtm_2026q4&utm_content=youtube_metadata-task","keywords":["youtube-metadata","youtube-video-chapters","cli","mcp","model-context-protocol","flashdata"],"repository":{"url":"git+https://github.com/flashdatadev/flashdata-mcp.git","type":"git","directory":"npm/docs/youtube-metadata"},"description":"Read YouTube video details, descriptions, statistics and available chapters. Inspect formats or prepare timestamped chapter navigation. CLI and MCP via the paid FlashData API.","maintainers":[{"name":"flashdata-dev","email":"rocosenyy@gmail.com"}],"readme":"# YouTube Metadata CLI and MCP — FlashData\n\nInspect a known video before deciding whether to fetch its transcript. Available chapter boundaries can become timestamped navigation links for a review or research notebook.\n\n`@flashdata-dev/youtube-metadata` exposes **youtube_metadata** and the supporting reads for that task. It runs locally and calls the FlashData API. Node.js **22.18 or newer** and a FlashData API key with this source enabled are required.\n\n[Inputs, outputs and source documentation](https://flashdata.dev/docs/sources/youtube_metadata?utm_source=npm&utm_medium=integration&utm_campaign=intent_gtm_2026q4&utm_content=youtube_metadata-task) · [Get an API key](https://flashdata.dev/signup?utm_source=npm&utm_medium=integration&utm_campaign=intent_gtm_2026q4&utm_content=youtube_metadata-task) · [Current API pricing](https://flashdata.dev/pricing?utm_source=npm&utm_medium=integration&utm_campaign=intent_gtm_2026q4&utm_content=youtube_metadata-task)\n\n**The MIT software is free to install. FlashData API data calls are paid and consume Credits.** Pricing and job reads are free. MCP client/model fees are separate.\n\n## Run with npx\n\nSet `FLASHDATA_API_KEY` in your shell environment or secret manager. Keep the real value out of chat, committed files and command arguments. These first checks do not submit a data query:\n\n```sh\nnpx --yes @flashdata-dev/youtube-metadata@0.2.1 --help\nnpx --yes @flashdata-dev/youtube-metadata@0.2.1 tools\nnpx --yes @flashdata-dev/youtube-metadata@0.2.1 call get_pricing\n```\n\nSave the following as `query.json`. It uses flat tool arguments; no REST `params` wrapper is needed.\n\n```json\n{\n  \"video_id\": \"dQw4w9WgXcQ\",\n  \"include_formats\": false,\n  \"include_chapters\": true\n}\n```\n\nThis command performs **one paid data request** and writes its response to a file:\n\n```sh\nnpx --yes @flashdata-dev/youtube-metadata@0.2.1 call youtube_metadata --input query.json > result.json\n```\n\nUse `--input -` to read JSON from stdin. For a local project installation, run `npm install @flashdata-dev/youtube-metadata@0.2.1` and use `npx flashdata-youtube-metadata` with the same arguments.\n\n## Turn available chapters into navigation\n\nThe CLI returns `{\"ok\":true,\"tool\":\"...\",\"result\":...}`. Check `ok` and the API/job status before consuming data. Use Python **3.10 or newer**; only the standard library is needed. Save this as `process-result.py` beside `result.json` and run `python3 process-result.py` (Windows: `py -3 process-result.py`). The script reads the saved CLI response; it makes no API call. Missing optional fields in JSON summaries are represented as `null`:\n\n```python\nimport json\nfrom pathlib import Path\n\nresponse = json.loads(Path(\"result.json\").read_text(encoding=\"utf-8\"))\nif not response.get(\"ok\"):\n    raise SystemExit(\"The request failed; inspect the response before retrying.\")\nresult = response[\"result\"]\nif \"job\" in result:\n    status = result[\"job\"][\"status\"]\n    if status != \"completed\":\n        raise SystemExit(f\"Job status: {status}. Inspect this job; do not resubmit.\")\n    result = result[\"output\"]\nif result.get(\"status\") not in (None, \"done\"):\n    raise SystemExit(\"No completed data yet. Read the existing job before processing.\")\nif not result.get(\"results\"):\n    raise SystemExit(\"No result record was returned.\")\ndata = result[\"results\"][0]\n\nimport math\n\nchapters = [{\n    \"title\": chapter.get(\"title\"), \"start\": chapter[\"start_time\"],\n    \"end\": chapter.get(\"end_time\"),\n    \"url\": (f\"https://www.youtube.com/watch?v={data['videoId']}\"\n            f\"&t={math.floor(chapter['start_time'])}s\"),\n} for chapter in data.get(\"chapters\") or []]\nprint(json.dumps(chapters, ensure_ascii=False, indent=2))\n```\n\nSelected fields from a **representative fixture**, not a live response or a guarantee that every field/result will be present. This is the content inside the CLI's `result` property:\n\n```json\n{\n  \"source\": \"youtube_metadata\",\n  \"status\": \"done\",\n  \"results\": [\n    {\n      \"videoId\": \"dQw4w9WgXcQ\",\n      \"title\": \"Example video\",\n      \"channel\": \"Example\",\n      \"channelId\": \"channel-one\",\n      \"channelUrl\": \"https://www.youtube.com/@Example\",\n      \"viewCount\": 100,\n      \"duration\": 90,\n      \"chapters\": [\n        {\n          \"title\": \"Introduction\",\n          \"start_time\": 0,\n          \"end_time\": 30\n        }\n      ],\n      \"description\": \"Example description\"\n    }\n  ],\n  \"created_at\": \"2026-10-12T00:00:00Z\",\n  \"http_status\": 200,\n  \"request_id\": \"fixture-request\"\n}\n```\n\nFields and chapters may be absent. Metadata does not include a transcript; transcript retrieval is a separate paid call.\n\n## Parameters\n\n| Parameter | Type | Required | Default and constraints |\n| --- | --- | --- | --- |\n| `video_id` | string | Yes | Pattern: `^[A-Za-z0-9_-]{11}$`. |\n| `include_formats` | boolean | No | Default: `true`. |\n| `include_chapters` | boolean | No | Default: `true`. |\n| `mode` | string | No | Default: `\"realtime\"`. Allowed: `realtime`, `async`. |\n\nThe package includes `schema.json` with the complete nested schema and `examples/query.json`. The `tools` command also returns the current schemas permitted by your key. Fields supplied by the remote source may be missing; preserve original values and source links.\n\n## Jobs, errors and billing\n\nFor a longer-running query, set `mode` to `\"async\"`. Save the returned `result.id`, create `job.json` with that job ID, and read it without submitting again:\n\n```json\n{\"job_id\":\"job_REPLACE_WITH_RETURNED_ID\"}\n```\n\n```sh\nnpx --yes @flashdata-dev/youtube-metadata@0.2.1 call get_job --input job.json > result.json\n```\n\n`pending` or `processing` means wait and read the same job later; `completed` provides the original JSON under `result.output`. The package never polls or retries paid submissions automatically. A timeout or lost response may still represent charged work: check Jobs before another submission. Each submitted query is charged at this source’s current rate; the number of returned records is not the request count.\n\nCLI exit codes are 0 for a successful operation, 1 for an API/tool failure and 2 for invalid local input/configuration. Input is limited to 256 KiB and each API response to 4 MiB. CLI outputs complete JSON. Async JSON results have a 24-hour availability window.\n\n## Connect an MCP client\n\nThis same package starts a persistent stdio server with the `mcp` subcommand:\n\n```json\n{\n  \"mcpServers\": {\n    \"youtube-metadata\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"--yes\",\n        \"@flashdata-dev/youtube-metadata@0.2.1\",\n        \"mcp\"\n      ],\n      \"env\": {\n        \"FLASHDATA_API_KEY\": \"YOUR_API_KEY\"\n      }\n    }\n  }\n}\n```\n\nUse `npx.cmd` on Windows if your client requires it. Enter your own key through protected client settings. The four tools are `youtube_metadata`, `get_pricing`, `get_job` and `get_result`; the source is fixed, and job reads reject jobs belonging to other sources. API key permissions are rechecked on each operation.\n\nMCP responses longer than 16,000 UTF-16 code units use `result_id`, `chunk` and `next_offset`. Read the remaining chunks with `get_result` in the same running server, concatenate them in order, and parse only `encoding: \"json\"`. Other encodings are Markdown or plain-text documents. The process retains at most four results for ten minutes. The one-shot CLI has no `get_result` command because it returns the whole response.\n\nOptional environment settings are `FLASHDATA_REQUEST_TIMEOUT_MS` (1000–120000, default 65000), `FLASHDATA_DATA_API_URL` and `FLASHDATA_MANAGEMENT_API_URL`. Custom URLs must be trusted HTTPS origins; loopback HTTP is accepted for local tests. The package does not load `.env` files automatically.\n\nSupport: [support@flashdata.dev](mailto:support@flashdata.dev) · [Source and issue tracker](https://github.com/flashdatadev/flashdata-mcp) · [FlashData terms](https://flashdata.dev/legal/terms) · [Privacy](https://flashdata.dev/legal/privacy). This is an independent FlashData integration, not an official Google or YouTube package.\n\n## MCP presentation\n\nTask MCP 0.2.0 default to Markdown text while retaining original\nfields in `structuredContent`. Use `response_format: \"text\"` or `\"json\"` for another\npresentation; `get_result` inherits the original format. Earlier published\nversions return JSON and do not accept this argument: check the running tool\nschema before using it. CLI calls default to JSON; explicit text formats return\na document string in the JSON `result` field. Formatting never repeats the query.\n","readmeFilename":"README.md"}