appsgolem-mcp
appsgolem-mcp (Node / TypeScript)
Ein MCP-Server für die AppsGolem-YouTube-Cutter-API. Er ermöglicht es einem KI-Agenten (Claude Desktop, Claude Code, Cursor, …), Clips aus YouTube-Videos zu schneiden – in jedem Format, das der Web-Cutter unterstützt – und einen direkten Download-Link zurückzubekommen. Die REST-Logik lebt in einem kleinen, dependency-armen Client (src/client.ts); src/server.ts ist die dünne MCP-Tool-Schicht darüber.
Voraussetzungen
Node.js >= 18 (nutzt das globale
fetch).Ein AppsGolem-API-Schlüssel (
ag_live_…) – erstelle einen in deinem Dashboard unterhttps://appsgolem.com/api-billing/. Guthaben wird im Voraus bezahlt; kaufe dort ein Paket oder ein Abo.
Related MCP server: youtube-mcp
Installation / Verbindung (keine manuelle Installation)
npx holt und startet den Server bei Bedarf – nichts muss global installiert werden.
Claude Desktop / Cursor – füge ihn zur MCP-Konfiguration des Clients hinzu (z. B. claude_desktop_config.json):
{
"mcpServers": {
"appsgolem": {
"command": "npx",
"args": ["-y", "appsgolem-mcp"],
"env": { "APPSGOLEM_API_KEY": "ag_live_…" }
}
}
}Claude Code – ein Befehl:
claude mcp add appsgolem -e APPSGOLEM_API_KEY=ag_live_… -- npx -y appsgolem-mcpDer Server spricht MCP über stdio (den Transport, den diese Clients verwenden). Ein fehlender APPSGOLEM_API_KEY ist beim Start nicht fatal – der Server startet trotzdem und bewirbt seine Tools; jeder Aufruf gibt dann einen klaren config_error zurück, der dich auffordert, den Schlüssel zu setzen.
Konfiguration
Env-Variable | Erforderlich | Standard | Hinweise |
| ja | – | Dein |
| nein |
| Überschreiben für Self-Hosting / Entwicklung. |
Preisgestaltung
1 erstellter Clip = 1 Guthaben. 2160p (4K) = 4 Guthaben pro Clip – außer audio_only, das bei 1 bleibt. Eine Quelle, die länger als 2 h ist, addiert +1 einmal pro Auftrag, aber nur, wenn ihre Dauer bekannt ist (der Aufschlag entfällt, wenn die Analyse die Dauer nicht ermitteln kann). Ein Stapel/Zusammenschnitt von N Clips kostet N pro Clip. Fehlgeschlagene Schnitte werden nie berechnet.
Tools
Der Server stellt drei Tools bereit. Ein Aufruf, der die MCP-Eingabevalidierung besteht, gibt ein strukturiertes Ergebnis zurück – das eigene JSON der API bei Erfolg oder { "error": … } bei einem Handler-/API-Fehler – und löst niemals einen Fehler auf Protokollebene aus, sodass ein Agent immer ein brauchbares Objekt erhält. (Ungültige Tool-Argumente werden vom MCP-SDK vor dem Handler abgelehnt, als reines isError-Ergebnis.)
1. cut_youtube_video
Schneidet einen Clip (oder einen Stapel von Clips) aus einem YouTube-Video. Standardmäßig wartet es, bis der Clip erstellt ist, und gibt seinen Status zurück (einschließlich download_url, sobald ein Download-Token verfügbar ist); setze wait: false, um sofort zu senden und das aktuelle Ergebnis zu erhalten (sein Zustand ist nach dem Senden normalerweise queued).
Parameter
Name | Typ | Standard | Hinweise |
| string | – | Erforderlich. YouTube-URL (watch / share / |
| string | – | Clip-Start: |
| string | – | Clip-Ende, gleiche Formate (≤ 300 h). Weglassen, wenn |
| string |
|
|
| string |
|
|
| string | – | Das Ausgabeformat für |
| string | – | Bitrate für verlustbehaftetes Audio |
| boolean |
| Stream-Kopie (≈10× schneller, an Keyframes ausgerichtet); nur |
| number |
| Wiedergabegeschwindigkeit |
| integer |
| Abtastintervall für |
| boolean |
|
|
| boolean |
|
|
| array | – | Ein Array aus 1–10 |
| boolean |
| Bei 2+ |
| string | – | Ein stabiler Schlüssel (≤ 200 Zeichen), damit ein wiederholter Request denselben Auftrag wiederverwendet (wird als |
| boolean |
| Wartet, bis fertig, bis zum |
| integer |
| Polling-Deadline in Sekunden (Standard 300). Sie begrenzt nur das Polling – die ursprüngliche Übermittlung und ein Statusabruf (jeweils bis zu 30 s Request-Timeout) können die Gesamtzeit verlängern. |
Rückgabe (wait: true, Standard) – der erzeugte Auftragsstatus. download_url ist vorhanden, sobald ein Download-Token verfügbar ist; falls noch nicht, erneut abfragen:
{
"id": "e48db1a2-1c3d-4e5f-8a9b-0c1d2e3f4a5b",
"state": "produced",
"credits_reserved": 1,
"created_at": "2026-08-22T12:00:00+00:00",
"download_url": "https://appsgolem.com/v1/download/…/clip.mp4"
}Rückgabe (wait: false) – der Auftrag sofort, mit seinem aktuellen Zustand (nach dem Senden normalerweise queued) und noch ohne download_url; frage get_cut_status mit der id ab (oder rufe poll_url auf):
{
"id": "e48db1a2-1c3d-4e5f-8a9b-0c1d2e3f4a5b",
"state": "queued",
"credits_reserved": 1,
"poll_url": "/v1/cuts/e48db1a2-1c3d-4e5f-8a9b-0c1d2e3f4a5b"
}Wenn das Warten abläuft, bevor der Clip fertig ist, enthält das Ergebnis "still_processing": true und die Auftrags-id – frage get_cut_status mit dieser id ab. Wenn der Auftrag einen endgültigen Fehler erreicht, lautet das Ergebnis { "error": "cut_failed", "state": "failed" | "refunded", "id": … } (und es wird kein Guthaben berechnet).
2. get_cut_status
Überprüft einen Schneideauftrag anhand seiner id. Verwende es, um einen Auftrag abzufragen, der mit cut_youtube_video(wait=false) gestartet wurde oder dessen Zeit abgelaufen ist.
Name | Typ | Hinweise |
| string | Erforderlich. Die Auftrags-id (eine UUID), die von |
Rückgabe – der Zustand des Auftrags; sobald er erstellt/geliefert ist, enthält er außerdem eine download_url, wenn ein Download-Token verfügbar ist (sonst erneut abfragen):
{ "id": "e48db1a2-…", "state": "queued", "credits_reserved": 1, "created_at": "…" }Zustände durchlaufen accepted → queued → produced → delivered oder bei einem Fehler failed → refunded.
3. get_account_balance
Gibt das ausgabefähige Guthaben des API-Kontos und das aktuelle Stundenlimit zurück. Keine Parameter.
Rückgabe
{ "balance": 412, "hourly_cap": 60 }Modi
| Ausgabe | Wichtige Optionen |
| Videodatei ohne Wasserzeichen – normalerweise MP4; |
|
| mp3 / m4a / wav / flac |
|
| Video + MP3 zusammen, als ZIP ( |
|
| Video ohne Tonspur – normalerweise MP4; |
|
| Hochformat 9:16 – KI-Smart-Crop, wenn anwendbar, sonst ein Letterbox-Blur-Fallback, dessen genaues Seitenverhältnis von der Quelle abhängt (Shorts / Reels / TikTok) |
|
| Animiertes GIF (≤ 5 min; kein Multi-Clip) |
|
| JPG-Standbilder |
|
Beispielaufforderungen
Da der Agent die Parameter aus deiner Anfrage auswählt, steuerst du ihn in natürlicher Sprache:
„Schneide 0:30 bis 1:15 aus https://youtu.be/dQw4w9WgXcQ in 1080p." →
cut_youtube_video(url, start="0:30", end="1:15")„Hol mir den Ton dieses Videos von 2:00 bis 5:00 als MP3." →
mode="audio_only", audio_format="mp3"„Mach ein vertikales Short aus dem Highlight 10:00–10:45." →
mode="short", start="10:00", end="10:45"„Mach aus 0:05–0:12 ein GIF." →
mode="gif"„Extrahiere ein Kontaktbogen mit Frames alle 5 Sekunden von 1:00 bis 2:00." →
mode="frames", interval_ms=5000, sheet=true„Füge 0:10–0:20 und 1:00–1:10 zu einem Clip zusammen." →
clips=[{start:"0:10",end:"0:20"},{start:"1:00",end:"1:10"}], stitch=true„Mach einen schnellen Stream-Copy-Schnitt von 0:00–0:30." →
fast=true„Wie viele API-Guthaben habe ich noch?" →
get_account_balance()
Ergebnis- und Fehlerformen
Jedes Ergebnis eines Handlers ist ein einfaches Objekt (MCP-Argumentvalidierungsfehler sind die Ausnahme – siehe Hinweis zu den Tools oben). Bei einem Fehler enthält das Objekt einen error-Code (der Tool-Aufruf gelingt trotzdem):
| Wann |
|
|
| Der Schlüssel wurde abgelehnt (401). |
|
|
| Kein solcher Auftrag für dieses Konto (404). |
| Der Auftrag hat den Status |
| Verbindungs-/Transportfehler oder Anforderungs-Timeout. |
| Die konfigurierte API-Basis/der konfigurierte API-Pfad konnte nicht zu einer URL zusammengesetzt werden. |
| Eine ≥400-Antwort, deren JSON-Body kein |
| Eine Erfolgsantwort, deren Body kein JSON-Objekt ist (Array/Skalar/null), oder — mit |
API-Fehler (z. B. Validierungs-400, Rate-Limit-429) werden als eigener Fehler-Body der API plus ein status-Feld zurückgegeben; eine 429 enthält außerdem retry_after (Sekunden), wenn der Server Retry-After sendet, damit ein Agent eine Pause einlegen kann.
Eine relative download_url (die API gibt einen Pfad zurück) wird nur dann zu einer vollständigen URL gegen die konfigurierte API-Basis aufgelöst, wenn sie auf dieser Origin bleibt; bereits absolute URLs und Verweise außerhalb der Origin bleiben unverändert.
Entwicklung
npm install
npm run build # tsc -> dist/
npm test # builds, then runs node --test (no network)
npm start # run the stdio server locally (key needed for calls, not startup)Veröffentlichung
npm publish (aus diesem Verzeichnis) macht npx appsgolem-mcp für alle funktionsfähig. Das prepare-Skript erstellt dist/ automatisch bei Installation/Veröffentlichung.
Available Tools
3 toolscut_youtube_videoCut a YouTube videoA
Cut a clip (or clips) from a YouTube video and return its download URL. Submits a cut job to AppsGolem and (by default) polls until it's produced, then returns the produced status — which includes a download_url once a download token is ready. Pricing: 1 credit per produced clip (4K = 4/clip, except audio_only which stays 1; a known source duration > 2h adds +1 once); a batch/stitch of N clips costs N per-clip. Failed cuts are never billed. On a wait-timeout the result has still_processing=true; poll get_cut_status with the returned id.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Clip end as "SS"/"MM:SS"/"HH:MM:SS" (≤300h). Omit when passing clips. | |
| url | Yes | A YouTube video URL (watch/share/youtu.be — playlists rejected). | |
| fast | No | Stream-copy (≈10× faster, keyframe-aligned); video/nosound/both only. Mutually exclusive with a non-1× speed — fast wins and speed is forced to 1.0. | |
| mode | No | One of "video" (video file, default; MP4 normally, source container e.g. WebM in fast mode), "audio_only" (mp3/m4a/wav/flac), "both" (video + MP3 zip), "nosound" (video, no audio), "short" (portrait 9:16; AI smart-crop when applicable, else letterbox-blur with source-dependent aspect), "gif" (animated GIF, ≤5 min), "frames" (JPG stills). | video |
| wait | No | Poll until ready (default) up to the timeout_seconds polling deadline. | |
| clips | No | A non-empty list of 1–10 {start,end} ranges INSTEAD of start/end. | |
| sheet | No | Frames — a single contact-sheet JPG (2..80 frames, single clip); disables burn_ts. | |
| speed | No | Playback speed 0.5/1.0/1.25/1.5/2.0; video/nosound/both/audio_only. | |
| start | No | Clip start as "SS"/"MM:SS"/"HH:MM:SS" (≤300h). Omit when passing clips. | |
| stitch | No | With 2+ clips, join them into one file (else a zip of clips); ignored for a single clip; video/audio_only/both/short/nosound only. | |
| bitrate | No | Lossy-audio bitrate "320"(default)/"256"/"192"/"128" — MP3/M4A in audio_only, MP3 in both; ignored for wav/flac. | |
| burn_ts | No | Frames — burn the source timestamp onto each JPG. | |
| resolution | No | 144p/240p/360p/480p/720p/1080p (default)/1440p/2160p (4K; total cut ≤60 min). | 1080p |
| interval_ms | No | Frames sampling interval — 100/500/1000/2000(default)/5000/10000; non-sheet extraction is capped at 1800 JPGs total across all clips. | |
| audio_format | No | audio_only output format — "mp3"(default)/"m4a"/"wav"/"flac". both always produces MP3. | |
| idempotency_key | No | A stable key (≤200 chars) so a retried request reuses the same job. | |
| timeout_seconds | No | Polling deadline in seconds when wait=true (default 300); submission + one in-flight status request can extend total wall-clock. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so thoroughly: it discloses asynchronous job submission, default polling, wait-timeout semantics (still_processing=true), the need to poll get_cut_status with the returned id, and detailed billing rules including no charge on failure. This is far more transparent than a simple 'cuts a video' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences deliver purpose, process, return value, pricing, and timeout behavior with no filler. Every sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 17 parameters and no output schema, the description covers all operational essentials: what is returned, how the async job behaves, what to do on timeout, and cost/failure semantics. The fully-covered schema handles parameter-level details, so nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 17 parameters are already documented in detail. The description adds operational context around job lifecycle and pricing but does not add per-parameter meaning beyond what the schema states, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Cut a clip (or clips) from a YouTube video and return its download URL.' This clearly distinguishes it from siblings get_cut_status (polling job status) and get_account_balance (billing). The additional detail about submitting a cut job and returning produced status refines rather than obscures the core purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: the tool submits a cut job, polls by default, and explicitly directs the agent to get_cut_status when a wait-timeout occurs. It does not fully enumerate when to avoid this tool or mention get_account_balance, but the key alternative behavior is explicitly covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_balanceAccount balanceA
Return the API account's spendable credit balance and hourly cap.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context by specifying 'spendable' credit and 'hourly cap', but doesn't explicitly confirm the call is side-effect-free, discuss error scenarios, or note whether it hits an external service. For a no-parameter getter this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that names the verb and both return values with zero wasted words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description covers the essential ground: what is returned and for whom. The only minor omission is specifics about the return format/units of the balance, but given the tool's simplicity and the clear sibling context, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters, baseline is 4. The description does clarify that the balance is for 'the API account' (not a passed-in user), which adds meaningful semantic context about whose balance this is. The schema is empty so there is nothing else to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and names the exact resource ('API account's spendable credit balance and hourly cap'). It clearly distinguishes itself from the sibling tools (cut_youtube_video, get_cut_status), which are entirely different domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage through context—it's the only read-only account-balance tool among the siblings. However, it never explicitly explains when to choose this over alternatives or mentions prerequisites like API key configuration. The differentiation from siblings is not explicit but is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cut_statusCheck a cut jobA
Check a cut job's status by its id. Returns the job's state (accepted / queued / produced / delivered / failed / refunded) and, once produced/delivered, a download_url when a download token is available. Use this to poll a job started with cut_youtube_video(wait=false) or one that timed out.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job id (a UUID) returned by cut_youtube_video. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the return states and the conditional download_url, which is good. However, it doesn't mention potential rate limits, error handling, or whether the job status is final, but for a simple status check this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the primary purpose, and includes necessary details without fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple status-check tool with one parameter and no output schema, the description is complete. It covers the states, the download_url condition, and the usage context. Minor gaps like error handling are not critical for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter is well-described in the schema. The description adds context by explaining the job_id is returned by cut_youtube_video, which is helpful but not essential beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks a cut job's status by its id, lists the possible states, and mentions the download_url condition. It distinguishes itself from siblings by referencing cut_youtube_video and the polling use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: to poll a job started with cut_youtube_video(wait=false) or one that timed out. This provides clear context and differentiates from the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.2- Changed
cut_youtube_video21 fields changed- removed
Input schema / properties / audio_format / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / audio_format / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / bitrate / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / bitrate / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / burn_ts / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / burn_ts / typeAdded value: +[ + "boolean", + "null" +] - changed
Input schema / properties / clips / anyOfPrevious value: -[ - { - "items": { - "properties": { - "end": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "start": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "properties": { + "end": { + "type": [ + "string", + "null" + ] + }, + "start": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / end / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / end / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / fast / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / fast / typeAdded value: +[ + "boolean", + "null" +] - removed
Input schema / properties / idempotency_key / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / idempotency_key / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / sheet / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / sheet / typeAdded value: +[ + "boolean", + "null" +] - removed
Input schema / properties / speed / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Input schema / properties / speed / typeAdded value: +[ + "number", + "null" +] - removed
Input schema / properties / start / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Input schema / properties / start / typeAdded value: +[ + "string", + "null" +] - removed
Input schema / properties / stitch / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Input schema / properties / stitch / typeAdded value: +[ + "boolean", + "null" +]
3 tool updates
v0.1.0- First observed
cut_youtube_video - First observed
get_account_balance - First observed
get_cut_status
TDQS
Scored across 3 tools
Each tool targets a distinct concern: submitting a cut job, polling job status, and checking account balance. There is no overlapping purpose or ambiguity between them.
All tool names follow a clear verb_noun pattern in snake_case: cut_youtube_video, get_cut_status, get_account_balance. The verbs are specific and readable, with no mixed naming conventions.
Three tools is minimal but appropriate for a focused YouTube clipping service. The core operations—submit, poll, and check credit—are covered without redundant tools.
The core workflow is complete: create a cut, retrieve its status/download URL, and verify account balance. Minor gaps include no cancel-job or list-jobs operation, but these are not essential for the stated purpose.
Maintenance
Related MCP Connectors
Create AI-powered short-form video clips from YouTube videos. Supports webhook callbacks.
Turn long videos into short, captioned viral clips from your AI assistant. 28 tools, OAuth.
YouTube for AI agents: transcripts, comments, video stats, channel monitor, Shorts captions.
YouTube transcripts, search, channels, playlists and bulk transcript jobs for AI agents. 14 tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to fetch YouTube video transcripts with precise timestamps, multi-language support, and time-range filtering.31MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to fetch transcripts, metadata, and download videos/audio from YouTube without API keys.33MIT
- AlicenseAqualityDmaintenanceEnables AI agents to search, watch, summarize, clip, and extract transcripts from YouTube videos, all without needing an API key or leaving the chat.927 npm61Apache 2.0

fetchworks-mcpofficial
AlicenseAqualityBmaintenanceEnables AI agents to retrieve YouTube transcripts from individual videos, channels, and search results, supporting multiple output formats such as plain text, SRT, and VTT.337 npmMIT