apify-utils
apify-utils-mcp
Cuatro pequeñas utilidades tras un servidor MCP: texto, tablas y OCR de PDF, URLs y archivos de miniaturas de YouTube, marcadores y clasificaciones deportivas y tenis ATP/WTA.
Cada herramienta es un cliente ligero sobre un Actor público de Apify. Las ejecuciones se facturan por Apify a tu propia cuenta — consulta Precios. Este servidor nunca hace de proxy en una llamada, nunca ve tu token ni tus resultados, y nunca paga una ejecución en tu nombre.
Install
Requiere uv y un token gratuito de Apify.
{
"mcpServers": {
"apify-utils": {
"command": "uvx",
"args": ["--from", "git+https://github.com/moonie0201/apify-utils-mcp", "apify-utils-mcp"],
"env": { "APIFY_TOKEN": "apify_api_..." }
}
}
}Cliente | Dónde va ese JSON |
Claude Desktop |
|
Cursor |
|
Claude Code |
|
Related MCP server: ParseJet - Universal File & URL Parser
Tools
Herramienta | Qué hace | Límite de gasto | Coste |
| Texto, markdown y tablas con líneas por página, por documento, o como fragmentos RAG con desplazamientos de página y carácter. OCR opcional de Tesseract para páginas sin capa de texto. |
| $0.0003/página, $0.003/página OCR |
| URLs de miniaturas (jpg y webp) para URLs de vídeo o IDs simples, con disponibilidad por tamaño, bytes y etag de una sonda HEAD, además del título y el canal. Opcionalmente guarda los archivos en tu propio almacén de clave-valor. |
| $0.005/vídeo |
| Marcadores, calendarios, clasificaciones, directorios de equipos y resúmenes de partidos en 33 ligas. |
| $0.002/partido · $0.001/fila de clasificación o de equipo · $0.004/resumen |
| Partidos ATP y WTA con puntuaciones por set, ronda, cabezas de serie, país, pista y texto del resultado. |
| $0.002/partido |
| Cada herramienta, el Actor que hay detrás, su precio exacto por evento y su argumento de límite de gasto. | — | gratis, sin red |
Los filtros (page_range, teams, status, max_pages_per_pdf) se aplican antes de la facturación, así que una consulta acotada es barata en lugar de una respuesta grande que filtres después. El argumento de límite de gasto es obligatorio en todas las herramientas de pago — no hay forma de iniciar una ejecución sin límite desde aquí.
Precios
Ningún Actor de aquí cobra una tarifa de inicio, así que una ejecución que falla o no encuentra nada no cuesta nada.
Herramienta | Evento | Precio | Gratis, siempre |
| página | $0.0003 | filas de resumen de documento, filas de error, páginas fuera de |
| página OCR | $0.003 | páginas solo de imagen cuando |
| vídeo | $0.005 |
|
| partido | $0.002 |
|
| fila | $0.001 | — |
| resumen | $0.004 | — |
Ejemplos prácticos: una factura de 2 páginas cuesta $0.0006, un manual de 100 páginas $0.03, 20 páginas escaneadas con OCR $0.06, 100 vídeos $0.50, la jornada de hoy de la NBA con 8 partidos $0.016, 500 resúmenes de partidos $2.00.
La facturación recae en la cuenta de Apify detrás de tu propio APIFY_TOKEN. El argumento de límite de gasto no es solo documentación: el servidor lo convierte en el maxTotalChargeUsd de la ejecución, de modo que Apify aplica el techo en dólares por sí mismo y detiene la ejecución cuando se alcanza. Como las páginas OCR consumen el mismo presupuesto de max_pages a diez veces el precio, max_pages=1000 significa $0.30 con ocr desactivado y $3.00 con él activado, y el techo enviado a Apify sigue el que corresponda. Apify rechaza un techo inferior al mínimo del propio Actor ($0.05 para extract_pdf, $0.10 para el resto), así que las ejecuciones muy pequeñas piden ese suelo — un techo, no un cargo: un PDF de dos páginas sigue costando $0.0006.
La ejecución también se inicia con timeout=290, dentro de la ventana síncrona de 300 s de Apify, de modo que una ejecución nunca puede sobrevivir a la llamada y seguir cobrando en segundo plano.
Datos deportivos: lee esto primero
No oficial. No afiliado a, respaldado por o patrocinado por ESPN, The Walt Disney Company ni ninguna liga. Los datos provienen de los feeds JSON no autenticados que usa la propia espn.com; no están documentados, los Términos de uso de Disney para espn.com restringen el acceso automatizado, y ESPN puede cambiar o bloquear el acceso sin previo aviso — si eso ocurre, el Actor falla la ejecución y no cobra nada, y nosotros dejamos de operar en un plazo de 48 h desde cualquier aviso de ESPN o Disney. Los marcadores, calendarios y clasificaciones son hechos; los artículos, vídeos e imágenes de ESPN son contenido protegido por derechos de autor de ESPN y no se incluyen. Las cuotas son la línea previa al partido de una casa de apuestas mostrada en ESPN, solo para información — no para apostar. Los nombres y logotipos de equipos y ligas son marcas comerciales de sus propietarios. Solicitudes de retirada: TAKEDOWN.md — atendidas en 48 h.
include_odds está desactivado por defecto aquí, a diferencia del Actor. Actívalo solo si quieres que la línea previa al partido se copie en la fila. timezone por defecto es UTC y solo afecta al campo dateLocal; las fechas de los feeds son UTC en cualquier caso.
Disponibilidad. Los cuatro Actors son públicos: acotr_moonie/pdf-text-extractor, acotr_moonie/youtube-thumbnail-downloader, acotr_moonie/espn-sports-scraper y acotr_moonie/tennis-scores-scraper (los dos listados deportivos desde 2026-08-28). Cada herramienta se verificó de extremo a extremo contra su Actor en vivo.
leagues acepta: nfl, ncaaf, nba, wnba, ncaab, ncaaw, mlb, nhl, mls, nwsl, epl, championship, fa-cup, la-liga, serie-a, bundesliga, ligue-1, eredivisie, primeira-liga, liga-mx, saudi-pro-league, wsl, ucl, uel, uecl, nations-league, world-cup, copa-libertadores, atp, wta, pga, f1, ufc — o cualquier ruta ESPN sin procesar, como soccer/bra.1, que devuelve una fila de error gratuita si no se conoce.
YouTube
Solo referencia nominativa: esto lee la CDN pública de miniaturas i.ytimg.com y el endpoint público oEmbed de YouTube. No afiliado a, respaldado por o patrocinado por YouTube o Google; el nombre y el logotipo de YouTube son marcas comerciales de Google LLC. Las miniaturas son propiedad intelectual del subidor o de sus licenciantes — la herramienta las recupera, no te concede una licencia para republicarlas.
Lo que no hará
No se infiere nada. Cuando un valor no se puede determinar, el campo es
null.extract_pdflee los PDF a los que lo apuntes con una GET simple, sin proxy y sin inicio de sesión. Tú eres responsable de los términos y las reglas de robots del sitio que los aloja. Los PDF cuyo propietario desactivó la copia de texto siempre se omiten, con una fila de error gratuita y sin anulación.Los encabezados y párrafos de Markdown son heurísticas basadas en el tamaño de fuente y los espacios entre líneas, no un modelo de maquetación. La extracción de tablas encuentra tablas dibujadas con líneas; las tablas sin bordes permanecen en el texto.
youtube_thumbnailsno expande URLs de listas de reproducción ni de canales, y no descarga vídeo.Las herramientas deportivas no incluyen noticias, artículos, plantillas, lesiones, biografías de atletas, jugada a jugada ni vídeo, y tampoco tenis de la ITF ni Challenger.
Desarrollo
uv venv && uv pip install -e ".[dev]"
python -m pytest tests -q # offline: httpx is monkeypatched, nothing is billed
ruff check . && ruff format --check .
python -m apify_utils_mcp --list-toolsEnlaces
Código fuente del Actor, MIT: https://github.com/moonie0201/apify-utils
Política de privacidad: https://github.com/moonie0201/apify-utils/blob/main/PRIVACY.md
Política de retirada: https://github.com/moonie0201/apify-utils/blob/main/TAKEDOWN.md
Divulgación
Yo construí esto, y los cuatro Actors que hay detrás son de pago. El código del adaptador es abierto y tiene licencia MIT.
Available Tools
5 toolsextract_pdfA
Extract text, markdown and ruled tables from PDFs at a URL, with optional Tesseract OCR for scanned pages. output_mode 'page' gives one row per page, 'document' one row per PDF with a pages array, 'chunk' gives RAG chunks of chunk_size characters with page and character offsets. page_range ('1-5', '8', '12-') and max_pages_per_pdf keep unwanted pages from ever being charged. Billed to your own Apify account at $0.0003 per delivered page and $0.003 per OCR page; max_pages is the hard spend cap for the whole run (1000 pages = $0.30, or $3.00 if ocr is on — OCR pages spend the same max_pages budget at 10x the price). That ceiling is also sent to Apify as the run's maximum total charge. Document summary rows, error rows and pages outside the range are free.
| Name | Required | Description | Default |
|---|---|---|---|
| ocr | No | ||
| urls | Yes | ||
| max_pages | Yes | ||
| chunk_size | No | ||
| page_range | No | ||
| output_mode | No | page | |
| chunk_overlap | No | ||
| extract_tables | No | ||
| include_markdown | No | ||
| max_pages_per_pdf | No | ||
| max_ocr_pages_per_pdf | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and meets it: it reveals the two-tier billing model ($0.0003/page, $0.003/OCR page), the hard spend-cap semantics of max_pages with a concrete example (1000 pages = $0.30 or $3.00 with OCR), that the ceiling is forwarded to Apify as the run's maximum charge, and that summary/error/out-of-range rows are free. This is exactly the behavioral context an agent needs before spending money.
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?
Purpose is front-loaded in the first sentence, then modes, cost-protection, and billing follow in logical order. The description is long, but every sentence carries non-obvious information — the pricing paragraph is essential for a paid tool and would be risky to trim. There is zero filler.
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 an 11-parameter paid tool with no annotations, the description covers the high-risk dimensions thoroughly: output shape per mode, page-range formats, the hard spend cap, and what is free vs billed. An output schema exists so return values need not be detailed, and the unmentioned parameters are low-risk booleans or bounded integers with obvious names.
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 0%, so the description compensates. It adds real meaning to the semantically complex parameters: output_mode (return shape per mode), page_range (explicit format examples '1-5', '8', '12-'), max_pages (spend cap), and max_pages_per_pdf (charge avoidance). A few parameters (chunk_overlap, extract_tables, include_markdown, max_ocr_pages_per_pdf) are left to their names and defaults, which are largely self-explanatory.
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 first sentence states a specific verb and resource: 'Extract text, markdown and ruled tables from PDFs at a URL', plus an optional capability (Tesseract OCR for scanned pages). The scope is unambiguous and naturally differentiates it from the unrelated siblings (youtube_thumbnails, sports_scores, tennis_scores, list_supported_utilities).
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 strong contextual guidance: when to enable OCR (scanned pages), how output_mode shapes the result ('page' one row per page, 'chunk' RAG chunks), and when page_range/max_pages_per_pdf apply (avoiding charges for unwanted pages). It stops short of explicit when-not-to-use statements, but no sibling tool competes with PDF extraction, so exclusions are not needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_supported_utilitiesA
List the utilities this server exposes, the Apify Actor behind each, the exact per-event price billed to your own Apify account, which argument is the hard spend cap, and whether the Actor is reachable yet. Also returns the league keys sports_scores accepts. No network, no cost.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 explicitly states 'No network, no cost,' which tells the agent this tool has no side effects and will not trigger charges, an important safety property for an agent choosing which tool to invoke. It also clarifies that the tool reports reachability and pricing rather than performing those operations.
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 two sentences with no filler. The first sentence front-loads the purpose and the full list of returned details; the second adds the league-keys note and the crucial no-cost/no-network guarantee. Every clause 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?
This is a zero-parameter introspection tool with an output schema, so the description only needs to explain what the tool lists and any behavioral caveats. It covers the utilities, actors, pricing, spend cap, reachability, league keys, and the fact that it is free and offline. Nothing needed for correct invocation 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?
The tool has zero parameters, so there are no parameter semantics for the description to clarify. The baseline of 4 applies because the description successfully explains what the tool does and what it returns, leaving no ambiguity about invocation.
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 names a specific verb ('List') and resource ('utilities this server exposes'), then enumerates exactly what will be returned: the Apify Actor, per-event price, hard spend cap argument, reachability, and league keys. This clearly distinguishes it from the sibling tools, which are the actual utilities being listed.
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 makes the tool's role as a discovery/introspection endpoint clear: it lists server utilities and key details such as cost and reachability. It also notes that league keys for sports_scores are returned here, giving a concrete reason to use this tool. It does not explicitly state when not to use it or compare against alternatives, but the context is strong enough for an agent to infer when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sports_scoresA
Scores, schedules, standings, team directories and game summaries for 33 leagues — NFL, NBA, WNBA, MLB, NHL, NCAA football and basketball, MLS, NWSL, 18 more soccer competitions, ATP and WTA tennis, PGA Tour, Formula 1 and UFC. mode: scoreboard (games by date_from/date_to), schedule (a team's season), standings, teams, or summary (box-score rows for event_ids from an earlier scoreboard run). teams and status filter before billing, so a narrow query is cheap. include_odds is off by default here, unlike the Actor; turn it on for the pregame line. Dates are UTC unless you set timezone, which only affects the dateLocal field. Billed to your own Apify account at $0.002 per game/match/session row, $0.001 per standings or team row and $0.004 per summary row; max_items is the hard spend cap (500 games = $1.00; 500 summary rows = $2.00), and that ceiling is also sent to Apify as the run's maximum total charge. Filtered-out games, off-season windows and error rows are free. Unofficial. Not affiliated with, endorsed by or sponsored by ESPN, The Walt Disney Company or any league. Data comes from the unauthenticated JSON feeds that espn.com itself uses; they are undocumented, Disney's Terms of Use for espn.com restrict automated access, and ESPN may change or block access without notice — if that happens the run fails and charges nothing, and we stop within 48 h of any notice from ESPN or Disney. Scores, schedules and standings are facts; ESPN's articles, video and images are ESPN's copyrighted content and are not included. Odds are one sportsbook's pregame line shown on ESPN, for information only — not for wagering. Team and league names and logos are trademarks of their owners.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | scoreboard | |
| teams | No | ||
| season | No | ||
| status | No | all | |
| date_to | No | ||
| leagues | Yes | ||
| timezone | No | UTC | |
| date_from | No | ||
| event_ids | No | ||
| max_items | Yes | ||
| season_type | No | ||
| include_odds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels: it discloses unofficial status, ESPN terms-of-use restrictions, possible feed changes/blocking, failure means no charge, billing row rates, max_items hard spend cap, UTC timezone behavior, odds limitations, and trademark/copyright caveats. This is far beyond what structured annotations would normally provide.
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 dense and front-loaded with the main purpose before billing and legal details, and every clause adds operational value. It is however a single long paragraph; bullet points or short labeled sections would make it easier for an agent to parse, so it is not maximally structured.
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 multi-mode tool with 12 parameters, no annotations, and 0% schema coverage, the description covers modes, filters, billing, spending limits, timezone behavior, data source risks, and legal constraints. An output schema exists, so return-value documentation is not the description's job. Nothing essential an agent needs to select and invoke this tool correctly 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?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains each mode value, teams/status filtering before billing, include_odds default, date_from/date_to scope, timezone affecting only dateLocal, max_items as a hard cap, and event_ids for summary mode. However, some parameters such as season_type and exact date string formats are left undescribed, preventing a 5.
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 states specific outputs (scores, schedules, standings, team directories, game summaries) and enumerates 33 leagues with concrete examples, making the tool's scope unmistakable. It also distinguishes itself from the sibling tennis_scores by covering multiple sports and explicitly noting a change in include_odds default versus the Actor.
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?
It provides clear mode-based usage: scoreboard for date-range games, schedule for a team's season, summary for event_ids from an earlier scoreboard run, and filtering by teams/status before billing. It does not explicitly state when to prefer the sibling tennis_scores, but the league list makes the boundary reasonably inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tennis_scoresA
ATP and WTA tennis: every match on the same ESPN feed — tour events and all four Grand Slams including qualifying — with per-set scores, round, seeds, country, court and the one-line result. Defaults to both tours for today; player is a name substring ('Alcaraz') applied before billing. Dates are UTC unless you set timezone, which only affects the dateLocal field. Same Actor family as sports_scores with tennis defaults; standings and schedule modes return a free notice for tennis. Billed to your own Apify account at $0.002 per delivered match row; max_items is the hard spend cap (100 matches = $0.20), and that ceiling is also sent to Apify as the run's maximum total charge. Filtered-out matches, empty days and error rows are free. Unofficial. Not affiliated with, endorsed by or sponsored by ESPN, The Walt Disney Company or any league. Data comes from the unauthenticated JSON feeds that espn.com itself uses; they are undocumented, Disney's Terms of Use for espn.com restrict automated access, and ESPN may change or block access without notice — if that happens the run fails and charges nothing, and we stop within 48 h of any notice from ESPN or Disney. Scores, schedules and standings are facts; ESPN's articles, video and images are ESPN's copyrighted content and are not included. Odds are one sportsbook's pregame line shown on ESPN, for information only — not for wagering. Team and league names and logos are trademarks of their owners.
| Name | Required | Description | Default |
|---|---|---|---|
| tours | No | ||
| player | No | ||
| status | No | all | |
| date_to | No | ||
| timezone | No | UTC | |
| date_from | No | ||
| max_items | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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, and it does so extensively. It covers data source reality, billing and max_items as a hard spend cap, free rows, failure behavior if ESPN blocks access, date/time UTC handling, and legal/copyright restrictions. This is far beyond typical descriptions.
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 long, but the length is largely justified by billing, legal, and data-source caveats that are essential for correct use. Core functionality is front-loaded. It loses one point because the dense single-block structure and legal boilerplate could be organized more readably, but no sentence feels wasted.
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?
The description covers what data is returned, defaults, filtering semantics, billing implications, failure modes, timezone behavior, and legal constraints. An output schema exists, so return values do not need enumeration. For a tool with billing and legal sensitivity, this is exceptionally complete.
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 0%, so the description must compensate, and it does. It explains that player is a name substring, that dates are UTC unless a timezone is set which only affects dateLocal, that max_items is a billing cap, and that tours default to both. These details add significant meaning beyond the raw 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 identifies the tool as an ATP and WTA tennis match data retriever covering tour events and Grand Slams, with explicit detail about the fields returned such as per-set scores, round, seeds, and court. It distinguishes itself from the sibling sports_scores by positioning itself as the tennis-default version of the same Actor family.
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 gives clear context for when to use the tool: for tennis scores from ESPN feeds, with both tours defaulting to today. It also warns that standings and schedule modes return a free notice for tennis, implying those are not supported. It stops short of explicitly stating 'use sports_scores for non-tennis sports,' but the 'same Actor family' reference provides enough implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_thumbnailsA
Resolve YouTube video URLs or bare 11-character video IDs to their thumbnail image URLs, with per-size availability, byte size and etag from a HEAD probe — never guessed. sizes takes 'best', 'all', 'oar' or explicit names (maxresdefault, sddefault, hqdefault, mqdefault, default). save_images stores the picked sizes in the run's key-value store on your own account; turn it off for URLs and metadata only, at the same price. Billed to your own Apify account at $0.005 per delivered video; max_videos is the hard spend cap (100 videos = $0.50), and that ceiling is also sent to Apify as the run's maximum total charge. not_found, invalid_input, playlist_not_supported, duplicate, removed and budget_exhausted rows are free. Nominative reference to YouTube only; not affiliated with or endorsed by YouTube or Google.
| Name | Required | Description | Default |
|---|---|---|---|
| sizes | No | ||
| videos | Yes | ||
| max_videos | Yes | ||
| save_images | No | ||
| image_format | No | jpg | |
| include_metadata | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it excels: it discloses that URLs are derived from a HEAD probe ('never guessed'), that save_images writes to the run's key-value store on the user's account, exact billing per video, the max_videos hard spend cap sent to Apify, and free row types. This is unusually transparent about side effects, costs, and edge cases.
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 dense but not bloated; every sentence earns its place. The core operation is front-loaded, followed by parameter guidance, pricing/spend cap, free-row behavior, and a legal disclaimer. It is long only because it packs genuinely useful operational and financial details with no filler.
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 6-paramter tool with no annotations, the description is remarkably complete: it covers input format, output fields, storage side effect, billing, spend cap, free rows, unsupported playlists, and legal status. The only real gap is the lack of explicit guidance on image_format and include_metadata, though the output schema and self-explanatory names partly fill that gap.
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 0%, so the description must compensate. It explains the main parameters well: videos (URLs or IDs), sizes (with allowed values), save_images (storage behavior), and max_videos (cost cap). However, image_format and include_metadata are not described, leaving two parameters to rely on schema enum/name inference. Still, the description adds substantial meaning for the most behaviorally significant parameters.
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 starts with a specific verb and resource: 'Resolve YouTube video URLs or bare 11-character video IDs to their thumbnail image URLs.' It clearly distinguishes this tool from the unrelated siblings (extract_pdf, sports_scores, tennis_scores, list_supported_utilities) and specifies the exact output artifacts. The scope and function are immediately identifiable.
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 gives clear usage context: when you need thumbnail URLs/metadata, how to choose sizes, and when to toggle save_images off for URL/metadata-only results. It does not explicitly name an alternative tool or state 'when not to use this tool,' but the context is strong enough for an agent to select it appropriately among the listed siblings.
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.
5 tool updates
v0.1.0- First observed
extract_pdf - First observed
list_supported_utilities - First observed
sports_scores - First observed
tennis_scores - First observed
youtube_thumbnails
TDQS
Scored across 5 tools
Most tools are distinct, but sports_scores and tennis_scores both consume the same ESPN feed and overlap on tennis coverage, creating real selection ambiguity. The descriptions clarify the difference, but an agent could reasonably choose either tool for a tennis query.
Names are all snake_case and readable, but conventions are mixed: extract_pdf and list_supported_utilities are verb_noun, while youtube_thumbnails, sports_scores, and tennis_scores are noun phrases. There is no consistent verb_noun pattern across the set.
Five tools is a reasonable size for a utility aggregator, and most tools cover substantial functionality. The sports/tennis duplication makes one tool feel slightly redundant, but the count is not bloated or thin.
Relative to the advertised utilities, the tool surface is well covered: PDF extraction has multiple output modes and OCR, YouTube thumbnails cover sizes and storage, and sports data includes scoreboards, schedules, standings, teams, and summaries. list_supported_utilities prevents dead ends by exposing league keys, pricing, and reachability.
Maintenance
Related MCP Connectors
Documents to Markdown and PDF, OCR, transcription, TTS, screenshots, domain checks, video frames.
Open-source developer, PDF, image, SEO and security tools over a stateless HTTP MCP server. No key.
PDF from HTML or Markdown, OCR, email validation, image conversion and hosting, QR and barcodes.
Unified 15-tool SEO, SERP, clean Markdown & GEO (LLM citation Share-of-Voice) MCP server.
Related MCP Servers
- FlicenseAqualityBmaintenanceSwiss-army-knife utility MCP server for AI agents. 18 tools for JSON validation/formatting, base64 encode/decode, hash generation, UUID generation, URL parsing, regex testing, markdown↔HTML conversion, text stats, slug generation, datetime conversion, cron parsing, text diffing, CSV↔JSON conversion, and JWT decoding. Zero API Key required185-
- AlicenseBqualityCmaintenanceParse any file or URL into structured text. Extract text from PDF, DOCX, YouTube, web pages, images, and 25+ formats via one API. Tools: parse_url, parse_file, get_youtube_transcript.36 npmMIT
- AlicenseAqualityAmaintenanceFull-stack PDF intelligence MCP server for extracting, manipulating, annotating, converting, validating, and RAG-searching PDFs through a unified tool surface and React workbench.161MIT
- AlicenseAqualityAmaintenanceConverts documents to clean Markdown for AI agents from a URL or base64 — no API key, built for remote hosting. Supports PDF (tables preserved as Markdown/CSV/JSON), DOCX, PPTX, XLSX, EPUB, HTML and CSV; scanned PDFs and images go through offline OCR. Includes full-text search, page-range reading, metadata inspection, PDF split/merge and image export, with SSRF-protected fetching, 30 MB limits and10AGPL 3.0